MemSQL — претендент за звание одной из самых быстрых СУБД, удовлетворяющих требованиям ACID

Материал из Викиновостей, свободного источника новостей

25 июня 2012 года

Эрик Френкель (Eric Frenkiel) и Никита Шамгунов (Nikita Shamgunov), бывшие сотрудники Facebook, основали стартап, разработавший новую СУБД MemSQL, совместимую с MySQL и удовлетворяющую требованиям ACID к выполнению транзакций (атомарность, согласованность, изолированность, долговечность), но обладающую производительностью, свойственной хранимым в памяти NoSQL БД. MemSQL является проприетарной разработкой, но распространяется бесплатно c ограничением на размер базы в 10 Гб для различных Linux-дистрибутивов.

Представленные результаты тестирования производительности показывают, что в конфигурации, при которой MySQL позволяет обеспечить отдачу 3500 запросов в секунду, MemSQL способен выполнить до 80 тысяч запросов в секунду. Для тестирования использовался собственный инструментарий для симуляции нагрузки на СУБД.

Высокая производительность в MemSQL достигается благодаря реализации нескольких интересных особенностей. Например, MemSQL не осуществляет разбор SQL на лету, вместо этого из SQL-конструкций генерируется С++ код, работающий с оптимизированными для хранения в памяти структурами данных, доступ к которым осуществляется без блокировок. Второй особенностью является то, что данные всегда полностью держатся в ОЗУ и отдаются из памяти. Для обеспечения целостности и выполнения требований ACID, хранимые в памяти данные синхронизируются на диск или SSD-накопитель с использованием техники обратной записи с последующим подтверждением выполнения операции (используется комбинация упреждающей записи в форме лога и фиксация снапшотов).

Из свободных альтернатив MemSQL можно отметить СУБД VoltDB, которая развивается уже несколько лет и обладает похожими характеристиками. В тестах OLTP на одном сервере VoltDB опережает традиционные СУБД в 45 раз, в то время как создатели MemSQL заявляют об ускорении только в 30 раз. Кроме того, VoltDB поддерживает кластеризацию с практически линейной масштабируемостью (на кластере из 12 узлов была продемонстрирована производительность в 560 тыс транзакций в секунду). Средства синхронизации создаваемого в ОЗУ хранилища с постоянным носителем обеспечивают открытые БД Redis, Tarantool (Архивная копия от 10 декабря 2014 на Wayback Machine), MemcacheDB (Архивная копия от 11 марта 2020 на Wayback Machine), Membase и MongoDB, которые относятся к категории систем NoSQL.

Дополнение: Domas Mituzas, инженер по системам баз данных из компании Fаcebook, до 2009 года работавший в Sun над MySQL, опубликовал критическую заметку, указывающую на то, что MemSQL оптимизирован для достаточно узкого круга синтетических задач. Например, показано несколько типичных для web-приложений ситуаций, в которых MySQL оказывается быстрее MemSQL из-за слабой реализации оптимизатора запросов в MemSQL. Также указано, что MemSQL поддерживает только изоляцию на уровне чтения (READ COMMITTED) и просто игнорирует транзакции (BEGIN/COMMIT), что не позволяет считать MemSQL отвечающим требованиям ACID.

Источники[править]

Creative Commons
Creative Commons
Эта статья содержит материалы из статьи «MemSQL — претендент за звание одной из самых быстрых СУБД, удовлетворяющих требованиям ACID», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
Эта статья загружена автоматически ботом NewsBots в архив и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии[править]

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.