我们设计了Hbase架构,这是一种RDBMS风格,但业务需求迫使我们这样做。
假设我们有学生实体和科目实体,学生和科目之间有一对多的映射
学生实体具有以下属性
名称, 学校, 地址, 国家
主题具有以下属性
主旨名称, YearStudied, Subjectdescription, 通过/失败, 得分
首先,我们在学生实体内嵌套了主题,其中学生信息为每个主题重复。
类似rk subjectid,CF:学生(有学生专栏),CF:主题(主题栏目
使用这种方法对学生属性的任何更新都是一个问题,因为必须在所有行中应用这些属性才能识别它们。
所以我们创建了两个单独的表学生和科目,学生中的一列将保留该学生的主题表的所有行键。
我想知道这种设计对性能有何影响。
任何人都可以提出更好的设计选择 - 我们必须同时对学生和科目进行读写操作,并且必须使用HBase!
提前感谢您的帮助。
答案 0 :(得分:0)
如果我错了,你的架构设计似乎有问题吗?
如果在学生表中更新和更新,您将如何识别要修改的主题。
假设:
StudKey1:CF1:StdName,CF1:科隆,CF2:SubjectIds,CF2.Coln
现在,如果您需要修改任何特定主题ID的详细信息,请参阅StudKey1的Sub_123,您将如何识别要修改的主题。 除非您在主题表中有复合键,例如 StudKey_SubKey 。现在如果您需要再添加一个主题呢?
现在有几个解决方案可能会顺从您的用例。 您可以尝试以下方式:
有3个表
将密钥设为:
这样您就可以保留有关学生和主题的所有信息。如果您需要修改有关学生+主题对的任何主题信息,您可以通过触发该学生ID主题ID组合的更新来轻松完成