如何在 Cassandra 中存储自定义对象?

Posted

技术标签:

【中文标题】如何在 Cassandra 中存储自定义对象?【英文标题】:How to store a custom object in Cassandra? 【发布时间】:2019-05-21 06:29:05 【问题描述】:

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


    "name": "Krishna",
    "age" : 24,
    "address" : [
        
            "attributes" : [
                
                    "name": "",
                    "value" : ""
                
            ],
            "contactnumbers" : [ "123123234", "123456"]
        
    ],
    "devices" : [
        "android_pixel",
        "ios_6s"
    ]

【问题讨论】:

【参考方案1】:

我认为,您需要在这里使用 UDT。我可以想出这个。

CREATE TYPE attribute_info (
    name text,
    value text
);

CREATE TYPE address_info (
    attributes list<frozen<attribute_info>>,
    contactnumbers list<text> 
);

CREATE TYPE user_info (
    name text,
    age int,
    address list<frozen<address_info>>,
    devices list<text>
);

key space 下获得user_info 后,在创建或更改表时将其用作列的类型。

【讨论】:

是的。这是我发现的一种方法,我正在实施它。有什么方法可以像我们在 MongoDB 中插入文档一样将文档(JSON)插入 Cassandra,因为 cassandra 也是一个 NoSQL 数据库? 将 JSON 作为文本存储在 Cassandra 列中是另一种方式,但我不建议这样做。即使我们将其存储为文本,我们也需要对其进行压缩。你可以多罚款here。 Cassandra 更类似于基于键值的 NoSQL 数据库。第三种选择是使用JSON to write to Cassandra tables,但这取决于您的应用程序希望如何访问这些数据。参考 link 了解 Cassandra 架构。

以上是关于如何在 Cassandra 中存储自定义对象?的主要内容,如果未能解决你的问题,请参考以下文章

sql server 中如何查看自定义函数的源代码?

LayUi创建一个自定义通用模块

如何处理 Android 中远程视图的异常(自定义小部件或自定义通知)?

Flink的sink实战之四:自定义

如何在 Parse 中存储一组自定义对象?

如何在 Spring Boot 应用程序中为码头服务器自定义带有自定义正文内容的 ErrorHandler 类