IMDG (In-Memory Data Grid)

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 15:43, 22 февраля 2019.

In-Memory Data Grid (IMDG) - это распределённое хранилище объектов, схожее по интерфейсу с обычной многопоточной хэш-таблицей, где хранятся объекты по ключам. IMDG предназначены для обеспечения высокой доступности и масштабируемости за счет распределения данных между несколькими компьютерами. Недавние достижения в 64-битных и многоядерных системах сделали возможным практическое хранение терабайтов данных полностью в ОЗУ, устраняя необходимость в электромеханических носителях данных, таких как жесткие диски.[Источник 1]

Особенности

Рисунок 1 - Концепция in-memory data grid

В отличие от традиционных систем, в которых ключи и значения ограничены типами данных «массив байт» и «строка», в IMDG можно использовать любой объект из бизнес-модели в качестве ключа или значения. Это значительно повышает гибкость, позволяя хранить в Data Grid в точности тот объект, с которым работает бизнес-логика, без дополнительной сериализации/де-сериализации, которую требуют альтернативные технологии.

Есть и другие функциональные особенности, которые отличают IMDG от других продуктов, таких как IMDB, NoSQL или NewSQL базы данных. Одна из основных — по-настоящему масштабируемое секционирование данных (Data Partitioning) в кластере. IMDG по сути представляет собой распределённую хэш-таблицу, где каждый ключ хранится на строго определённом сервере в кластере. Чем больше кластер, тем больше данных можно в нем хранить.

Ещё одной отличительной особенностью IMDG является поддержка транзакционности, удовлетворяющей требованиям ACID (atomicity, consistency, isolation, durability — атомарность, целостность, изоляция, сохранность). Как правило, чтобы гарантировать целостность данных в кластере, используют двухфазную фиксацию (2-phase-commit или 2PC). Разные IMDG могут иметь разные механизмы блокировок, но наиболее продвинутые реализации обычно используют параллельные блокировки (например, GridGain использует MVCC — multi-version concurrency control, управление конкурентным доступом с помощью многоверсионности), сводя тем самым сетевой обмен к минимуму, и гарантируя транзакционную целостность ACID с сохранением высокой производительности.[Источник 2]

По данным аналитической компании Gartner Inc., IMDG подходят для обработки больших данных «большой тройки»: скорости, изменчивости и объема. IMDG могут поддерживать сотни тысяч обновлений данных в памяти в секунду, их можно кластеризовать и масштабировать таким образом, чтобы поддерживать большие объемы данных. Конкретные преимущества технологии IMDG включают в себя:

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

Приложения, которые могут извлечь выгоду из IMDG, включают ценообразование финансовых инструментов в банках, корзины покупок в электронной торговле, расчеты предпочтений пользователей в веб-приложениях, системы бронирования в индустрии путешествий и облачные приложения.

Некоторые производители называют SSD, Flash-на-PCI, Storage Channel Storage и, конечно же, DRAM как «In-Memory». В действительности большинство поставщиков поддерживают модель многоуровневого хранения, в которой некоторая часть данных хранится в DRAM (самое быстрое хранилище, но с ограниченной емкостью), а затем переполняется на различные флэш-диски или дисковые устройства (медленнее, но с большей емкостью) - таким образом, это редко продукт DRAM-only или Flash-only. Тем не менее, важно отметить, что большинство продуктов в обеих категориях часто склоняются в основном к DRAM или к флеш-памяти на своей архитектуре.

Суть в том, что продукты сильно различаются в том, что они имеют в виду под «In-Memory», но в итоге все они имеют значительный компонент «In-Memory».

Отличия In-Memory Data Grid и In-Memory Database

Большинство In-Memory Database - это СУБД, которые хранят данные «в памяти», а не на диске. Они обеспечивают хорошую поддержку SQL только с небольшим списком неподдерживаемых функций SQL, поставляются с драйверами ODBC / JDBC и могут использоваться вместо существующих СУБД, часто без существенных изменений.

В In-Memory Data Grid обычно отсутствует полная поддержка ANSI SQL, но вместо этого они предоставляют возможности на основе MPP (Massively Parallel Processing), где данные распределяются по большому кластеру обычных серверов и обрабатываются явно параллельным способом. Основным шаблоном доступа является доступ по ключу / значению, MapReduce, различные формы HPC-подобной обработки и ограниченные возможности запросов и индексирования распределенного SQL.

Важно отметить, что существует значительный переход от In-Memory Data Grid к In-Memory Database с точки зрения поддержки SQL. GridGain, например, предоставляет довольно серьезную и постоянно растущую поддержку SQL, включая подключаемую индексацию, оптимизацию распределенных объединений, пользовательские функции SQL и т. д.

Одно из важнейших различий заключается в возможности масштабирования до сотен и тысяч серверов. Это является неотъемлемой возможностью In-Memory Data Grid для такого масштаба из-за их архитектуры MPP и явной неспособности In-Memory Database масштабироваться из-за того, что объединения SQL, как правило, не могут быть эффективно выполнены в контексте распространения. Одна из их самых полезных функций, SQL-соединения, это также их ахиллесова пята, когда речь заходит о масштабируемости. Это фундаментальная причина, по которой большинство существующих баз данных SQL (на основе дисков или памяти) основаны на вертикально масштабируемой архитектуре SMP (симметричная обработка), в отличие от In-Memory Data Grid, которые используют гораздо более горизонтально масштабируемый подход MPP.

Важно отметить, что обе системы могут достигать одинаковой скорости в локальном нераспределенном контексте. В конечном итоге - они делают всю обработку в памяти. Но только In-Memory Data Grid в оперативной памяти могут масштабироваться до сотен и тысяч узлов, обеспечивая беспрецедентную масштабируемость и непревзойденную пропускную способность.

Помимо масштабируемости, есть еще одно отличие, которое важно для случаев использования, когда In-Memory Data Grid или IMDB (In-memory Database) выполняет задачи по ускорению работы существующих систем или приложений.

In-Memory Data Grid всегда работает с существующей базой данных, обеспечивая слой массивно распределенного хранения в памяти и обработки между базой данных и приложением. Затем приложения используют этот уровень для сверхбыстрого доступа к данным и их обработки. Большинство In-Memory Data Grid могут при необходимости беспрепятственно считывать и записывать из баз данных и в них и, как правило, тесно интегрированы с существующими базами данных.

В обмен на это разработчики должны внести некоторые изменения в приложение, чтобы воспользоваться этими новыми возможностями. Приложение больше не «говорит» только на SQL, но ему нужно научиться использовать MPP, MapReduce или другие методы обработки данных.

In-Memory Database дают почти зеркальную противоположную картину: они часто требуют замены существующей базы данных (если только вы не используете один из этих «параметров» в памяти для временного повышения производительности базы данных), но потребуют значительно меньших изменений в самом приложении, поскольку он будет по-прежнему полагаться на SQL (хотя и на его модифицированный диалект).[Источник 3]

Таблица 1. Сравнение систем
Системная особенность In-Memory Data Grid In-Memory Database
Приложение Изменяемое Неизменяемое
РСУБД Неизменяемое Изменяемое
Скорость Да Да
Максимальная масштабируемость Да Нет

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

Источники

  1. Whats is in-memory data grid // Techtarget [1999-2019]. Дата обновления: 1.03.2013. URL: https://whatis.techtarget.com/definition/in-memory-data-grid/ (дата обращения 27.12.2018)
  2. Что такое In-Memory Data Grid // Habrhabr [2006-2019]. Дата обновления: 28.11.2012. URL: https://habr.com/post/160517/ (дата обращения 23.12.2018)
  3. In-Memory Database vs. In-Memory Data Grid: Revisited // Gridgain [2007-2019]. Дата обновления: 01.02.2014. URL: https://www.gridgain.com/resources/blog/in-memory-database-vs-in-memory-data-grid-revisited/ (дата обращения 27.12.2018)