我需要为测试系统实现数据库。它旨在存储测试数据以进行未来的统计分析。它具有基于Cassandra的。
我已经设计了一个模式,但是由于这是我第一次尝试NOSQL设计,所以我想获得一些反馈。
我将首先描述我希望保存的数据,然后描述两个基本查询,最后介绍我建议的设计。
我打算使用Cassandra 1.1,因此我尝试在设计中使用复合列,但是,请随时建议超级柱或看起来正确的内容。
数据:
我们正在测试的基本单元是外星人。每个外星人都有一个独特的ID。每个外星人都有许多机体。而且,每个外星人都是外星人家族的一部分。家庭有独特的名字。
进行测试时,我们将其运行在外星人组的几个Bodyparts上。例如,我们带一些家庭并在他们的所有眼睛和嘴巴上进行测试。
有几种测试。我们将每个测试都使用其自己的测试独特ID记录。
当我们进行测试时,我们每隔几分钟就采样了所有相关外星人的机构并收集一些统计数据。
基本查询:
- 根据每个家庭,外星人或独特的Bodypart - 测试它参与的。
- 根据每个测试ID-哪些家庭或外星人或独特的身体参与其中。
- 将来,所有数据的统计分析...
我的设计尝试:
GeneralAliensData : { // Column Family - general data on aliens.
[FamilyID][AlienID][Bodypart] : { //Composite Columns as Row keys
Race: 'Blurgons' // column
Shoesize: 5 // column
Favorite probe: 'fun, toy' // column
}
}
TestsData : { // Column Family - we sample each test every couple of minutes...
[TestID][AlienID][Bodypart][MinutesFromTestStart]: { //Composite Columns as Rowkeys
Temperture: 30 // column
Size: 5 // column
}
}
BodypartTestParticipation : { // Column Family - all the tests a unique bodypart passed...
[FamilyID][AlienID][Bodypart]: { //Composite Columns as Row keys
TestID: 105 // column
TestID: 564 // column
...
}
}
就是这样。由于我是数据库中的真正初学者,尤其是Cassandra,因此我感谢任何输入。
谢谢您的时间。
您的数据集最终会排入行?我们使用Playorm将关系数据存储在NOSQL中,这有时很棒,而且桌子可以进入数百万行。如果您要进入数十亿/万亿的行,那么我们使用Playorm来分区相同的数据,以使其扩展。
那么,您需要扩展能力吗?您可能需要查看宽行图案(Playorm大量利用它)。宽行可以帮助您索引索引,以获取非常快速的查找。
我真的没有得到你的东西
TestsData : { // Column Family - we sample each test every couple of minutes...
[TestID][AlienID][Bodypart][MinutesFromTestStart]: { //Composite Columns as Rowkeys
Temperture: 30 // column
Size: 5 // column
}
}
这里不应该在这里更宽吗?行键在哪里,您有许多其他数据的复合名称?而且宽行不得大于1000万列,因此请确保不会对此进行测试数据行。因此,宽行可能是
testid-> alienid:fk23 = null,alienid:fk25 = null等。
以后,院长