为了账号安全,请及时绑定邮箱和手机立即绑定

将嵌套的 json 插入到 cassandra 中

将嵌套的 json 插入到 cassandra 中

慕哥9229398 2021-12-21 16:48:37
我试图将这个嵌套对象插入到 cassandra 数据库中,但无法弄清楚如何为此设计表。我希望这个对象的所有数据都存储在 cassandra 中。下面我粘贴了我试图插入的 json。有什么建议?{  "status": "success",  "data": {    "resultType": "vector",    "result": [      {        "metric": {          "__name__": "up",          "env": "demosite",          "instance": "localhost:9100",          "job": "node"        },        "value": [          1553849977.349,          "1"        ]      },      {        "metric": {          "__name__": "up",          "instance": "ub-lab-server:9090",          "job": "prometheus"        },        "value": [          1553849977.349,          "1"        ]      }    ]  }}
查看完整描述

1 回答

?
宝慕林4294392

TA贡献2021条经验 获得超8个赞

有多种方法可以做到这一点。


如果您的用例只是将 JSON 存储为字符串,只需将整个 JSON 作为 blob 序列化为单个列创建一个表:


CREATE TABLE IF NOT EXISTS my_table(

  ID <text/bigint>

  DATA text,

  CREATEDATE timestamp

)

如果要将所有嵌套属性表示为单独的列,则必须从下往上开始。即首先为每个嵌套字段创建用户定义类型。参考你的 json ,一个例子是:


CREATE TYPE metric (

      name text,

      env text,

      instance text,

      job text

);


CREATE TYPE value(

      field1 text,

      field2 text

);

创建基本 UDT 后,从创建复合 UDT 开始,引用基本 UDT:


CREATE TYPE result(

  metric metric,

  value value,

);


CREATE TYPE data(

  resultType text,

  result set<result>,

);    

然后最后引导你的表如下:


CREATE TABLE IF NOT EXISTS my_table (

  ID <text/bigint>

  status data

)

在根据查询和存储用例决定主键/分区键时要小心。


查看完整回答
反对 回复 2021-12-21
  • 1 回答
  • 0 关注
  • 180 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信