NoSQL建模技术 博客分类: nosql 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建模技术 博客分类: nosql Nosql建模
-
NoSql介绍 博客分类: NoSql NoSqldatabase数据模型
-
Redis的Cluster集群搭建(几个文章网址) 博客分类: NoSql---Redis redisclusternosql分布式数据库
-
Nosql Cassandra study [1] 博客分类: Cassandra CassandraNoSQLFacebookJavaApache
-
Elasticsearch拆分java api生成restful json代码 博客分类: java;nosql;elasticsearch javanosqlelasticsearch
-
NOSQL之旅-----HBase 博客分类: hadoop HBaseNoSQLCassandraRedisMongoDB
-
开始学习和总结NoSQL 博客分类: NoSQL相关 NoSQLCassandraSVNTwitterCache
-
NoSQL数据库,何解要用非关系数据库? 博客分类: Unix类 NoSQL数据结构CassandraRedisMongoDB
-
Digg网站放弃MySQL 迁移至NoSQL 博客分类: MySQL MySQLNoSQLCassandraLinuxPython
-
Elasticsearch拆分java api生成restful json代码 博客分类: java;nosql;elasticsearch javanosqlelasticsearch