Компания Apple представила первый стабильный релиз новой ветки открытой распределённой СУБД FoundationDB 6.0, позволяющей создавать хранилища для обработки очень больших наборов структурированных данных, распределённых на узлах кластера из типовых серверов. СУБД FoundationDB манипулирует данными в формате ключ/значение и рассчитана на создание распределённых хранилищ, в которых для всех операций с данными возможно использование полноценных транзакций, удовлетворяющих требованиям ACID (атомарность, согласованность, изолированность, надежность). Код СУБД написан на языке С++ и поставляется под лицензией Apache 2.0. Сборки подготовлены для Linux, macOS и Windows.

СУБД готова для промышленного внедрения, что подтверждается активным применением в инфраструктуре Apple и ряда других крупных компаний. Распределённое хранилище основано на архитектуре “shared-nothing”, в которой каждый узел является независимым и самодостаточным звеном, а вся система лишена единой точки отказа. Хранилище хорошо подходит к нагрузкам с большим числом операций чтение/запись, но также обеспечивает высокую производительность и в условиях, в которых преобладают операции записи. Взаимодействие с СУБД производится при помощи API и биндингов для различных языков программирования (C/C++, Python, Perl, Ruby, Java, Go, Node.js, PHP).

FoundationDB 6.0.15 помечен как первый стабильный релиз ветки 6.0 – первой значительной ветки, подготовленной после открытия исходных текстов СУБД в апреле этого года. Прошлые выпуски 6.0.x имели характер предварительных тестовых версий. Ключевые новшества FoundationDB 6.0:

  • Поддержка территориального разнесения кластера с хранилищем, с размещением групп узлов в разных регионах. Один из регионов получает полномочия на запись, а остальные реплицируют актуальное состояние БД, работая в режиме только для чтения. В случае сбоя в первичном регионе право на запись может быть автоматически передано другому региону без потери данных. Обеспечена поддержка как синхронной репликации логов транзакций, так и асинхронной репликации данных на серверы кластера, размещённые в удалённом датацентре;
  • TLS-плагин теперь статически связывается с исполняемыми файлами клиента и сервера (не поставляется в виде отдельной библиотеки). Добавлена поддержка верификации пиров с использованием различных значений, указанных в поле сертификата subjectAltName, с использованием расширения X.509 SAN (Subject Alternative Name). Добавлена возможность автоматической перезагрузки сертификатов после их обновления;
  • В интерфейс командной строки fdbcli добавлена команда fileconfigure для настройки БД на основе документа в формате JSON;
  • Проведены различные оптимизации, касающиеся эффективности ведения логов транзакций, балансировки нагрузки, фиксации транзакций, кэширования ключей, использования ресурсов CPU. Существенно ускорены операции восстановления после сбоя.

Основные возможности FoundationDB:

  • Предоставляется эффективный низкоуровневый интерфейс, позволяющий любым другим системам использовать FoundationDB для распределённого хранения информации в согласованном состоянии. В частности, на базе FoundationDB могут быть подготовлены фронтэнды для более крупных универсальных СУБД, для хранения различных моделей данных, для применения различных языков формирования запросов (например, SQL и документо-ориентированные системы), для хранения метаданных в распределённых ФС, для организаци распределённых очередей задач и т.п.
  • Мультимодельное хранилище, позволяющее сохранять любые типы данных в одной БД. Все данные надёжно сохраняются, распределяются и реплицируются в низкоуровневом представлении ключ/значение. Поддерживается упорядоченное сохранение ключей, что позволяет применять эффективные выборки по диапазонам значений;
  • Поддерживается два движка хранения: ssd – хранение данных на диске с использованием структуры B-tree (хранилище оптимизировано для SSD-накопителей), и memory – для хранения данных в памяти со сбросом лога транзакций на диск;
  • Устойчивость к сбоям и простота горизонтального масштабирования.
    СУБД FoundationDB проста в установке, расширении хранилища и управлении. СУБД имеет распределённую архитектуру, позволяющую легко масштабироваться и на лету обрабатывать сбои, работая при этом как единая цельная транзакционная БД, соответствующая требованиям ACID;

  • В рамках транзакции может быть прочитано и записано произвольное число ключей, хранимых на любых узлах кластера, но время жизни транзакции не может превышать 5 секунд, а размер не должен превышать 10 Мб записываемых данных. Размер ключа не должен превышать 10 Кб, а размер данных 100 Кб.
  • Обеспечение очень высокой производительности на типовом оборудовании. СУБД FoundationDB способна справляться с очень жесткими нагрузками, требуя при этом минимальных затрат на оборудование;
  • Готовность к промышленному применению. FoundationDB уже многие годы применяется в крупных промышленных инфраструктурах. Для тестирования внедрена специальная система, основанная на движке детерминистической симуляции.
  • На системе разработчика FoundationDB может запускаться в одноузловом режиме (single-server), который затем может быть расширен до кластера (для добавления нового узла достаточно скопировать на новый узел файл fdb.cluster с уже работающего узла).