我有一个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文件很容易制作。但是数据不在数据库中,并且每次处理保存的“图像”文件都是过度的,我认为有点慢。
答案 0 :(得分:2)
你可以拥有数据库中的一列(或者等价物)。
如果你有2列并假设每列是32位,你可以输入 第1行col 1 32位,然后第1行col 2接下来32,然后你去 第2行第1行并重新开始,依此类推。
您可以利用这些位之间的关系吗? 或者它只是一个大转储?
注意:我使用这种技术打包/压缩数据,因此可能不是您需要的。
修改强>
我正在考虑存储原始blob并跟踪修改的位,方法是将它们存储在一个单独的实体中(新表或更多列)
你有原始blob,然后是BitIndex:BitNewValue
的映射
现在更合适的框架map reduce。
但是我可以看到,如果改变很多位,如何管理这样的事情会变得非常头痛。