java - 考虑将序列化的 java 对象作为 JSON 存储到 cassandra 中。问题是什么?

标签 java json cassandra

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

最佳答案

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

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

所以如果你有数据:

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

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

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

总而言之,如果您必须更新数据或只想一次读取部分数据,使用单独的列可能会带来显着的性能优势。

关于java - 考虑将序列化的 java 对象作为 JSON 存储到 cassandra 中。问题是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15500898/

相关文章:

java - 输入流和内存不足错误

java - 使用 TokenAwarePolicy 和 shuffleReplicas 的 Cassandra 负载平衡

unit-testing - 将测试数据填充到 cassandra 单元的最快方法?

java - eclipse ini配置

Java libgdx 匀速方向发射子弹

java - 为什么我无法导入 android.os.StrictMode?

ios - 试图追踪需要在 iOS 中实现 JSON 字典值的位置

javascript 到 java 远程方法接口(interface)

cassandra - 如何使用 Spring boot 初始化 Cassandra 键空间和表

java - Android:不知道如何使用 setImeActionLabel