Базы данных в оперативной памяти vs. cети данных в оперативной памяти

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

Терминология

Хотя понятие баз данных, хранящихся в оперативной памяти (in-memory database), хорошо знакомо специалистам и однозначно трактуется в любом контексте, следует отметить, что в последнее время начали появляться традиционные БД с серьезным in-memory функционалом: MSSQL 2014 от Microsoft, Exalytics и Exadata от Oracle и DB2 с поддержкой ускорения BLU от IBM. Для простоты я буду называть их базами данных в оперативной памяти или БДОП.

Ко второй группе относятся сети данных, хранящихся в оперативной памяти (in-memory data grid), также известные как базы данных в оперативной памяти NoSQL/NewSQL. Мы назовем их просто — сети данных в оперативной памяти или СДОП.

Многоуровневое хранение

Прежде чем продолжить, давайте разберемся, что имеется в виду под понятием «in-memory» («в оперативной памяти»). Хотя некоторые производители используют термин «в оперативной памяти» по отношению к носителям SSD, FlashonPCI, MCS и DRAM, в реальности большинство из них реализуют модель иерархического управления носителями, при которой часть данных хранится в оперативной памяти DRAM (динамическая память с произвольным доступом), а при переполнении выгружается на дисковый или flash-носитель. Таким образом, подобные продукты редко используют только одну технологию. Поэтому их трудно назвать базирующимися исключительно на DRAM, flash или дисковых устройствах. Однако важно отметить, что архитектура БДОП и СДОП часто подразумевает преимущественное использование либо DRAM-технологий хранения данных, либо жестких дисков и flash-накопителей.

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

Технические различия

Большинство БДОП – это СУРБД, которые хранят данные в оперативной памяти, а не на жестком диске. Эти продукты поддерживают язык SQL, за исключением небольшого списка функций языка, которые остались не реализованными. Кроме того, БДОП поставляют с драйверами ODBC и JDBC (соответственно, для поддержки стандартного интерфейса открытых средств связи с базами данных от Microsoft и средства организации доступа Java-приложений к БД в сети от Oracle), поэтому их можно использовать вместо существующих СУРБД без каких-либо потерь. Напротив, у СДОП отсутствует полная поддержка ANSI SQL, хотя этот недостаток компенсируется свойствами массово-параллельной архитектуры (MPP), позволяющей обрабатывать данные в параллельном режиме. При этом данные распределяются между большим количеством мощных серверов. Доступ к данным осуществляется главным образом по парам «ключ-значение», используется модель распределенных вычислений MapReduce, обработка данных происходит по принципам, схожим с работой суперкомпьютера, а также при помощи ограниченных запросов SQL и индексирования.

Обратите внимание, что у БДОП и СДОП гораздо больше сходств, чем различий, если дело касается поддержки SQL. К примеру, СДОП-платформа GridGain подразумевает надежные и все расширяющиеся возможности поддержки языка: блочная индексация, распределенная оптимизация соединений, пользовательские SQL-функции и так далее.

Скорость vs. скорость + масштабируемость

Ключевой момент в сравнении БДОП и СДОП – уровень масштабируемости. Благодаря так называемой массово-параллельной архитектуре (MPP), данные в СДОП могут храниться на сотнях и тысячах серверов; с другой стороны, поскольку использование SQL-оператора JOIN в контексте распределенных вычислений неэффективно, горизонтальное расширение БДОП становится невозможным. В этом и состоит главное противоречие БДОП: оператор JOIN, один из самых мощных и полезных инструментов для работы с базами данных, одновременно существенно ограничивает возможности расширения. Именно поэтому большинство существующих баз данных на языке SQL основаны на архитектуре с вертикальным масштабированием, тогда как СДОП с их MPP-архитектурой обладают отличными возможностями масштабирования в горизонтальном направлении.

Обратите внимание, что и БДОП и СДОП имеют примерно одинаковую скорость работы в локальном режиме (без распределения данных), но только представление СДОП позволяет распределять данные по сотням и тысячам узлов, обеспечивая невероятный уровень масштабируемости и непревзойденную производительность вычислений.

Замена базы данных vs. модификация приложения

Помимо масштабируемости, еще одним критерием сравнения БДОП и СДОП является необходимость замены всей базы данных или лишь отдельного приложения.

СДОП могут работать с уже существующей базой данных, просто организовав еще один промежуточный уровень между БД и приложением для распределенного хранения и обработки данных в оперативной памяти, обратиться к которым можно будет мгновенно. Большинство сетей достигают высокого уровня интеграции с существующими базами данных, а их интерфейс при необходимости способен считывать и записывать информацию в сквозном режиме, то есть одновременно работая и с сетью, и с БД. В этом случае разработчикам необходимо модифицировать приложение, чтобы получить доступ к этим новым возможностям. Теперь, когда приложение может «разговаривать» не только на языке SQL, нужно научить его пользоваться MPP, MapReduce и другими технологиями обработки данных.

Напротив, при использовании БДОП, часто требуется полностью заменить базу данных (если только вы не используете одну из «опций» технологии in-memory, чтобы временно повысить производительность БД), однако в приложение придется вносить существенно меньше изменений, поскольку оно по-прежнему будет работать на SQL (или на его модифицированном «диалекте»).

В заключение скажу, что у обоих подходов есть как достоинства, так и недостатки, которые проявляются в зависимости от организационных мер и общей политики, а также технических характеристик оборудования.

Мой совет компаниям, начинающим разработку системы или приложения с нуля, -использовать технологию СДОП. Такой подход позволит им при необходимости работать с корпоративными базами данных и в то же время получить отменную производительность и масштабируемость при высоком уровне интеграции с базой.

А вот если вы собираетесь перестраивать существующую корпоративную систему или приложение, предлагаю прислушаться к следующим рекомендациям:

Отдайте предпочтение БДОП, если:

  • требуется замена или усовершенствование СУРБД, в которой данные хранятся на диске;

  • вы не имеете возможности вносить изменения в приложения;

  • необходима высокая скорость работы, а уровень масштабируемости не столь важен.

Этот подход позволит организации существенно повысить скорость работы приложения путем замены или усовершенствования СУРБД без необходимости вносить изменения в само приложение.

С другой стороны, выбирайте СДОП, если:

  •  заменить СУРБД с данными, хранящимися на диске не представляется возможным;
  • вы можете вносить изменения в приложение;
  • важна как скорость, так и масштабируемость.

Сети позволяют вывести скорость работы приложения на совершенно новый уровень благодаря небольшой настройке приложения без внесения изменений в саму БД.

В обобщенном виде сравнительные характеристики БДОП и СДОП представлены в таблице:

СДОП

БДОП
Существующее приложение  Модифицируется Не меняется
Существующая СУРБД  Не меняется Модифицируется или заменяется
Скорость  Да Да
Макс. масштабируемость  Да Нет

Перевод Елизаветы Филипповой 

По материалам: Inside Big Data

Добавить комментарий

Ваш e-mail не будет опубликован.

закрыть

Поделиться

Отправить на почту
закрыть

Вход

закрыть

Регистрация

+ =