Компания Apple представила (https://www.foundationdb.org/blog/foundationdb-6-0-15-released/) первый стабильный релиз новой ветки открытой распределённой СУБД FoundationDB 6.0 (https://www.foundationdb.org/), позволяющей создавать хранилища для обработки очень больших наборов структурированных данных, распределённых на узлах кластера из типовых серверов. СУБД FoundationDB манипулирует данными в формате ключ/значение и рассчитана на создание распределённых хранилищ, в которых для всех операций с данными возможно использование полноценных транзакций, удовлетворяющих требованиям ACID (атомарность, согласованность, изолированность, надежность). Код СУБД написан на языке С++ и поставляется (https://github.com/apple/foundationdb/) под лицензией Apache 2.0. Сборки подготовлены (https://www.foundationdb.org/download/) для Linux, macOS и Windows.
СУБД готова для промышленного внедрения, что подтверждается активным применением в инфраструктуре Apple и ряда других крупных компаний. Распределённое хранилище основано на архитектуре "shared-nothing (https://en.wikipedia.org/wiki/Shared-nothing_architecture)", в которой каждый узел является независимым и самодостаточным звеном, а вся система лишена единой точки отказа. Хранилище хорошо подходит к нагрузкам с большим числом операций чтение/запись, но также обеспечивает высокую производительность и в условиях, в которых преобладают операции записи. Взаимодействие с СУБД производится при помощи API и биндингов для различных языков программирования (C/C++, Python, Perl, Ruby, Java, Go, Node.js, PHP).
FoundationDB 6.0 стал первым значительным выпуском, подготовленным после открытия исходных текстов СУБД в апреле этого года. Ключевые новшества (https://apple.github.io/foundationdb/release-notes.html) выпуска 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;
- В рамках транзакции может быть прочитано и записано произвольное число ключей, хранимых на любых узлах кластера, но время жизни транзакции не может превышать (https://apple.github.io/foundationdb/known-limitations.html) 5 секунд, а размер не должен превышать 10 Мб записываемых данных. Размер ключа не должен превышать 10 Кб, а размер данных 100 Кб.
- Обеспечение очень высокой производительности на типовом оборудовании. СУБД FoundationDB способна справляться с очень жесткими нагрузками, требуя при этом минимальных затрат на оборудование;
- Готовность к промышленному применению. FoundationDB уже многие годы применяется в крупных промышленных инфраструктурах. Для тестирования внедрена специальная система, основанная на движке детерминистической симуляции.
- На системе разработчика FoundationDB может запускаться (https://apple.github.io/foundationdb/getting-started-linux.html) в одноузловом режиме (single-server), который затем может быть расширен (https://apple.github.io/foundationdb/building-cluster.html) до кластера (для добавления нового узла достаточно скопировать на новый узел файл fdb.cluster с уже работающего узла).
URL: https://www.foundationdb.org/blog/foundationdb-6-0-15-released/
Новость: https://www.opennet.dev/opennews/art.shtml?num=49635