Эрик Френкель (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, MemcacheDB, Membase и MongoDB, которые оперируют данными в формате ключ/значение.