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

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

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

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

所以如果你有数据:

{ name: "fred" address: "some town" age: 42 } 

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

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

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