在数据库中存储BitSet数组的最佳方法?

时间:2012-03-20 14:24:52

标签: java mysql database hibernate bitset

我有一个java.util.BitSet数组,我想在我的数据库中保留,但我不知道最好的方法是什么。 确切地说,我想要存储的每个条目都有x*y true or false值。我认为java.util.BitSet是一个很好的尝试,但我真的不知道如何将它存储在数据库中。

我正在使用带有hibernate的MySQL数据库(带注释)。

这是我初始化地图的方式:

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

更新

这个数据集没有任何关系,问题是我有大量的这些“二维数组”,一个大小约为360 * 180。

我也试图用它制作一个图像,一个单色的pbm文件很容易制作。但是数据不在数据库中,并且每次处理保存的“图像”文件都是过度的,我认为有点慢。

1 个答案:

答案 0 :(得分:2)

你可以拥有数据库中的一列(或者等价物)。

如果你有2列并假设每列是32位,你可以输入  第1行col 1 32位,然后第1行col 2接下来32,然后你去  第2行第1行并重新开始,依此类推。

您可以利用这些位之间的关系吗?  或者它只是一个大转储?

注意:我使用这种技术打包/压缩数据,因此可能不是您需要的。

修改
 我正在考虑存储原始blob并跟踪修改的位,方法是将它们存储在一个单独的实体中(新表或更多列)      你有原始blob,然后是BitIndex:BitNewValue的映射      现在更合适的框架map reduce。      但是我可以看到,如果改变很多位,如何管理这样的事情会变得非常头痛。