我正在使用Cassandra 1.2.2.我发现这很容易使用杰克逊来映射我的对象和json和
java存储在数据库中.我实际上是试图对我的所有数据做到这一点.我的问题是,这是个好主意吗?这对我的应用程序有什么不利之处?我的第一个猜测可能是更多的处理开销,但果汁值得挤压?有什么其他的缺点我需要知道吗?
解决方法
一个缺点是修改原始数据,反序列化,更改,序列化和写出整个对象.在Cassandra中,写入效率比读取效率要高得多,因此如果可能,避免写入前的读取是有益的.
另一种方法是为JSON中的每个字段使用单独的列.您可以将复合列用于多维数据.
所以如果你有数据:
{ name: "fred" address: "some town" age: 42 }
而您想要更改地址,如果您将这些列作为单独的Cassandra列,您只需插入一个名为address的列.如果你的JSON序列化了,你必须做更多的工作.如果您的数据是一次写入,则不适用.
即使您的数据是一次写入的,如果您只想从数据中读取一个字段,只需单独存储即可读取该列,而不是读取整个事物并进行反序列化.这只适用于您想要阅读部分数据.
总之,如果您必须更新数据或者只想一次读取零件,则使用单独的列可能会有显着的性能优势.