当前位置: 首页 > 知识库问答 >
问题:

Cassandra中的单数据列与多列

宇文飞翮
2023-03-14

我正在用现有的卡桑德拉数据库进行一个项目。架构如下所示:

我的问题是:在json字符串中存储数据有什么好处吗?它会节省一些空间吗?

到目前为止,我只发现了缺点:

  • 您不能(轻松)在运行时添加/删除列,因为应用程序可以覆盖 json 字符串列。
  • 解析 json 字符串目前是性能方面的瓶颈。

共有2个答案

吕承福
2023-03-14

埃里克的回答完全正确。

我唯一要补充的是,将JSON blob存储在单个列中会使更新(甚至更多)出现问题。如果更新单个 JSON 属性,则会重写整个列。此外,原始的 JSON blob 仍然存在...只是“过时”,直到压实运行。在单个列中存储 JSON blob 的唯一有意义的情况是属性未更改。

我同意,将键映射到CQL列是一个更好的选择。

柴岳
2023-03-14

不,在Cassandra中将JSON存储为string并没有真正的优势,除非JSON中的底层数据确实是无模式的。它也不会节省空间,但事实上使用更多,因为每个项目都必须有一个键值,而不仅仅是存储值。

如果可以,我建议将键映射到 CQL 列,以便可以本机存储值,并且访问数据更加灵活。干杯!

 类似资料:
  • 我有一个 Cassandra 它有 4 列(项目(文本),市场(文本项目是分区键和市场,位置和时间是相同顺序的聚类键。 应用程序需要在两种情况下查询 Cassandra 表 对于给定的项目,市场和位置通过查询库存表来获取记录。例如,将获取记录下面的项目x、市场l1和位置l1 对于给定的商品、市场和输入时间后的所有位置,通过查询库存表获取记录。例如,项目x,市场m1,将获取t1时间之后低于记录的所有

  • 我在用Cassandra存储股票信息。每个“行”都有一些基字段,如:时间、价格、关闭、打开、低、高等。在这些字段的顶部,我有一个浮动类型的值列表,其中包含一些内部系统计算。 对象的示例:

  • 我有一个DF,其中包含一个巨大的可解析元数据,作为Dataframe中的单个字符串列,我们称之为DFA,使用ColmnA。 我想通过一个函数,ClassXYZ = Func1(ColmnA)将ColmnA这一列分成多个列。这个函数返回一个具有多个变量的类ClassXYZ,现在每个变量都必须映射到新的列,比如ColmnA1、ColmnA2等。 我如何通过调用Func1一次来完成从一个数据帧到另一个数

  • 我是Cassandra数据建模的新手,如果可能的话,我需要在单行中容纳多维数据(是的,我知道Cassandra是柱状存储)。我的示例数据集(试图简化我的用例,忍受我的格式化) 时间戳、交易id、项目代码、用户id、支付方式 20130304221518,abcd,3,6,信用卡 20130304221519,efgh,4,5,现金配送 20130305180402,ijkl,4,5,现金交付 例如

  • 我正在研究一个用于存储时间序列的卡桑德拉数据模型(我是卡桑德拉新手)。我有两个应用程序:日内股票数据和传感器数据。 库存数据将以一分钟的时间分辨率保存。七个数据字段构建一个时间框架:符号、日期时间、开盘、高位、低位、收盘、成交量 我将主要通过符号和日期来查询数据。例如,给我2013年1月1日到2013年1月31日之间按日期时间排序的AAPL的所有数据。cassandra查询的建议是查询整列。所以你

  • 我想知道是否有可能将不同流中的数据合并成一个流。通过合并,我的意思是将其添加到单独的列中,而不是添加到现有的列中。 到目前为止,我已经能够将数据收集到单独的地图中,如下面的示例所示。我认为我应该把这些地图合并成一张,但不确定如何去做,或者我是否做错了什么。 我做了一些搜索,在FlatMap、Concat等网站上找到了一些线索,但因为我对这条流还不熟悉 例如:列出数据-1