卡桑德拉新手问题。我正在使用 REST 调用从社交网站收集一些数据。所以我最终得到了 JSON 格式的数据。
JSON 只是我表中的列之一。我试图找出存储 JSON 字符串的“最佳实践”。
首先我想到使用map类型,但 JSON 包含字符串、数字类型等的混合。我似乎无法为映射键/值声明通配符类型。 JSON 字符串可能非常大,大小可能超过 10KB。我可以将它存储为字符串,但看起来效率很低。我认为这是一项常见任务,因此我确信有一些关于如何执行此操作的一般准则。
我知道 Cassandra 对 JSON 具有本机支持,但据我了解,这主要在整个 JSON 映射与数据库模式 1-1 匹配时使用。我的情况并非如此。该架构有一堆列,JSON 字符串只是一种“有效负载”。将 JSON 字符串存储为blob or as text?顺便说一句,Cassandra 版本是 2.1.5。
任何提示表示赞赏。提前致谢。
在 Cassandra 存储引擎中,blob 和文本之间实际上没有太大区别,因为 Cassandra 本质上将文本存储为 blob。是的,您所说的“本机”JSON 支持仅适用于您的数据模型与 JSON 模型匹配的情况,并且仅在 Cassandra 2.2+ 中提供。
我会将其存储为文本类型,并且您不必在发送数据(或处理解压缩)时实现任何压缩 JSON 数据的操作。由于 Cassandra 的二进制协议支持执行以下操作传输压缩 http://www.datastax.com/dev/blog/binary-protocol。还要确保您的表存储了数据压缩 http://docs.datastax.com/en/cassandra/2.1/cassandra/operations/ops_config_compress_t.html使用相同的压缩算法(我建议使用 LZ4,因为它是实现最快的算法),以节省对每个读取请求进行压缩的时间。因此,如果您配置存储压缩数据并使用传输压缩,您甚至不必自己实现。
您没有说明您正在使用哪个客户端驱动程序,但这里是有关如何设置传输压缩的文档Datastax Java 客户端驱动程序 https://datastax.github.io/java-driver/2.1.7/features/compression/.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)