Лучший способ хранить массив BitSet в базе данных? - PullRequest
4 голосов
/ 20 марта 2012

Я получил массив java.util.BitSet, который я хочу сохранить в своей базе данных, но я не знаю, каков наилучший способ сделать это.Чтобы быть точным, я получил x*y true or false значение для каждой записи, которую я хочу сохранить.Я подумал, java.util.BitSet - хороший вызов, но я не знаю, как его сохранить в базе данных.

Я использую базу данных MySQL в режиме гибернации (с аннотацией).

Вот как я инициализирую свою карту:

 Bitset[] map = new BitSet[x];
 for (int i = 0; i < x; i++) {
     map[i] = new BitSet(y);
 }

Обновление:

Нет никакого отношения в этом наборе данных, и проблема в том, что у меня их куча "2-мерные массивы ", и одна часть имеет размер около 360 * 180.

Я также попытался сделать из него изображение, монохромный файл pbm легко сделать.Но, тем не менее, данных нет в базе данных, и каждый раз обработка сохраненного файла «изображения» излишня, я думаю и довольно медленная.

1 Ответ

2 голосов
/ 20 марта 2012

вы можете иметь столбец целых (или любой другой эквивалентный) в вашей базе данных.

Если у вас есть 2 столбца и предполагается, что каждый столбец имеет 32 бита, вы можете вставить строка 1 столбец 1 32 бита, затем строка 1 столбец 2 следующих 32, затем вы идете к строка 2, столбец 1 и начинайте сначала и т. д.

Есть ли связь между этими битами, которые вы можете использовать? Или это просто большая свалка?

Примечание: я использовал эту технику для упаковки / сжатия данных, поэтому она может быть не совсем тем, что вам нужно.

EDIT:
Я думаю о хранении необработанного большого двоичного объекта и отслеживании измененных битов *1012*, сохраняя их в отдельной сущности (новая таблица или несколько столбцов) У вас есть сырая капля, а затем отображение BitIndex:BitNewValue.
Более подходящей основой для этого является теперь map Reduce . Но я могу видеть, как управление чем-то подобным может стать огромной головной болью, если много битов изменено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...