所以,我一直在使用Cassandra,而数据库的架构设计方式对我来说相当不寻常。事实上,我只是没有足够的知识来决定这是不是一个好的设计,因为我是这个整体大数据的新手。
这是一个简化:
clientid_TableName
。由于Cassandra的分布式特性,我绝不会认为需要这样的“手动”数据划分,甚至有益。
这个单一的应用程序将拥有数十个键空间,并且可能有数千个表每键空间。这不会对性能产生负面影响吗?
我给出的印象是,此设计允许更均匀地传播数据,从而在单个表中进行搜索时导致更少的性能影响。这对我来说没有多大意义,但我没有任何理由来反驳它,因为我对Cassandra的经验以及所谓的大数据设计充其量只是非常有限。我能真正想到的唯一好处是每个供应商都有不同的键空间设置。但我认为这不会超过任何增加的复杂性。
简而言之,这是一个好主意吗?
答案 0 :(得分:1)
首先,当您从RDBMS迁移到Cassandra时,您可能不得不重新设计ERD,并且在大多数情况下,移动标准和规范化架构是一个非常糟糕的决定。现在您只想将现有架构移动到Cassandra。
您为每个供应商等工作流创建了所有这些表。你需要理解为什么你这样做,如果你在Cassandra需要它。一般来说,你可以拥有许多表和许多键空间(有限制,但它们很高)但可能根本不适合Cassandra建模。
在Cassandra中,您应该根据查询构建表 而不是实体,对象,关系等......数据复制不是一个问题,而是需要在性能和存储之间进行权衡。
我建议您从Datastax学习Cassandra中的数据建模课程。这是一个很棒的课程,它完全免费::