在数据库中存储BitSet数组的最佳方法?
我得到了一个java.util.BitSet
数组,我想坚持在我的数据库中,但我不知道最好的办法是做什么。 准确地说,我为每个想要存储的条目获得了值x*y true or false
。我试过java.util.BitSet
是一个很好的尝试,但我真的不知道如何将它存储在数据库中。在数据库中存储BitSet数组的最佳方法?
我正在使用MySQL数据库与休眠(带注释)。
这是我如何初始化我的地图:
Bitset[] map = new BitSet[x];
for (int i = 0; i < x; i++) {
map[i] = new BitSet(y);
}
更新:
有一个在这个数据集中没有关系,问题是,我有一大堆这“2个维数组”的一件大小约为360 * 180。
我也尝试制作一个图像,一个单色的pbm文件很容易制作。但数据仍然不在数据库中,并且每次处理保存的“映像”文件都是过度的,我认为并且有点慢。
你可以在你的数据库中有一列整数(或任何等价物)。
如果你有2列,并假设每列是32位,你可以在 行1列1 32位,然后行1列2下32,然后你去 第2行第1列,并重新开始等等。
这些位之间是否有任何关系可以利用? 或者它只是一个大转储?
注意:我使用这种技术来打包/压缩数据,因此它可能不是您所需要的。
编辑:
我想存储的原始斑点,并通过将其储存在一个单独的实体(新表列或多列) 你有原始的blob跟踪修改位,然后映射BitIndex:BitNewValue
。
现在更合适的框架是map reduce。 但是我可以看到如何管理这样的事情,如果很多位被改变,会变得非常头痛。
更新我的问题与一些额外的信息,感谢评论! – Sorex 2012-03-20 15:09:22
你有什么疑问?你是否在乎如何获得第i位?然后我的回复起作用。如果你想要一次完成所有的事情,那么你可能需要把整个blob放在db – Adrian 2012-03-20 15:13:20
我想把所有的东西都放在一起,有时候只是说几句,就像[x,y ]位置。所以这就是为什么我不知道你的方法是否适合我。 但大拇指当然,即时通讯仍然想着你的方法和mybe它会很好:)感谢评论! – Sorex 2012-03-20 15:31:40
取决于您要查找的数据库速度,您可能希望以不同的方式存储位(全部集中在一个块中并单独存储(针对个别位查询进行优化))。这对于阅读很有用。如果你有很多写入,你会遇到一致性问题。让我编辑我的回复。我只想到了一些 – Adrian 2012-03-20 15:38:14