Cassandra数据库数据模型:批评我的架构设计

时间:2012-10-29 23:41:52

标签: database-design nosql cassandra database-schema

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

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

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

我打算使用Cassandra 1.1,所以我尝试在我的设计中使用复合色谱柱,但是,可以随意提出超级列或者看似正确的内容。

数据:

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

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

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

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

基本查询:

  1. 每个家庭或外星人或独特的身体部位 - 参加的测试。
  2. 每个测试ID - 哪个家庭或外国人或独特的身体部分参与其中。
  3. 将来,所有数据的统计分析......
  4. 我的设计尝试:

    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,我很感激任何意见。

    感谢您的时间。

1 个答案:

答案 0 :(得分:0)

您的数据集最终会有多大?我们使用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
    }  
}

这不应该更宽一点吗? testid是行键,你有其他数据的许多复合名称?宽行不应超过1000万列,因此请确保没有测试数据行。所以广泛的行可能是

testid - > alienId:fk23 = null,alienId:fk25 = null等等temperture = 30,size = 5

后, 迪安