use*_*270 18 cassandra cassandra-2.0
卡桑德拉新手问题.我正在使用REST调用从社交网站收集一些数据.所以我最终以JSON格式返回数据.
JSON只是我表中的一列.我试图弄清楚存储JSON字符串的"最佳实践"是什么.
首先我考虑使用地图类型,但JSON包含字符串,数字类型等的混合.似乎我不能为地图键/值声明通配符类型.JSON字符串可能非常大,可能超过10KB.我可以将它存储为字符串,但似乎效率低下.我认为这是一项常见任务,因此我确信有一些关于如何执行此操作的一般指导原则.
我知道Cassandra本身支持JSON,但据我所知,当整个JSON映射与数据库模式匹配1-1时,主要使用它.对我来说情况并非如此.模式有一堆列,JSON字符串只是一种"有效负载".将JSON字符串存储为blob还是文本更好?顺便说一句,Cassandra版本是2.1.5.
任何提示赞赏.提前致谢.
fro*_*tor 16
在Cassandra存储引擎中,blob和文本之间没有太大的区别,因为Cassandra基本上将文本存储为blob.是的,您所说的"原生"JSON支持仅适用于您的数据模型与您的JSON模型匹配的情况,而且仅适用于Cassandra 2.2+.
我将它存储为文本类型,您不必在发送数据时(或处理解压缩)实现任何压缩JSON数据的内容.由于Cassandra的二进制协议支持传输压缩.还要确保您的表存储使用相同压缩算法压缩的数据(我建议使用LZ4,因为它是最快的算法),以节省对每个读取请求进行压缩.因此,如果您配置存储压缩的数据并使用传输压缩,您甚至不必自己实现.
您没有说明您正在使用哪个客户端驱动程序,但这里是有关如何为Datastax Java客户端驱动程序设置传输压缩的文档.
这取决于如何查询JSON。有3种可能的策略:
当您使用cqlsh在命令行上查询数据时,或者要直接实时调试数据时,选项1的优点是易于阅读。缺点是此JSON列的大小(10k)
选项2的优点是使JSON有效负载保持较小,因为文本元素具有相当不错的压缩率。缺点是:您需要注意压缩/解压缩客户端和b。它不是人类直接可读的
选项3的缺点是选项1(大小)和选项2(人类不可读)
| 归档时间: |
|
| 查看次数: |
17492 次 |
| 最近记录: |