我正在使用 Cassandra 1.2.2。我发现使用 Jackson 将我的对象在 json 和 java 之间来回映射以存储在数据库中非常容易。我实际上很想对我的所有数据执行此操作。我的问题是,这是个好主意吗?这样做对我的应用程序有什么缺点。我的第一个猜测可能是更多的处理开销,但果汁值得挤压吗?还有我需要知道的其他缺点吗?
问问题
8778 次
1 回答
13
一个缺点是,要修改必须读取原始数据、反序列化、进行更改、序列化和写出整个对象的数据。在 Cassandra 中,写入比读取更有效,因此如果可能的话,避免在写入之前先读取是有益的。
另一种方法是为 JSON 中的每个字段使用单独的列。您可以将复合列用于多维数据。
所以如果你有数据:
{
name: "fred"
address: "some town"
age: 42
}
并且您想更改地址,如果您将这些作为单独的 Cassandra 列,您只需插入一个名为 address 的列。如果您将 JSON 序列化,您将不得不做更多的工作。如果您的数据是一次性写入的,则这不适用。
即使您的数据是一次写入的,如果您只想从数据中读取一个字段,您可以在单独存储的情况下读取该列,而不是读取整个内容并反序列化。这仅适用于您要读取部分数据的情况。
总之,如果您必须更新数据或只想一次读取部分内容,则使用单独的列可能会带来显着的性能优势。
于 2013-03-19T17:05:50.087 回答