Tarantool – это вполне зрелый продукт отечественной разработки NoSQL-хранилищ от Mail.Ru Group, ориентированных на создание сервисов высокой доступности. Сообществом разработчиков реализованы клиенты под основные языки программирования (C, Perl, Python, PHP, Java, Ruby, NodeJs). Переписаны клиенты под эту версию, так что можно смело переходить на новый вариант.
Место Tarantool в семействе NoSQL
NoSQL-хранилища – понятие, сильно расплывчатое. Говоря о них, надо знать их место в общепринятой классификации [1]: графовые, документно-ориентированные, кеy/value, конечно-ориентированные. Если Tarantool [2] версии 1.5 был классическим кеy/value- хранилищем, то начиная с версии 1.6 можно всерьез подумать о документно-ориентированности. Это связано с реализацией нового, более дружественного и более близкого к документно-ориентированности протокола обмена и более доступного и расширенного API.
Отличительной особенностью Tarantool является то, что он персистентный, т.е. все данные постоянно сохраняются на диск, и в случае падения их всегда можно будет восстановить. Это in-memory-хранилище, т.е. все данные должны размещаться в оперативной памяти, и если памяти не хватает, то возникает исключение. На исключение можно задавать реакцию: либо сообщать об ошибке, что установлено по умолчанию, либо продолжать работать дальше, но не добавлять в память.
Однако начиная с версии 1.6 в Tarantool появились типы подключаемых хранилищ аналогично подключаемым плагинам в MySQL (InnoDb, Archived, Memory). Новый подключаемый тип, который позволяет содержать больше данных, чем может вместиться в оперативную память, разработан Mail.Ru и называется Sophia, так как задействовано одноименное хранилище с фрактальным индексом [3]. Поэтому, говоря в новой версии о типе использования памяти, мы не будем ограничиваться только in-memory.
Наиболее похожее и стоящее рядом с похожими NoSQL-решениями – это Redis [4]. По производительности они находятся где-то рядом. На одних операциях выигрывает Tarantool, на других – Redis. Более подробную информацию о методологии тестирования и результатах бенчмарков можно найти на официальном сайте [5].
Первые шаги
Tarantool – это решение для UNIX-подобных систем. Есть deb-пакеты, порты для OsX, CentOs, FreeBSD. Всегда можно собрать из исходных текстов. Об инсталляции хорошо написано в официальной документации [6].
Весь интерфейс интегрирован в LUA-консоль.
Lua [9] – это интерпретируемый язык программирования, разработанный подразделением Tecgraf (Computer Graphics Technology Group) Католического университета Рио-де-Жанейро (Бразилия). Интерпретатор языка является свободно распространяемым, с открытыми исходными текстами на языке Си.
Используется виртуальная машина LuaJIT 2.0 совместно с Lua 5.1. Если в предыдущей версии официальный клиент и само хранилище были разнесены на разные бинарные модули, то в новой версии они интегрированы в единое целое. Теперь Tarantool – это не просто база данных, а полноценный Application server, который может реализовать пользовательскую логику, а одним из своих модулей имеет базу данных.
Статью целиком читайте в журнале «Системный администратор», №1-2 за 2015 г. на страницах 67-71.
PDF-версию данного номера можно приобрести в нашем магазине.