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.
Источники[править]
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии[править]
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.