Как сохранить массив в качестве значения в Tokyo Cabinet? - PullRequest
0 голосов
/ 09 июня 2010

Есть ли способ сохранить массив чисел в дБ Токийского Кабинета?Например, у меня есть предсказуемые массивы значений, такие как

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

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

1 Ответ

1 голос
/ 09 июня 2010

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

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

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

...