Что такое in-memory базы данных?

4 Марта 2015
Если облака для вас
не просто теория
Широкий спектр услуг
по выделенным северам
и мультиклауд-решениям
Конфигурация VPS и бесплатный тест уже через 2 минуты
Организация вашей IT-инфраструктуры на основе мультиклауд-решения
Как это обычно бывает, у этого термина нет устойчивого русского перевода, это что-то вроде «базы данных в оперативной памяти».

Мы все помним известное сокращение ACID, обозначающее требования к транзакционной системе: атомарность, согласованность, изолированность, надежность. Но в мире больших данных, где постоянно растут требования к объему и скорости обрабатываемых данных, часто жертвуют одним из этих требований, чтобы обеспечить необходимую производительность. In-memory базы данных – типичный пример такого подхода.

Базы данных in-memory хранятся в оперативной памяти сервера. Очевидно, что это обеспечивает большие преимущества в скорости, поскольку операции с данными в памяти выполняются меньшим числом инструкций процессора, а время доступа к данным операциями типа seek вообще несравнимо – оперативная память глобально выигрывает у жесткого диска.

В терминах ACID базы данных in-memory конечно жертвуют надежностью, ведь при обесточивании или перезагрузке в них пропадают все данные. Существуют ряд методов, которые позволяют снизить этот риск:

  • Снэпшоты (снимки) базы данных в разные моменты времени – фактически эквивалентны бэкапу базы данных на жесткий диск. Недостатком метода является гарантированная потеря части «свежих данных» при каких-то проблемах.
  • Логи транзакций записывают все транзакции на жесткий диск и позволяют восстановить данные после перезагрузки.
  • Использование NVRAM или NVDIMM – модулей памяти, которые сохраняют свое состояние при пропадании питания, хотя конечно NVDIMM и технология Flash-памяти – это уже какое-то гибридное и безусловно более медленное решение.