jason204 发表于 2013-1-25 21:01:06

NoSQL建模技术

作者:Jason204 | 可以转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明
 
网址:http://jason204.iteye.com/admin/blogs/1676984
 
1. 背景
 
NOSQL家族包括KeyValue、BigTable-style、Document、Full-Text Search、Graph等数据库,如下图所示。

http://dl.iteye.com/upload/attachment/0073/7010/a9a6ded5-7dc9-30b6-8172-4e60a54ff892.png
解决类似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)建模产品的所有类型和属性。

http://dl.iteye.com/upload/attachment/0073/7014/e435e470-08ac-33e5-ab18-43a6e9803513.jpg
 
2.5 应用方面的关联
 
在Nosql中,很少支持关联特性,经常在模型设计阶段被处理,利用非规范化、聚合(内嵌实体)避免关联,而不像RDBMS在执行阶段处理。但是下面情况是无法避免的,而且必须在应用层处理。
 
· Many-to-many
 
· 由于内嵌实体常变动,聚合不能应用。例如,信息系统含有内嵌信息实体的用户实体(左图,Static one-to-many),信息实体经常Append,建议剥离信息实体,然后在查询阶段再关联用户实体(右图,Dynamic-Many-to-Many)。

http://dl.iteye.com/upload/attachment/0073/7012/fdeb607f-a663-39a4-a280-0cdb8cc6ce77.png

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

http://dl.iteye.com/upload/attachment/0073/7016/8fcb9be5-3fcc-329d-a999-fb3f9e330c3d.png

3. 参考文献
 
Cloud Data Structure Diagramming Techniques and Design Patterns
 
NoSQL Data Modeling Techniques
页: [1]
查看完整版本: NoSQL建模技术