Урок 1. Программирование для Кукарачи. Повторение
- Исполнитель
- Язык программирования
- Интерпретатор
- Команды языка программирования
- Тестирование и отладка программ
Переход на справку: «Кукарача»
— А меня зовут Гена. Я работаю в зоопарке Крокодилом.
— А что мы будем сейчас делать?
— Ничего. Давайте просто побеседуем.
Э. Успенский
Повторим кратко, что мы узнали о Кукараче из предыдущего учебника «Азбуки Роботландии».
Вспомним среду, в которой трудится исполнитель, его СКИ. И, самое главное, вспомним язык программирования, на котором можно создавать для него программы.
Исполнитель
Палку в воду бросит, а телёнок принесёт. Скажет ему: «Лежать» — и Гаврюша лежит. Прикажет ему Матроскин: «Взять! Куси!» — тот сразу бежит, и бодаться начинает.
Э. Успенский
Вопрос. Опишите среду Кукарачи.
…
Ответ. Кукарача работает на клетчатом поле. Исполнитель может переползать из клетки в клетку вверх, вниз, влево, вправо, но не по диагонали. Выход исполнителя за пределы поля запрещён (отказ Не могу!). В каждой клетке может находиться кубик с нанесённым на его грань символом. Кукарача, перемещаясь по полю, может толкать один или несколько кубиков перед собой и «сбрасывать» кубики за пределы поля.
Вопрос. Расскажите про скрытые символы на кубиках и индикатор.
…
Ответ. Некоторые кубики на поле могут иметь «скрытые» символы, обозначаемые знаком вопроса. Считается, что такие кубики расположены в клетке «символом вниз». Толкая такой кубик, Кукарача перемещает его в следующую клетку по ходу движения, переворачивает и видит надпись.
Исполнитель в состоянии прочитать символ на кубике независимо от того, была ли запись символа обычной или скрытой. Кубик с обычной надписью исполнитель толкает, но не переворачивает.
В среде есть специальная ячейка памяти (её не видно на экране), которая называется индикатором. В начальный момент (перед выполнением программы) в эту ячейку помещается значение ПУСТО. Затем значение индикатора меняется каждый раз, когда Кукарача передвигается в соседнюю клетку. Если в клетке был кубик (исполнитель толкнул его) в индикатор записывается символ с кубика, в противном случае в индикатор записывается ПУСТО.
Вопрос. Опишите СКИ Кукарачи.
…
Ответ. Система команд исполнителя (СКИ) включает пять команд:
Команда | Как выполняется |
---|---|
ВПРАВО | Сместиться на одну клетку вправо |
ВЛЕВО | Сместиться на одну клетку влево |
ВВЕРХ | Сместиться на одну клетку вверх |
ВНИЗ | Сместиться на одну клетку вниз |
СТОЯТЬ | Пустая команда — исполнитель не выполняет никаких действий |
Любая команда, кроме команды СТОЯТЬ, может привести к отказу Не могу, если её выполнение уводит Кукарачу за пределы поля.
Язык программирования
И стал он галчонка учить разговаривать.
Целыми днями сидел около него и говорил:
— Кто там? Кто там? Кто там?
Э. Успенский
В языке программирования Кукарачи, как и в обычном языке, слова разделяются пробелами. Конец строки также является разделителем слов.
Программа может быть записана в одну длинную строку:
ЭТО Шаг ВЛЕВО ВНИЗ ВПРАВО КОНЕЦ
Но так не делают. Программу записывают лесенкой, чтобы человеку было легче её читать, и снабжают комментариями:
ЭТО Шаг ВЛЕВО // В первый столбец ВНИЗ // На следующую строку ВПРАВО // Толкнуть кубик КОНЕЦ
Для записи комментариев в программах
Вопрос. Что представляет собой программа в языке Кукарачи?
…
Ответ. Программа представляет собой последовательность процедур, записанных в любом порядке. Процедура описывает действия исполнителя, а имя процедуры может быть использовано наравне с командой из СКИ исполнителя в других процедурах или в командной строке.
Вопрос. Как записывается процедура?
…
Ответ. Процедура записывается следующим образом:
ЭТО и КОНЕЦ — ключевые слова языка программирования.
Ключевые слова — служат для построения языковых конструкций. Они должны записываться точно так, как обозначены в языке.
Имя процедуры должно начинаться с буквы. Оно не должно содержать пробелов и не может совпадать с ключевыми словами языка программирования.
Командой в процедуре может быть:
- команда из СКИ
- вызов процедуры (имя процедуры)
- команда языка программирования
Вопрос. Назовите команды языка программирования Кукарачи.
…
Ответ. Команды языка программирования Кукарачи представлены в следующей таблице.
Команда языка программирования | Как выполняется |
---|---|
Цикл ПОВТОРИ ПОВТОРИ число команда |
Повторение выполнения команды указанное число раз. Пример ПОВТОРИ 5 ВПРАВО |
Цикл ПОКА ПОКА условие команда |
Повторение выполнения команды, пока условие имеет значение истина.
Проверка условия — перед выполнением команды. Пример ПОКА ПУСТО ВПРАВО |
Команда ветвления ЕСЛИ условие ТО команда1 ИНАЧЕ команда2 |
Проверяется условие и выполняется либо
команда1
(при значении условия истина), либо
команда2
(при значении условия ложь).
Часть
ИНАЧЕ команда2
может быть опущена. Пример ЕСЛИ A ТО ВПРАВО ИНАЧЕ ВЛЕВО |
Составная команда { … команды … } |
Объединение нескольких команд в одну.
Используют там, где по правилам языка должна быть
одна команда, а нужно много.
Пример ПОВТОРИ 5 { ВНИЗ ВПРАВО ВВЕРХ } |
Интерпретатор
— Заходите, — пригласил Винтика и Шпунтика Бублик. — Я вас познакомлю с Шурупчиком. Это интересная личность.
Н. Носов
Компьютерная модель Кукарачи — это программа для компьютера. Она состоит из многих частей-процедур, которые выполняют определенную для них часть работы. Одна процедура отвечает за вывод на экран картинок, другая записывает информацию на диск, третья обрабатывает нажатие клавиш на клавиатуре компьютера.
Интерпретатор — это одна из процедур этой программы. Именно интерпретатор выполняет программу, написанную для Кукарачи.
Интерпретатор читает программу с «чужими» для Кукарачи словами: ЭТО, КОНЕЦ, ПОВТОРИ, и переводит её на язык исполнителя — то есть на язык команд из его СКИ.
Вопрос. Объясните, как интерпретатор выполнит процедуру Ух.
. ..
Ответ. Интерпретатор передаст Кукараче 5 команд ВПРАВО.
Вопрос. Как интерпретатор проверяет условия?
…
Ответ. Интерпретатор сравнивает запись условия в программе со значением индикатора в среде Кукарачи и вырабатывает значения истина или ложь по правилам, описанным в следующей таблице:
Запись условия | Результат проверки |
---|---|
символ | Истина, если индикатор содержит этот символ, ложь в противном случае. |
НЕ символ | |
ПУСТО | Истина, если индикатор содержит ПУСТО, ложь в противном случае. |
НЕ ПУСТО | Ложь, если индикатор содержит ПУСТО, истина в противном случае. |
ЦИФРА | Истина, если индикатор содержит одну из цифр (0, 1, 2, 3, 4, 5, 6, 7, 8, 9), ложь в противном случае. |
НЕ ЦИФРА | Ложь, если индикатор содержит одну из цифр (0, 1, 2, 3, 4, 5, 6, 7, 8, 9), истина в противном случае. |
Команды языка программирования
На брюках было: два кармана спереди, два кармана сзади, два кармана по бокам и один карман внизу, на колене.
Н. Носов
Вопрос. Как работает цикл: ПОВТОРИ число команда?
. ..
Ответ. Интерпретатор выполнит команду, записанную после числа, указанное количество раз. Примеры показаны в таблице:
Команда | Как выполнится |
---|---|
ПОВТОРИ 7 ВНИЗ |
Кукарача 7 раз выполнит команду ВНИЗ. |
ПОВТОРИ 4 Шаг |
Процедура Шаг выполнится 4 раза. |
ПОВТОРИ 5 { ВНИЗ ВПРАВО } |
Составная команда выполнится 5 раз (Кукарача 5 раз выполнит последовательность команд ВНИЗ ВПРАВО). |
Вопрос. Как работает команда ветвления:
. ..
Ответ. Интерпретатор проверяет условие и, если условие верное, то выполняет первую команду, иначе (если условие ложное) — вторую. В любом случае работает только одна команда, либо команда1, либо команда2. Примеры показаны в таблице:
Команда | Как выполнится |
---|---|
ЕСЛИ ЦИФРА ТО ВЛЕВО ИНАЧЕ ВПРАВО |
Если индикатор содержит цифру (исполнитель последним ходом толкнул цифру), то Кукарача шагнёт в соседнюю клетку слева, иначе — в соседнюю клетку справа. |
ЕСЛИ НЕ ПУСТО ТО Шаг1 ИНАЧЕ Шаг2 |
Если индикатор содержит символ (исполнитель последним ходом толкнул кубик с символом), выполнится процедура Шаг1, иначе — процедура Шаг2. |
Вопрос. Как работает команда ветвления в сокращённой форме:
…
Ответ. Интерпретатор проверяет условие и, если условие верное, то выполняет команду. Если условие ложное, команда не выполняется. Примеры показаны в таблице:
Команда | Как выполнится |
---|---|
ЕСЛИ ЦИФРА ТО ВЛЕВО |
Если индикатор содержит цифру (исполнитель последним ходом толкнул цифру), то Кукарача шагнёт в соседнюю клетку слева, иначе останется на месте. |
ЕСЛИ НЕ ПУСТО ТО Шаг |
Если индикатор содержит символ (исполнитель последним ходом толкнул кубик с символом), выполнится процедура Шаг, иначе процедура Шаг выполняться не будет. |
Вопрос. Как работает команда цикла ПОКА:
…
Ответ.
- Сначала проверяется условие.
- Если условие ложно, выполнение цикла заканчивается.
- Если условие истинно, выполняется команда, записанная после условия, и всё начинается сначала: проверяется условие, выполняется команда и так далее.
Примеры показаны в таблице:
Команда | Как выполнится |
---|---|
ПОКА ПУСТО ВПРАВО |
Если перед входом в цикл индикатор содержал символ (любой), команда ВПРАВО не выполнится ни разу. Иначе исполнитель будет шагать вправо, пока не толкнёт кубик. |
ПОКА НЕ ЦИФРА Шаг |
Если перед входом в цикл индикатор содержал цифру, процедура Шаг не выполнится ни разу. Иначе будет выполняться процедура Шаг, пока исполнитель не толкнёт кубик с цифрой. |
Тестирование и отладка программ
В это время корзина с силой ударилась о землю и перевернулась.
Н. Носов
Посмотрите, как Вася решил задачу Расставь цифры.
Задача. Расставь цифры
Исполнитель стоит в левом верхнем углу поля. Во второй строке,
начиная с первой клетки, находится плотный ряд кубиков с цифрами.
Число кубиков не более 9.
Цифры в ряду расположены в произвольном порядке и значение каждой из
них больше 2. Поставить кубики в строки с номерами, равными
значениям цифр.
Решение
Описание алгоритма
Задача решается при помощи цикла ПОКА (для обнаружения конца цепочки цифр) и переключателя, который вызывает одну из 7 процедур для обработки цифр: 3, 4, 5, 6, 7, 8, 9.
Программа
ЭТО Цифры_на_место ВНИЗ // В индикатор первую цифру ПОКА НЕ ПУСТО { Установка_цифры Шаг } КОНЕЦ // Установим цифру и вернёмся во 2-ю строку ЭТО Установка_цифры ЕСЛИ 3 ТО Цифра_3 ИНАЧЕ ЕСЛИ 4 ТО Цифра_4 ИНАЧЕ ЕСЛИ 5 ТО Цифра_5 ИНАЧЕ ЕСЛИ 6 ТО Цифра_6 ИНАЧЕ ЕСЛИ 7 ТО Цифра_7 ИНАЧЕ ЕСЛИ 8 ТО Цифра_8 ИНАЧЕ ЕСЛИ 9 ТО Цифра_9 КОНЕЦ // Толкнём следующую цифру ЭТО Шаг ВВЕРХ ВПРАВО ВНИЗ КОНЕЦ ЭТО Цифра_3 СТОЯТЬ КОНЕЦ ЭТО Цифра_4 ВНИЗ ВВЕРХ КОНЕЦ ЭТО Цифра_5 ПОВТОРИ 2 ВНИЗ ПОВТОРИ 2 ВВЕРХ КОНЕЦ ЭТО Цифра_6 ПОВТОРИ 3 ВНИЗ ПОВТОРИ 3 ВВЕРХ КОНЕЦ ЭТО Цифра_7 ПОВТОРИ 4 ВНИЗ ПОВТОРИ 4 ВВЕРХ КОНЕЦ ЭТО Цифра_8 ПОВТОРИ 5 ВНИЗ ПОВТОРИ 5 ВВЕРХ КОНЕЦ ЭТО Цифра_9 ПОВТОРИ 6 ВНИЗ ПОВТОРИ 6 ВВЕРХ КОНЕЦ
Тестирование
После того как программа написана, её начинают тестировать, то есть пытаются найти в программе ошибки.
Тестируют программы, запуская их с разными допустимыми состояними среды. Обычно таких состояний очень много, трудно поверить, но для задачи Расставь цифры таких состояний насчитывается 47 079 207, то есть более 47 миллионов!
Проверить такое число вариантов невозможно, поэтому проверяют несколько типичных и все особые начальные состояния среды.
Наборы начальных состояний назвают тестами.
Вот необходимый набор тестов для задачи Расставь цифры:
Исходная запись | Комментарий |
---|---|
3 | Особый случай: одна цифра. |
3456789 | Промежуточный вариант между крайними. Присутствуют все возможные цифры (проверим правильность установки каждой цифры). |
755786733 | Особый случай: максимальное число цифр. |
Что делать, если обнаружен тест, на котором программа работает неверно? Нужно найти в тексте программного кода ошибку и исправить её. Для поиска места ошибки можно запускать выполнение программы по шагам.
Процесс тестирования и исправления ошибок программисты называют отладкой программы.
Тестирование устанавливает факт наличия ошибки, а для исправления нужно найти место ошибки в программном коде, исправить, и убедиться, что непрошедший тест теперь проходит правильно.
Скопируйте прямо с этой страницы программу Цифры_на_место в приложение Кукарача, и проверьте правильность выполнения всех 3-х тестов.
Игрушечный ЯП — Cockroach / Хабр
Всем привет.
В школьном и более продвинутом курсе информатики есть учебный язык — Кукарача. Довольно удачный, для обучения детей программированию. Простой, понятный, визуальные результаты с первой строчки.
Авторы курса сделали только exe-шник под Windows. Когда младший сын начал требовать «Папа научи программировать» принял волевое решение — сделаю свою имплементацию. И сделал.
Че это вообще?
Есть прямоугольное поле. Жучок и буквочки. Нужно писать программы, что бы жучок правильным образом подвигал буковки.
Поддерживаются простые команды — ВВЕРХ
, ВНИЗ
, ВПРАВО
, ВЛЕВО
и их группировка с помощью {}
.
После каждого действия известен результат — какую букву толкнул жучок.
Есть циклы — ПОВТОРИ x
, ПОКА y
и условие ЕСЛИ z ТО ... ИНАЧЕ ...
И даже процедуры — ЭТО proc_name ... КОНЕЦ
Поэтому, в процессе обучения ребенок учится довольно сложных концепциям включая рекурсию и процедурное программирование.
Поле
Поле работает совсем очевидно — массивчик char’ов и специальный символ для жучка. Процедуры, которые передвигают жучка изменяя состояние. Запоминаем последнюю букву, которую толкнули. Осталось добавить загрузку/выгрузку в строку примерно такого вида:
А_А__ _1_1_ _____ ____~
а также колбек на изменение, что бы отрисовывать и симпатичный компонент готов.
Как сделать интерпретатор?
Оказалось, что сделать интерпретатор не так уж и сложно. Надо понимать что такое синтаксис и грамматика, почитать немного примеров и воспользоваться готовыми либами.
Я взял antlr — т.к мой основной язык java и там этот генератор парсеров на слуху. В итоге получилась такая грамматика
грамматикаgrammar Cockroach; @header { package ru.nizhikov.cockroach.antlr; } prog : exprs EOF ; exprs : expr+ ; expr : statement | repeat | while | if | proc | id | LINE_COMMENT ; statement : UP | DOWN | LEFT | RIGHT | STAY | group ; repeat : REPEAT NUM expr ; while : WHILE condition expr ; group : OPEN_BRACKET exprs CLOSE_BRACKET ; if : IF condition THEN statement (ELSE statement)? ; proc : THIS id exprs END ; condition : NOT? id | NOT? EMPTY | NOT? NUMBER ; id : ID ; LINE_COMMENT : '//' ~[\n\r]* -> skip; UP: 'ВВЕРХ'; DOWN: 'ВНИЗ'; LEFT: 'ВЛЕВО'; RIGHT: 'ВПРАВО'; STAY: 'СТОЯТЬ'; NOT: 'НЕ'; EMPTY: 'ПУСТО'; NUMBER: 'ЦИФРА'; REPEAT: 'ПОВТОРИ'; WHILE: 'ПОКА'; CHAR: 'БУКВА'; OPEN_BRACKET: '{'; CLOSE_BRACKET: '}'; IF: 'ЕСЛИ'; THEN: 'ТО'; ELSE: 'ИНАЧЕ'; THIS: 'ЭТО'; END: 'КОНЕЦ'; ID: LETTER (LETTER | DIGIT)*; LETTER: [a-zA-Zа-яА-Я]; NUM: DIGIT+; DIGIT: [0-9]; SPACE: [ \r\n\t]+ -> skip;
Грамматика задает правила для парсера что бы из текста сформировать синтаксическое дерево. Пример на картинке.
простите мне было лень делать дерево для сабжевого ЯПИнтерпретатору всего-лишь надо обойти это дерево верным образом и выполнить необходимые действия. Действия следуют из их смысла:
Определение процедуры — запоминаем имя процедуры в специальной мапке. Ключ — название, значение — поддерево команд.
Вызов процедуры (токен ID) — ищем определение процедуры и вызываем соответствующее поддерево команд.
Цикл
ПОВТОРИ x
— выполняем поддеревоx
раз.Цикл
ПОКА у
— проверяем условиеy
и выполняем поддерево пока оно выполняется.ЕСЛИ z ТО ... ИНАЧЕ ...
— проверяем условиеz
и выполняем то или иное поддерево.Обычные команды — изменяем состояние поля.
Интерфейс
Последний раз я делал UI еще во времена когда jquery и extjs были модными :), поэтому погуглив как сейчас делается интерфейс слегка ох^Wудивился обилию возможностей. В итоге собрал из туториала который первым заработал рабочее one page application и запилил с помощью того что знаю — bootstrap и jquery.
Очень хотелось сделать подсветку синтаксиса, а нагугленный компонент поддерживал другой генератор парсеров. Нет проблем — записать грамматику немного другим синтаксисом проще простого.
Несмотря на то, что в CodeMirror довольно подробная документация разобраться в API оказалось не так просто. Возможно, я отвык от уровня документирования js компонент. Но, в итоге, подсветка синтаксиса и текущей команды во время дебага и запуска работает.
Сохранение файликов сделал через localStorage — удобненько.
Сложности
Первая реализация интерпретатора написана на java и работает через консоль. Пошаговое выполнение (отладку) легко сделать через ожидание ввода с консоли.
А вот в javascript простой возможности останавить выполнение в рандомном месте нет. Поэтому, пришлось заморочиться и сделать, что бы интерпретация приложения работала на promise’ах. Команда кукарачи выполняется при выполнении Promise.resolve
.
Публикация
Вкратце — github прекрасен)
Оказалось, что в github есть бесплатный, автоматизированный, удобный функционал, что бы опубликовать one page application. Называется github pages. Обалденно удобно. Собираешь свое приложение, указываешь папочку, жмешь кнопку и вуаля — приложение готово и работает.
Ну вот и все pet project готов и вроде как работает. Ребенок два раза позанимался программированием и получил массу удовольствия. Я тоже доволен и пописал интересный код.
Иходники — https://github.com/nizhikov/cockroach
А еще у меня есть канал с выступлениями и ссылками на интересные пейперы из мира разработки СУБД.
CockroachDB: Финансовые услуги — Cockroach Labs
Финансовая книга
Обработка и хранение десятков миллионов транзакций в день с помощью отказоустойчивой базы данных SQL, которая гарантирует согласованность и правильность.
Управление активами и рисками
Управляйте и гарантируйте правильность для широкого спектра активов, чтобы вы могли выявлять и устранять любые риски, связанные с портфелем.
Обработка платежей
Быстро и легко обрабатывайте платежи и гарантируйте, что конфиденциальные финансовые данные ваших клиентов всегда доступны и защищены.
Управление идентификацией
Аутентифицируйте доступ клиентов к их личным данным и легко управляйте их транзакциями независимо от того, где они находятся.
Убедитесь, что ваши клиенты имеют постоянный доступ к своим приложениям, службам и личным данным из любой точки мира.
Гарантия согласованных транзакций
Выполнение критически важных рабочих нагрузок в распределенной среде с сериализуемой изоляцией. Убедитесь, что ваши данные всегда верны, пользуясь преимуществами отказоустойчивой масштабируемой системы.
Ознакомьтесь с банковскими правилами
Соблюдайте меры по обеспечению соответствия данных и защищайте данные клиентов. Используйте секционирование на уровне строк, чтобы хранить данные рядом с пользователями для соблюдения нормативных требований и операций чтения и записи с малой задержкой.
Эластичная масштабируемость со встроенной высокой доступностью
Обеспечьте высокую доступность благодаря облачной базе данных, которая всегда включена. Воспользуйтесь преимуществами масштаба и отказоустойчивости облака и разверните его в многооблачной или гибридной облачной среде.
«У нас очень сложная среда транзакций, в которой мы постоянно ищем простоту, масштабируемость и надежность. CockroachDB удовлетворяет всем трем этим требованиям».
Габриэль Мело
Технический директор, NuBank
«Нам нужна была не только база данных, которая могла бы работать на нас при запуске, но и решение, которое могло бы работать на нас в будущем. Нам нужна была база данных, устойчивая к сбоям. Современная облачная база данных, которая может масштабироваться».
Джош Стюарт
Технический директор, Birchal
«Возможность развернуть CockroachDB в нескольких регионах и просто позволить ей выполнять свою работу, значительно упростила нашу архитектуру. Нам не нужно беспокоиться о выполнении сегментирования или репликации данных на уровне приложения; мы можем уверенно развернуть нашу платформу в новых регионах и быть уверенными, что наши данные будут синхронизированы».
Хулио Монрой Квирарте
Архитектор программного обеспечения
«При создании Pismo мы хотели оставить позади все артефакты отрасли, которая до сих пор в значительной степени использует инфраструктуру, созданную десятилетиями. Большинство банков работают с устаревшими решениями. Не нам. С CockroachDB мы можем создать облачное решение, которое будет масштабироваться по мере нашего успеха».
Даниэла Бинатти
Соучредитель и технический директор
Блог
Создание платежной системы, масштабируемой до бесконечности
См. примеры
Веб-семинар
Переход на облачные технологии с Form3
Смотреть сейчас
Блог
Могу ли я быстро масштабироваться? Надежно? Глобально?
Узнать больше
CockroachDB: Gaming — Cockroach Labs
Система регистрации пользовательских событий
Записывайте каждое взаимодействие с пользователем и моментальные снимки и легко управляйте интенсивными операциями чтения и записи.
Модуль настройки
Хранить метаданные о пользователях, чтобы делать прогнозы о будущем поведении и предлагать предлагаемый контент.
Game Persistence Record
Гарантия согласованных транзакций и возврат пользователей в правильное состояние игры.
Хранилище метаданных платформы
Собирайте большие объемы пользовательских данных и будьте уверены, что они хранятся в безопасной среде.
Игровая индустрия построена на обеспечении высокого качества обслуживания клиентов, однако пользовательский контент может создавать непредсказуемые рабочие нагрузки. Игровым приложениям и сервисам нужна современная, отказоустойчивая инфраструктура, чтобы выдерживать пиковые нагрузки и при этом гарантировать стабильные транзакции
Горизонтальное масштабирование для адаптации к непредсказуемым рабочим нагрузкам
Продолжайте добавлять узлы в кластер, чтобы увеличить его мощность для поддержки значительного увеличения игрового процесса без снижения производительности. Не беспокойтесь о популярности флэш-памяти, поскольку вы можете начать с малого, чтобы сэкономить на расходах, и просто масштабироваться по мере необходимости.
Обработка транзакций в приложении в режиме реального времени
Использование базы данных, способной обрабатывать трафик, необходимый для поддержки миллионов одновременных игроков в режиме реального времени. Большие рабочие нагрузки чтения и записи не подходят для согласованной распределенной базы данных SQL, которая может масштабироваться в нескольких регионах.
Охват глобально распределенной аудитории
Модернизируйте свою инфраструктуру и создайте распределенную основу для охвата пользователей по всему миру. Развертывайте в мультиоблачной среде и разделяйте данные по местоположению, чтобы масштабировать их до любого региона и поддерживать соответствие требованиям.
Персонализируйте взаимодействие с пользователем и сохраняйте игровое состояние
Создавайте расширенные функции, используя метаданные о пользователях для создания пользовательских интерфейсов, при этом предоставляя доступ к вашему приложению с малой задержкой. Благодаря гарантированно последовательным транзакциям пользователи всегда возвращаются в правильное состояние игры.
Наличие надежной серверной службы, такой как CockroachDB, является отличным способом создания прототипов новых систем и позволяет разработчикам пробовать новые вещи, не беспокоясь о том, как они могут масштабироваться в случае необходимости.