考虑将序列化的java对象存储为cassandra作为JSON.捕获量是多少?

qua*_*ebs 9 java json cassandra

我正在使用Cassandra 1.2.2.我发现使用Jackson可以很容易地将我的对象映射到json和java之间以便存储在数据库中.我实际上很想对我的所有数据这样做.我的问题是,这是个好主意吗?在我的应用程序中执行此操作有什么缺点.我的第一个猜测可能是更多的处理开销,但果汁值得挤压?还有其他我需要知道的缺点吗?

Ric*_*ard 13

一个缺点是要修改您必须在原始数据中读取的数据,反序列化,进行更改,序列化并写出整个对象.在Cassandra中,写入比读取更有效,因此如果可能的话,在写入之前避免读取是有益的.

另一种方法是为JSON中的每个字段使用单独的列.您可以将复合列用于多维数据.

所以如果你有数据:

{
  name: "fred"
  address: "some town"
  age: 42
}
Run Code Online (Sandbox Code Playgroud)

并且您想要更改地址,如果您将这些作为单独的Cassandra列,则只需插入一个名为address的列.如果你有JSON序列化,你必须做更多的工作.如果您的数据是一次性写入,则不适用.

即使您的数据是一次性写入,如果您只想从数据中读取一个字段,只要单独存储而不是读取整个内容并进行反序列化,您就可以读取该列.这仅适用于您想要读取部分数据的情况.

总之,如果您必须更新数据或者只想一次读取部件,则使用单独的列可能会有显着的性能优势.