Последняя версия RethinkDB была выпущена с существенной реструктуризацией уровня кластеризации и более 200 усовершенствований.
RethinkDB — это база данных NoSQL JSON с открытым исходным кодом, предназначенная для веб-приложений. Его основным отличием является то, что вы можете указать ему, чтобы он постоянно отправлял обновленные результаты запросов в приложения в режиме реального времени, вместо того, чтобы ваше приложение опрашивало изменения.
Он создан стартапом, основанным в 2009 году при поддержке YCombinator, и был открыт в 2012 году. В то время команда писала в блоге:
RethinkDB создан для хранения документов JSON и масштабирования на несколько машин с минимальными усилиями. Он имеет приятный язык запросов [ReQL], который поддерживает действительно полезные запросы, такие как объединение таблиц и группировка по, и его легко настроить и изучить.
Основные изменения в новой версии Rethink DB 2.1, также известной как Forbidden Planet, начинаются с поддержки автоматического переключения при отказе. В случае сбоя сервера RethinkDB теперь автоматически выберет новые серверы и продолжит работу без необходимости для администраторов перезапускать его.
В блоге RethinkDB об этой функции разработчики говорят, что при выходе из строя сервера с первичной репликой:
«Серверы с оставшимися репликами выбирают действующий первичный сервер на его место до тех пор, пока заблудший сервер не будет восстановлен или окончательно исключен из кластера. Пока большинство реплик остаются в рабочем состоянии, чтобы выбрать действующую основную, отказ оборудования или частичные сбои в сети больше не будут снижать доступность базы данных ».
В этом видео, представленном Энни Ригт, Дэниел Мьюз, технический директор RethinkDB, демонстрирует эту новую функцию:
Поведение кластера также более снисходительно в случаях отказа отдельных серверов. Например, вам больше не нужно навсегда удалять отказавший сервер из кластера для выполнения административных задач, таких как создание таблицы. Еще одно улучшение — это поддержка добавления и удаления узлов из живого кластера при повторном шардинге без необходимости завершения работы.
Поддержка аварийного переключения основана на алгоритме консенсуса Raft, разработанном исследователями Стэнфорда. К сожалению для разработчиков, существующие библиотеки Raft плохо интегрировались с сетевыми уровнями и уровнями сопрограмм в RethinkDB, поэтому они реализовали свою собственную версию Raft, которая полностью интегрировалась с подсистемами RethinkDB нижнего уровня.
В новой версии добавлена поддержка асинхронных запросов. Они поддерживаются через EventMachine в Ruby и Twisted, Tornado и фреймворки asyncio в Python.
RethinkDB 2.1 также имеет поддержку SSL в официальных драйверах, что упрощает доступ к кластерам RethinkDB через общедоступный Интернет. В язык запросов ReQL также были добавлены новые математические команды: floor, ceil и round.