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

在CASSANDRA中存储JSON对象

齐涛
2023-03-14

我想将 JSON 存储在卡桑德拉数据库中。JSON 的每个字段都应映射到其各自的列。

可能吗?如果可能的话,我如何才能实现它?。

请帮帮我..

共有1个答案

沈开畅
2023-03-14

答案与另一篇文章中给出的答案相同,后Cassandra不再是无模式的,因此没有现成的解决方案(除非您有预定义的json结构)。您可以做的是在映射中创建一个一级json结构

{
  "keya": {
      "keyb": 5,
      "keyc": "somestring"
   },
  "keyd": 3;
}

这将映射到以下映射条目中

<keya, '{ "keyb": 5, "keyc": "somestring" }'>
<keyd, '3'>

通过这种方式,您可以获得json中任何一级键的内容,但是您必须搜索后续条目。您也可以将键“展平”成这样的地图:

<keya, '{ "keyb": 5, "keyc": "somestring" }'>
<keya.keyb, '5'>
<keya.keyc": ' "somestring" '>
<keyd, '3'>

您可能还想在存储原始Json的映射中插入一个自定义条目。通过这种方式,您应该能够搜索任何条目,但是您的映射可能会比原始的json大得多,因为它被反规范化为执行基于关键字的搜索。更多:因为映射是静态类型的,所以你必须将整数、uuid、float或任何东西映射成字符串。

哈,卡洛

 类似资料:
  • 我有一个无模式的json对象,我希望使用spring-cassandra将它存储在Cassandra DB中。我了解到卡珊德拉支持地图类型,但卡珊德拉不接受<代码>地图 我需要查询json的字段,因此将其存储为blob是不可能的。还有什么我能做到的吗? PS:我看过在CASSANDRA中存储JSON对象,答案似乎不适用于我的用例,因为我的json可能非常复杂。

  • 我有以下对象需要存储在Cassandra中。我需要使用UDT还是有其他方法来存储对象。我需要最终使用存储库方法从spry-boot应用程序存储它。

  • 我正在尝试使用Cassandra中的复合表和nodejs绑定来存储嵌套的JSON对象。 假设我的数据看起来像这样(朋友和敌人实际上拥有比简单地图更复杂的数据结构): 根据我对复合键的理解(这里:https://pkghosh.wordpress.com/2013/07/14/storing-nested-objects-in-cassandra-composite_columns/),我希望像这样

  • 我使用laravel Redis cache facade将我的对象数据(JSON编码)推送到Redis,并使用Node.js Redis模块使用关键字搜索取回数据。我的JSON字符串像这样存储在Redis中。这里的字符串破坏了我在节点上的JSON解析。Redis存储了我的json_encoded字符串,附加了一些。 有什么建议如何解决这个问题,或者我应该看看redis的其他数据类型(列表或哈希)

  • 我正在尝试设计一个新的应用程序,它使用Cassandra而不是传统的SQL数据库。集群和水平扩容功能对我的用例特别有用。 我有这样的情况,我有多个记录,它们可能彼此非常不同。例如,如果我存储不同的运动信息,对于足球,我会存储两支球队、球员、半场和全场比赛后的结果、红牌、黄牌等信息,而如果是网球比赛,则会存储两名对手、盘数等信息。 我不希望每个运动都有一个表(有负载),并且希望能够添加新的运动,而不

  • 卡桑德拉新手问题。我正在使用REST调用从社交网站收集一些数据。因此,我最终得到了以JSON格式返回的数据。 JSON 只是我的表中的列之一。我试图弄清楚存储JSON字符串的“最佳实践”是什么。 首先我想到使用map类型,但JSON包含字符串、数字类型等的混合。看起来我不能为map键/值声明通配符类型。JSON字符串可能非常大,可能超过10KB。我可以将其存储为字符串,但这似乎效率低下。我会假设这