Database GCP中BigTable中的columnfamily与关系数据库中的列有何关系
我正在尝试将当前在关系数据库中的表迁移到BigTable。 假设该表当前具有以下结构: 表:消息 栏目:Database GCP中BigTable中的columnfamily与关系数据库中的列有何关系,database,google-cloud-platform,google-cloud-bigtable,bigtable,Database,Google Cloud Platform,Google Cloud Bigtable,Bigtable,我正在尝试将当前在关系数据库中的表迁移到BigTable。 假设该表当前具有以下结构: 表:消息 栏目: 消息id 信息文本 消息时间戳 如何在BigTable中创建类似的表? 从文档中可以看到,BigTable使用ColumnFamily。ColumnFamily是否等同于关系数据库中的列?BigTable在许多方面不同于关系数据库系统 关于数据库结构,BigTable应该被视为一个宽列的NoSQL数据库 基本上,每个记录都由一行表示,对于这一行,您可以提供任意数量的名称-值对 此行具有以
- 消息id
- 信息文本
- 消息时间戳
从文档中可以看到,BigTable使用ColumnFamily。ColumnFamily是否等同于关系数据库中的列?BigTable在许多方面不同于关系数据库系统 关于数据库结构,BigTable应该被视为一个宽列的NoSQL数据库 基本上,每个记录都由一行表示,对于这一行,您可以提供任意数量的名称-值对 此行具有以下特征 行键
- 每一行都由一个行键进行单音识别。它类似于关系数据库中的主键。该字段由系统按字典顺序存储,是表中唯一的索引信息
- 在构造此键时,您可以选择单个字段或组合多个字段,并用
或任何其他分隔符分隔 - 此键的构造是构造表时要考虑的最重要方面。你必须考虑如何查询这些信息。除此之外,请记住以下几点(始终记住词典顺序):
- 通过连接字段定义前缀,使您能够高效地获取信息。BigTable允许和您扫描以某个前缀开头的信息
- 相关的,以一种允许您将公共信息(例如,在来自某个来源的所有消息中)存储在一起的方式对密钥进行建模,以便以更高效的方式获取
- 同时,以最大化BigTable集群中不同节点之间的分散性和负载平衡的方式定义键
- 与行关联的信息按列族组织。它与关系数据库中的任何概念都没有对应关系
- 列族允许您粘合多个相关字段和列
- 首先需要定义柱族
- 列将存储实际值。它在某种意义上类似于关系数据库中的列
- 不同的行可以有不同的列。BigTable将稀疏地存储信息,如果不为行提供值,它将不占用空间
- BigTable是一个三维数据库:对于每个记录,除了实际值之外,还存储一个时间戳
这将生成行键,例如,考虑消息是从ID为代码的设备发送的MT43/COD>:
MT43#1330516800#1242635
请按照@norbjd的建议,参阅相关文章,以获得对这些概念的深入解释
需要注意的与关系数据库的一个重要区别是:BigTable仅提供原子单行事务,如果使用单集群路由,则提供原子单行事务
例如,请参见:BigTable在许多方面不同于关系数据库系统 关于数据库结构,BigTable应该被视为一个宽列的NoSQL数据库 基本上,每个记录都由一行表示,对于这一行,您可以提供任意数量的名称-值对 此行具有以下特征 行键
- 每一行都由一个行键进行单音识别。它类似于关系数据库中的主键。该字段由系统按字典顺序存储,是表中唯一的索引信息
- 在构造此键时,您可以选择单个字段或组合多个字段,并用
或任何其他分隔符分隔 - 此键的构造是构造表时要考虑的最重要方面。你必须考虑如何查询这些信息。除此之外,请记住以下几点(始终记住词典顺序):
- 通过连接字段定义前缀,使您能够高效地获取信息。BigTable允许和您扫描以某个前缀开头的信息
- 相关的,以一种允许您将公共信息(例如,在来自某个来源的所有消息中)存储在一起的方式对密钥进行建模,以便以更高效的方式获取
- 同时,以最大化BigTable集群中不同节点之间的分散性和负载平衡的方式定义键
- 与行关联的信息按列族组织。它与关系数据库中的任何概念都没有对应关系
- 列族允许您粘合多个相关字段和列
- 首先需要定义柱族
- 列将存储实际值。它在某种意义上类似于关系数据库中的列
- 对于不同的ro,可以有不同的列