NoSQL建模技术

作者:Jason204 | 可以转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明

 

网址:http://jason204.iteye.com/admin/blogs/1676984

 

1. 背景

 

NOSQL家族包括KeyValue、BigTable-style、Document、Full-Text Search、Graph等数据库,如下图所示。


解决类似Bigtable/Hbase/Cassandra等列存储NOSQL的建模问题,下文介绍NOSQL的建模技术。(下文所提及的NOSQL默认为列存储NOSQL)

 

2. NOSQL建模

 

2.1 非规范化(Denormalization)

 

简单地说,在3NF建模中,那就是数据冗余、重复。解决查询数据量、处理复杂性(多Join关联)的问题。

 

2.2 复制(Duplication)

 

2.3 Intelligent 键(Keys)

 

Intelligent键,是由查询条件的属性列组合,以便查询。

 

2.4 聚合(Aggregates)

 

Nosql具有软模式性(soft-schema),也就是列族(column families),列( columns), 和时间戳( timestamped versions)。软模式允许复杂的结构(内嵌实体)和特殊实体具有不同结构,one-to-many关系最小化利用内嵌实体,异构实体差异利用公共表表达。举例如下图,利用单一聚合表(product)建模产品的所有类型和属性。


 

2.5 应用方面的关联

 

在Nosql中,很少支持关联特性,经常在模型设计阶段被处理,利用非规范化、聚合(内嵌实体)避免关联,而不像RDBMS在执行阶段处理。但是下面情况是无法避免的,而且必须在应用层处理。

 

· Many-to-many

 

· 由于内嵌实体常变动,聚合不能应用。例如,信息系统含有内嵌信息实体的用户实体(左图,Static one-to-many),信息实体经常Append,建议剥离信息实体,然后在查询阶段再关联用户实体(右图,Dynamic-Many-to-Many)。



 

2.6 索引表(Index Table)

 

创建和维护Key(用于访问模式)的特殊表。例如,主表存储用户帐户,通过user ID访问;一条查询,通过特定的城市返回所有用户,通过维护城市为关键字的特殊表来实现。



3. 参考文献

 

Cloud Data Structure Diagramming Techniques and Design Patterns

 

NoSQL Data Modeling Techniques