Как сохранить массив в качестве значения в Tokyo Cabinet?

Можно ли как-то сохранить массив чисел в базе данных Tokyo Cabinet db? Например, у меня есть предсказуемые массивы значений, такие как

1 => [1, 2, 444, 0.987],
2 => [2, 23, 123, -0.234],
3 => [3, 1, 34, 1.456]

Я хотел бы хранить вышеупомянутое в TC фиксированной длины дБ. Есть ли способ сохранить вышесказанное как массивы, а не как строки?

1 ответ

Tokyo Cabinet допускает произвольные последовательности байтов как ключ, так и значение, поэтому схема действительно зависит от вас. Первый шаг - решить, как хранить каждый номер. Это может быть плавающая, двойная или фиксированная точка (например, BigDecimal).

Затем вы решаете, как сериализовать массив. Это может быть смежным:

num => 1 2 444 0.987

Значение TC - это просто все числовые значения, объединенные вместе. Например, используя 32-битные числа:

num => 0x 3f 80 00 00 40 00 00 00 43 de 00 00 3f 7c ac 08

Другая возможность - это связанный список:

key => num next_key

1 => 1.1 2
2 => 2 3
3 => 444 4
4 => 0.987 0

Вы объединяете текущее значение и следующий ключ в массиве

Это обеспечивает традиционные преимущества связанного списка, включая простую вставку в середину.

Другие вопросы по тегам