Представлена новая открытая СУБД InfiniSQLАнонсирован первый альфа-выпуск новой открытой реляционной СУБД InfiniSQL, нацеленной на достижение показателей производительности и масштабируемости NoSQL-систем при предоставлении классического SQL-интерфейса для доступа к данным. InfiniSQL развивается одним из бывших инженеров компании Visa как полностью свободный проект, без разделения на community и enterprise версии. Код InfiniSQL распространяется под лицензией AGPLv3, а библиотеки для создания хранимых процедур под лицензией LGPLv3. СУБД состоит из двух частей - демона на языке C++, использующего модель акторов для распараллеливания операций без блокировок, и менеджера ресурсов, написанного на языке Python. Клиентский интерфейс совместим с PostgreSQL, т.е. вместе с InfiniSQL могут использоваться приложения, собранные с использованием клиентских библиотек PostgreSQL и таких модулей, как DBD::Pg. На текущем этапе развития СУБД ещё не готова для промышленного использования, но уже может быть задействована для экспериментов и начального внедрения. Построенный с использованием InfiniSQL тестовый кластер, состоящий из 12 узлов на базе типовых серверов (четырёхядерные CPU Intel Xeon E31230 3.30GHz, 8GB ОЗУ, 1TB SATA НЖМД, 2 x Intel 82579LM Gigabit Ethernet), смог обеспечить производительность на уровне 528 тысяч (в пике 542 тыс.) сложных транзакций в секунду при обработке более 100 тысяч одновременных соединений. Тестирование было проведено с использованием утилиты pgbench. Все проведённые тесты документированы и легко воспроизводимы. InfiniSQL поддерживает подмножество стандарта SQL-92, в том числе Ad hoc-запросы и хранимые процедуры. СУБД обеспечивает три первых требования ACID к выполнению транзакций: атомарность, согласованность, изолированность. Отсутствие поддержки четвёртого требования, надежности, является ценой высокой производительности СУБД. Дело в том, что InfiniSQL хранит данные только в оперативной памяти, пока не предоставляя средств для обеспечения надёжного сохранения информации в случае сбоя всего кластера. В случае проблем, охватывающих все узлы остаётся полагаться на средства резервного копирования, в случае сбоя отдельного узла применяется избыточное дублирование данных на разных узлах. В будущем данная проблема будет устранена, и СУБД InfiniSQL будет доведена до полного соответствия требованиям ACID. Хранимые в таблицах данные и индексы распределены по всем узлам кластера, при необходимости увеличения размера хранилища достаточно добавить новые узлы (горизонтальная масштабируемость). Клиент может подключиться к любому узлу и получить доступ к данным кластера в целом, который выглядит как одна неразрывная БД. Архитектура InfiniSQL предусматривает наличие двух процессов: менеджера и демона хранения. Демон хранения занимается приёмом соединений от клиентов, выполнением запросов и хранением данных. Кроме доступа к локально хранимым данным, в процессе выполнения запроса демон также обращается и к данным других демонов. Менеджер отвечает за запуск демонов хранения, их настройку, мониторинг работоспособности и управление топологией кластера. При необходимости менеджер запускает новые экземпляры демонов хранения и обеспечивает распределение данных в кластере, в том числе выполняет перестроение кластера в случае изменения топологии (например, выводе или добавлении узла) и следит за выполнением требований отказоустойчивости за счёт дублирования данных на разных узлах. В настоящее время возможности менеджера сильно ограничены и сводятся к запуску демонов, остальные возможности планируется реализовать в будущем.
Распечатано с HostDB.ru.
|