Apache Ignite - это распределенная база данных для высокопроизводительных вычислений со скоростью в памяти.
Apache Ignite — это распределенная база данных, кэширование и обработки с открытым исходным кодом софта, предназначенная для хранения и вычисления больших объемов данных в кластере узлов. Очень важное в определении, что это база данных, хотя и более уникальная для себя. Данный продукт также поддерживает технологии репликации и шардинга. Возможна поддержка нескольких резервных копий для гарантии отказоустойчивости. Важно, что в независимости от используемой схемы репликации, Apache Ignite гарантирует согласованность данных на всех узлах кластера.
Если вы работаете с большими данными (big data), нейронкой, высокопроизводительной системой, тогда вам точно необходим этот продукт. В моей истории я на двух проектах сопровождал данный кластерный продукт и впечатления от него разные. Ну если, например вам необходимо отдавать одинаковую информацию одновременно 1000+ пользователям, тогда вашей команде разработки необходимо использовать этот продукт. Хотя возможны и другие инструменты (например кэш Postgres)
База данных Apache Ignite использует ОЗУ в качестве уровня хранения и обработки по умолчанию, поэтому он относится к классу вычислительных платформ в памяти.
Шардинг — метод разделения и хранения единого логического набора данных в виде множества баз данных. Другое определение шардинга — горизонтальное разделение данных.
Репликация — механизм синхронизации содержимого нескольких копий объекта (например, содержимого базы данных). Репликация — это процесс, под которым понимается копирование данных из одного источника на другой (или на множество других) и наоборот.
Ignite обеспечивает высокопроизводительную структуру организации данных с распределенной памятью и управления ими между приложениями и различными источниками данных.
Простыми словами это База данных в основе которой — хранилище "ключ-значение"; грубо говоря, ConcurrentDictionary, в котором данные расположены на нескольких машинах.
При этом поддерживаются распределённые транзакции, SQL с индексами, полнотекстовый поиск Lucene, map-reduce вычисления, и многое другое. Но обо всём по порядку.
Ignite написан на Java, а так же предоставляет API на .NET и C++.
Принцип In-Memory Database
В качестве базы данных с распределенной памятью Ignite поддерживает транзакции ACID, операторы SQL, пары «ключ-значение», калькуляторы, машинное обучение и другие API обработки данных.
ACID это аббревиатура, означающая Atomicity - атомарность, Consistency - консистентность, Isolation - изолированность, Durability - стойкость.
Архитектура постоянной памяти Ignite позволяет хранить данные и индексы в памяти и на жестком диске. Сохранение жесткого диска не является обязательным. После включения постоянного хранения на жестком диске Ignite может хранить больше данных и будет служить полной распределенной базой данных. Этот метод используется не часто, потому что он влияет на скорость отдачи данных, но тоже имеет место быть. В следующих статьях мы разберем этот вариант использования данного инструмента.
Когда и полные данные, и индекс применимы к памяти и постоянство отключено, Ignite будет работать как база данных в памяти, поддерживая SQL и все существующие API-интерфейсы только для памяти.
SQL — декларативный язык программирования, применяемый для создания, модификации и управления данными в реляционной базе данных, управляемой соответствующей системой управления базами данных.
У Ignite SQL есть очевидная особенность, то есть он поддерживает распределенные SQL-соединения и может работать как при совместном размещении, так и без него. При совместном размещении соединение может быть выполнено на локальных данных, доступных на каждом узле, без необходимости передачи данных по сети. Режим сопоставления имеет отличную масштабируемость и отличную производительность в распределенной системе.
Плюсы использования In-Memory СУБД:
- быстрота выполнения операций;
- эффективное сохранение зафиксированных данных, которые используются не часто, на жестком диске;
- высокая пропускная способность систем, критичных к производительности.
Минусы:
- однопоточность и эффективная утилизация только одного ядра ЦП, что не позволяет в полной мере воспользоваться возможностями современных многоядерных серверов. Поэтому при разработке решения на базе IMDB следует проектировать его с перспективой распараллеливания на десятки экземпляров (инстансов), что эффективно утилизировать hardware;
- энергозависимость и привязка к размеру оперативной памяти. Для решения этой проблемы используется запись с предварительным журналированием на энергонезависимом устройстве для обеспечения целостности базы данных при внезапной перезагрузке .
Если резюмировать, то Apache ignite это высокопроизводительная база дынных, которая имеет свои плюсы и минусы.
В серии статей я попытаюсь вам рассказать о сопровождении данного продукта, потомучто много есть особенностей.
Продолжение следует…