键值存储和关系表是否可以相互转换?

问题描述 投票:-1回答:1
  1. 可以将键值存储转换为关系表,其中只有两列,表的主键是键值存储的“键”吗?
  2. 是否可以将关系表转换为键值存储,其中键是主键,值是表中的其他列?
  3. 例如,Spanner是一个列式数据库。从https://research.google.com/archive/spanner-osdi2012.pdf,为什么Spanner可以被视为一个键值存储,而不是关系存储?我不太明白“行必须有名称。更确切地说,每个表都需要有一个有序的一个或多个主键列” Spanner的数据模型不是纯粹的关系,因为行必须有名称。更确切地说,每个表都需要具有一个或多个主键列的有序集。此要求是Spanner仍然看起来像键值存储的地方:主键形成行的名称,每个表定义从主键列到非主键列的映射。只有在为行的键定义了某个值(即使它为NULL)时,才存在行。强制使用此结构很有用,因为它允许应用程序通过选择键来控制数据位置。
relational-database key-value-store google-cloud-spanner
1个回答
1
投票

回复:3,论文的断言是,斯潘纳的数据模型在最严格意义上不能被认为是“关系”,因为关系模型没有行名称(即主键)的概念。在Relational model中,Relation被定义为一组n元元组。这意味着按定义的关系不能有重复的行,也不能对其行进行排序(一个集合不能有重复的元素,也不能在其元素之间定义任何顺序)。因此,在Relational数据模型中,行名称为'主键'不需要标识一行(整行基本上是主键)而Spanner需要每个表(RDBMS对“关系”的理论概念的近似)要么具有唯一的主键,要么只有一行。

具有“行名”或“键”的要求是键值存储的特征,因此在这种意义上,Spanner可以被认为是键值存储。

© www.soinside.com 2019 - 2024. All rights reserved.