HyperDex — новое опенсорсное NoSQL key-value хранилище, заточенное на очень быстрый поиск

NoSQL

Авторы позиционируют HyperDex как распределённое, отказоустойчивое, легко-маштабируемое, заточенное на очень быстрый поиск NoSQL key-value хранилище.

Главная фича — новый принцип хранения объектов в многомерном эвклидовом пространстве (рис. слева), используя гиперпространственное хэширование (hyperspace hashing) (на который, кстати, авторы сейчас получают патент), которое позволяет выполнять большинство типичных задач от 2 до 13 раз быстрее, чем в MongoDB, Redis, Cassandra.





О проекте



HyperDex появился в недрах факультета компьютерных наук Корнелльского Университета силами 3-х авторов.

Один из авторов заявил о проекте на Hacker News & Slashdot лишь вчера, 22 февраля.
Судя по сайту и описанию проекта — инфы пока ещё мало. Характер этого топика — вводный, я решил перевести вступительную инфу о проекте, доступную на их сайте и в документации. Если проект заинтересовал — советую ознакомиться с более подробным 15-ти страничным описанием (ссылка ниже)

Написан на C++; 39,750 LoC; Сорсы на гитхабе (лицензия 3-clause BSD license)

Сайт | Полное описание (PDF, 15 стр., англ.)

Мануал по установке (есть пакеты для Debian, Ubuntu, Fedora)

* Важно: HyperDex заводится только на x86_64 платформе.



В двух словах про гиперпространственное хэширование (hyperspace hashing)


HyperDex представляет каждую таблицу в качестве независимого многомерного пространства, где оси — атрибуты таблицы. На примере 1-го рисунка, мы имеем таблицу, содержащую инфу о пользователе с атрибутами «First Name» (ось X), «Last Name» (Y) и «Phone Number» (Z). HyperDex присваивает каждому объекту соответствующие координаты на основе его атрибутов. Далее, объект мэпится к оным координатам методом хэширования каждого его атрибута по соответствующим осям.

В случае, когда атрибутов много, пространство разбивается на подпространства (subspaces)


Более подробная инфа по принципам хэширования, хранения на диске, а также шардингу и репликации — читайте в полном описании проекта.



Бенчмарки



Бенчмарки проводились тулзой YCSB (Yahoo! Cloud Serving Benchmark) на кластере из 14 нод (конфа каждой — 2х Intel Xeon 2.5 GHz E5420, 16 GB RAM, 500 GB SATA 3 Gbit 7200 RPM. 64-bit Debian 6 Linux 2.6.32 kernel)

MongoDB 2.0.0
Cassandra 0.7.3

UPD: Сейчас, спустя несколько суток после публикации на HN & Slashdot, видно что эти бенчмарки — основная тема дебатов, в которых участвуют авторы как самого проекта, так и Редиса (antirez) и другие спецы по сравниваемымм продуктам. Очевидно, что каждая БД лучше всего работает по своему фронту задач и «универсальные» бенчы не дают картины для объективного сравнения.

Описание нагрузочных сценариев на графиках (Workloads (англ.)):


  • A. 50/50 чтение-запись (сессии, пара действий с бд)
  • B. 95/5 чтение-запись
  • C. Только чтение
  • D. Добавление новых записей и чтение последних изменений
  • E. Поиск
  • F. Чтение объекта / изменение / запись обратно


                          

Вставка 10 000 000 объектов
                          

Workload B. 95% чтение, 5% запись
на 10К сценарных операций


Поиск. 10К сценарных операций. Важное замечание по этому бенчу: HyperDex ищет не по индексным (non-primary) атрибутам объектов, в то время как остальные — только по primary-key

                          


Линейная маштабируемость. на 32-х нодах HyperDex обрабатывает 3.2 млн. операций в секунду
                          

Сравнение с Redis. Workload E — поиск.
Обсуждение этого бенча в рассылке Redis (agladysh)




Обсуждение с одним из авторов (rescrv) на Hacker News | Slashdot
Tags:hyperdexhyperspace hashinghyperdrivenosqlkey-value storagebenchmarksmongodbrediscassandra
Hubs: NoSQL
+68
4.9k 229
Comments 50

Popular right now

Project Manager
January 26, 202124,000 ₽GeekBrains
Профессия Product Manager
January 27, 2021108,500 ₽Нетология
Аналитика для руководителей
January 27, 202167,500 ₽Нетология
Product Manager IT-проектов
January 28, 202160,000 ₽OTUS
JavaScript Developer. Professional
January 28, 202170,000 ₽OTUS