Что такое Aerospike и каковы его основные особенности?

«Что такое Aerospike и каковы его основные особенности?» — вопрос из категории Базы данных, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Aerospike — это высокопроизводительная NoSQL база данных, оптимизированная для работы с низкой задержкой (low-latency) в реальном времени (real-time). Её ключевая архитектура предполагает хранение данных как в оперативной памяти (RAM), так и на SSD, что обеспечивает баланс между скоростью и объёмом.

Основные особенности:

  • Гибридное хранилище: Данные индексов хранятся в RAM, а записи (records) — на SSD, что даёт высокую скорость при больших объёмах.
  • Поддержка ACID: Гарантирует атомарность, согласованность, изоляцию и долговечность транзакций на уровне одной записи.
  • Автоматическое шардирование и репликация: Распределение данных по кластеру и создание реплик для отказоустойчивости настраиваются автоматически.
  • Вторичные индексы (SI) и агрегации: Поддержка запросов по вторичным ключам и агрегации данных с помощью пользовательских функций (UDF) на Lua.

Пример работы с Java-клиентом:

// Подключение к кластеру
AerospikeClient client = new AerospikeClient("localhost", 3000);

// Создание ключа для записи (namespace: test, set: users, primary key: user1)
Key key = new Key("test", "users", "user1");

// Создание бинов (полей) записи
Bin nameBin = new Bin("name", "John");
Bin ageBin = new Bin("age", 30);

// Запись данных
client.put(null, key, nameBin, ageBin);

// Чтение данных
Record record = client.get(null, key);
System.out.println(record.getValue("name")); // Вывод: John

// Закрытие соединения
client.close();

На практике работал с оптимизацией запросов для снижения задержки (latency), созданием вторичных индексов и написанием UDF-функций на Lua для сложных агрегаций.