Как сохранить массив в качестве значения в 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
Вы объединяете текущее значение и следующий ключ в массиве
Это обеспечивает традиционные преимущества связанного списка, включая простую вставку в середину.