pin*_*her 15 java json blob cassandra
blob对我来说的一个问题是,在java中,ByteBuffer(在cassandra中映射到blob)不是Serializable,因此不适用于EJB.
考虑到json相当大,在cassandra中存储json的更好类型.是文字还是blob?
在决定blob vs json时,json的大小是否重要?
如果它是像oracle这样的任何其他数据库,那么通常使用blob/clob.但在Cassandra,每个单元可以容纳2GB,这有关系吗?
请将此问题视为本案例中text和blob之间的选择,而不是排序到是否为json使用单列的建议.
aro*_*oth 17
我不认为将文字 JSON数据存储为BLOBCassandra 有任何好处.最多,您的存储成本是相同的,并且通常API在处理BLOB类型方面不太方便,因为它们用于处理字符串/文本.
例如,如果您正在使用他们的Java API,那么为了将数据存储为BLOB使用参数化,PreparedStatement您首先需要将其全部加载到a中ByteBuffer,例如将JSON数据打包到InputStream.
除非您正在处理非常大的 JSON片段,否则会强制您流式传输数据,这对于访问该BLOB类型来说是一项额外的工作.你会从中获得什么?基本上没什么.
但是,我认为有一些优点要问' 我应该将JSON存储为文本,还是将其压缩并将压缩数据存储为BLOB?".
答案就是你如何配置Cassandra和你的桌子.特别是,只要您使用Cassandra 1.1或更高版本,您的表默认启用压缩.这可能就足够了,特别是如果您的JSON数据在每一行中相当一致.
但是,Cassandra的内置压缩是在表范围内应用的,而不是单个行.因此,您可以通过在存储之前手动压缩JSON数据,将压缩的字节写入a ByteBuffer,然后将数据作为a将数据传送到Cassandra 来获得更好的压缩率BLOB.
因此,它主要归结为存储空间与编程方便性与CPU使用率之间的权衡.我会按如下方式决定:
BLOB;BLOB;BLOB.