如何正确地在cassandra中设计数据模型来存储json
我正在学习cassandra,以了解如何对数据进行建模以最好地管理json,如下所示:如何正确地在cassandra中设计数据模型来存储json,json,cassandra,Json,Cassandra,我正在学习cassandra,以了解如何对数据进行建模以最好地管理json,如下所示: { "summary": { "elem": [ { "score": 15.8, "value": "xxx" }, { "score": 15.7, "value": "yyy"
{
"summary": {
"elem": [
{
"score": 15.8,
"value": "xxx"
},
{
"score": 15.7,
"value": "yyy"
},
{
"score": 13.9,
"value": "zzz"
}
],
"sens": [
{
"score": 23,
"start": 0,
"end": 210,
"value": "kkk"
},
{
"score": 12.1,
"start": 212,
"end": 326,
"value": "nnn"
}
]
},
"cats": [
{
"name": "c1",
"val": 10245,
"sens": [
{
"val": "mmm",
"els": [
{
"start": 25,
"end": 38,
"value": "ccc"
}
],
"score": 810,
"start": 0,
"end": 210
},
...
]
},
...
],
"ecv": {
"ens": [
{
"val": "bbb",
"text": "jjj",
"matches": [
{
"start": 2706,
"end": 2719,
"value": "aaa"
}
],
"properties": [
{
"name": "id",
"value": "0001"
},
{
"name": "uni",
"value": "V"
},
...
]
},
...
],
"rels": [
{
"ens": [
{
"text": "pp",
"start": 0,
"end": 7,
"value": "uuu"
},
{
"type": "rrr",
"start": 25,
"end": 38,
"value": "www"
}
],
"act": {
"name": "rtr",
"type": "fff",
"start": 122,
"end": 125
},
"sens": {
"value": "ddd"
}
},
...
]
},
"doms": [
{
"value": "yyy",
"fas": [
{
"val": "ccw",
"sens": {
"start": 0,
"end": 210,
"value": "xxx"
},
"els": [
{
"start": 169,
"end": 178,
"value": "bhh"
},
...
],
"ents": [
{
"val": "ents1",
"type": "xxx",
"matches": [
{
"start": 0,
"end": 7,
"value": "bbb"
}
]
},
...
]
},
...
]
},
...
]
}
我用了几个月的MongoDB,所以我认为将整个文档编写到MongoDB集合很简单
我不知道如何设计cassandra模型来存储json
有人能给我一个开始“用卡桑德拉思考”的方法吗
谢谢 需要了解的一点是,Cassandra中没有“一个存储”模型。您有一个传统的ER模型,从中衍生出一个逻辑模型,并结合您的约束和性能需求来获得最终的物理模型。你在cassandra中的表格是最后一种形式,其他形式是“在你的头脑中”或记录的——想法而不是表格。那么,你怎么去那些桌子?你根据你的疑问思考。您的表满足您的查询,因此在不了解访问模式的情况下,无法说明应该如何存储它 Cassandra中的数据存储在分区中。分区由主键中的第一个键标识。分区中的所有行一起存储在一台计算机(和副本)上。如果您的查询命中一个分区,它会很快。如果它命中多个分区(查询中的pk),则速度会变慢。如果它命中所有分区,则速度最慢。但是,如果所有查询都命中一个分区,则会出现热点(一些服务器被大量使用,而另一些服务器处于空闲状态)。这在大型集群中可能很糟糕 在分区内,数据按照集群键(主键中的“其他”键)的顺序进行排序。如果已指定所有以前的群集键,则只能对群集键执行筛选(where)查询。此外,只能对谓词中最后一个聚类键执行范围查询(>,<等)。您还可以创建二级索引,它可以让您查询集群键需求之外的相等条件,尽管它们比较慢,并且是异步更新的 这里有很多复杂之处,而且您可以执行的查询限制要大得多(如果需要考虑性能的话)。所以“cassandra方法”是考虑您的查询模式,然后基于这些模式存储数据。如果您有多种存储模式,请以不同的形式复制相同的信息。没有“一种真正的方式”来存储数据