Починаємо використовувати tarantoolbox в java проект

У статті нижче я спробую коротко розповісти про те, що таке TarantoolBox і як почати його використовувати в уже існуючому проекті якщо ви програмуєте на Java. Якщо ж ви програмуєте на іншій мові, то вам можуть бути цікаві деякі інструменти доступні в коннекторе, такі як можливість редагування xlog файлів і створення snap файлів з будь-яких даних.

Tarantool Box - це ключ-кортеж сховище даних. Всі дані та індекси зберігаються в оперативній пам'яті. Значення складають кортеж, далі tuple. кортежі - простір, далі space. простору - модель даних. Підтримуються 3 типи даних: 32 бітове без знакове целоe, 64 бітове без знакове ціле і бінарна рядок, далі NUM. NUM64 і STR відповідно. Для будь-якого простору повинні бути визначені тип і структура первинного індексу, наприклад: HASH по полях 1,2 де 1 - NUM, а 2 - NUM64. Вторинні індекси задаються точно так само як і первинні. DML операції атомарний на рівні кортежу і виконуються тільки з первинного індексу. Для виконання декількох операцій атомарному потрібно використовувати вбудовану мову Lua. Збереження даних забезпечується шляхом збереження знімка поточного стану, далі snapshot. і бінарного логу, далі xlog. Для зберігання кортежів використовується slab.

Приклад перенесення таблиці MySQL в Tarantool Box:

Первинний індекс id і 2 вторинних унікальних індексу username і email. З нестерпних за замовчуванням місць можна виділити auto_increment і timestamp. Для першого можна використовувати збережену процедуру box.auto_increment. а для другого можна зберігати дані у форматі yyyyMMddhhmmss або секундах. Якщо таблиця user досить невелика, то можна просто прочитати дані з mysql і вставити в Tarantool Box, на цьому завданні я зупинятися не буду, а розкажу, що робити якщо таблиця дуже велика, тобто містить дуже багато записів, нехай і кожна з них невеликого розміру. Для початку потрібно вивантажити дані в зручний для нас формат, бажано не сильно займаючи при цьому ресурси сервера.

Скопіювавши файл на потрібний сервер або локальний комп'ютер, можна приступити до його обробці і конвертації в формат Tarantool Box. У прикладі нижче, для простоти, не розглядаються ескейп послідовності. Якщо у вас в таблицях зустрічаються символи табуляції, переносу рядка, повернення каретки, зворотний слеш або поля містять NULL значення, вам потрібно додати їх обробку самостійно.

В результаті маємо файл

тепер необхідно налаштувати space 0 відповідним чином.

Далі нам потрібно замінити 00000000000000000001.snap знаходиться в папці work_dir з конфігураційного файлу на створений нами файл.

і спробувати запустити сервер

так само подивіться файл tarantool.log, в разі успішного запуску він буде закінчуватися на рядки схожі на наведені нижче, ф в разі помилки, ви відразу побачите причину.

Далі коректність вставки даних можна перевірити простим способом

тобто ми перевірили знаходження даних по 3-м ключам, зазначеним нами в конфіги. Далі можна подивитися кількість споживаної процесом пам'яті в системі і звіт команди show slab в консолі Tarantool Box.

Так само окремо хотілося б відзначити, що при використання функціоналу роботи з xlog файлами практично неможливо втратити дані, навіть якщо ви випадково видалили кортеж або очистили повністю space, використовуючи класи XLogReader і XLogWriter ви зможете легко відредагувати xlog.