1

我需要为测试系统实现一个数据库。它旨在存储测试数据以供将来进行统计分析。它必须基于 Cassandra。

我设计了一个模式,但由于这是我第一次尝试 NoSQL 设计,我想得到一些反馈。

我将首先描述我希望保存的数据,然后描述两个基本查询,最后介绍我建议的设计。

我打算使用 Cassandra 1.1,所以我尝试在我的设计中使用 Composite Columns,但是,请随意建议超级列或任何看起来正确的东西。

数据:

我们正在测试的基本单位是外星人。每个外星人都有一个唯一的 ID。每个外星人都有许多身体部位。此外,每个外星人都是外星人家庭的一部分。这些家庭有唯一的名称。

当我们运行测试时,我们在外星人群体的几个身体部位上运行它。例如,我们对几个家庭进行测试,测试他们所有的眼睛和嘴巴。

有几种测试。我们使用它自己的测试唯一 ID 记录每个测试。

当我们进行测试时,我们每隔几分钟对所有相关的外星人身体部位进行采样并收集一些统计数据。

基本查询:

  1. 每个家庭或外星人或独特的身体部位 - 它参与了哪些测试。
  2. 每个测试 ID - 哪些家庭或外星人或独特的身体部位参与其中。
  3. 未来,所有数据的统计分析...

我的设计尝试:

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 的真正初学者,因此我将不胜感激。

感谢您的时间。

4

1 回答 1

0

您的数据集最终会有多大的行数?我们使用 PlayOrm 将关系数据存储在 noSQL 中,有时效果很好,表可以进入 X 百万行。如果您要进入数十亿/万亿行,那么我们使用 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
    }  
}

这里不应该更宽吗?其中 testid 是行键,并且您有许多其他数据的复合名称?并且宽行不应大于 1000 万列,因此请确保没有测试数据行会超过该列。所以可能是宽排

testid -> alienId:fk23=null, alienId:fk25=null, etc. 温度=30, size=5

后来,迪恩

于 2012-10-31T12:29:28.313 回答