【发布时间】:2015-09-29 02:34:33
【问题描述】:
对我来说,blob 的一个问题是,在 java 中,ByteBuffer(映射到 cassandra 中的 blob)不可序列化,因此不适用于 EJB。
考虑到 json 相当大,在 cassandra 中存储 json 的更好类型是什么。是文本还是 blob?
在决定 blob 与 json 时,json 的大小是否重要?
如果是像 oracle 这样的任何其他数据库,通常使用 blob/clob。但是在 Cassandra 中,每个单元格可以容纳 2GB 大小,这有关系吗?
对于这种情况,请将此问题视为文本与 blob 之间的选择,而不是针对是否对 json 使用单列的建议进行排序。
【问题讨论】:
-
为什么要存储 JSON?为什么不将数据存储为表的字段而不是 blob?
-
这个 JSON 只是一个包含更多列的表的一部分。这个 json 只是另一列。基本上,我对知道 json 的内容不感兴趣,我只是将其存储并检索到其他知道内容的系统。但是json本身相当大。你知道,寡核苷酸、板序列可能很大。
-
JSON 应该是 UTF-8 数据,而 Cassandra 的
text类型将字符串存储为 UTF-8,因此除非您想进行压缩,否则应该没有什么区别。但是,从 Java 字符串到 ByteBuffer 的简单转换可能会导致实际包含 UTF-16 的 BLOB,这可能会占用大约 两倍 的空间。如果将其存储为二进制,现在每次交互都有机会选择错误编码格式。