有人请帮助我了解Hbase如何在内部工作。
列的值是否可以引用另一个表的键?
例如:
假设我有一个带有subjectId作为外键的Student表,并且Subject表将id作为主键,那么表示将如何? 我们如何将学生和学科一起映射?
答案 0 :(得分:2)
有人请帮助我了解HBase如何在内部工作。
这是一个非常大的东西,完全无法解释。有关详细信息,请参阅this链接。
列的值是否可以引用另一个表的键?
列绝对可以将另一行的键存储在同一个表或另一个表中。您必须从第一个表中读取此值,然后转到第二个表以获取行(如果两个行都在不同的表中)。
例如: 假设我有一个带有subjectId作为外键的Student表,并且Subject表将id作为主键,那么表示将如何?我们如何将学生和主题一起映射?
看起来你误解了HBase。它不像传统的RDBMS那样工作。使用HBase时,没有主键,复合键或外键的概念。您可以将rowkey视为主键。行根据这些行键按字典顺序排序。
回到你的问题。您的表中可以有2个列系列,1个用于学生,另一个用于主题。通过这种方式,您可以访问任何内容,而无需从一个表移动到另一个表。
HTH
回应你的意见:
您可以拥有一个只有一个列族的表,它将包含所有列。像这样:
或者,如果您希望将这两种数据分开,您可以拥有1个包含2个列系列的表,1个用于学生相关数据,1个用于主题相关数据,如下所示:
使用 studentID 作为rowkey,因为它对每个学生都是唯一的。现在,如果你想获取:
<强> 1。让所有申请了主题数据科学的学生 使用columnvalue过滤器来实现此目的。
<强> 1。列出特定学生的所有科目:这很简单。只是了解那一行。
在学生申请时,继续为每个科目添加专栏。