五大流行的数据库模型

第一类关系模型
描述:
关系模型使用记录(由元组组成)进行存储,记录存储在表中,表由架构界定。表中的每个列都有名称和类型,表中的所有记录都要符合表的定义。SQL是专门的查询语言,提供相应的语法查找符合条件的记录,如表联接(Join)。表联接可以基于表之间的关系在多表之间查询记录。
特点:
1.表中的记录可以被创建和删除,记录中的字段也可以单独更新。
2.关系模型数据库通常提供事务处理机制,这为涉及多条记录的自动化处理提供了解决方案。
3.对不同的编程语言而言,表可以被看成数组、记录列表或者结构。表可以使用B树和哈希表进行索引,以应对高性能访问。
代表:
oracle、db2、sqlserver、mysql等

第二类键值存储(KV系统)
描述:
以Key-value的形式存储,对不同的编程语言而言,键值存储类似于哈希表。对此,不同的编程语言有不同的名字(如,Java称之为“HashMap”,Perl称之为“hash”,Python称之为“dict”,PHP称之为“associative array”),C++则称之为“boost::unordered_map<...>”。
键值存储支持键上自有的隐式索引。键值存储看起来好像不太有用,但却可以在“值”上存储大量信息。“值”可以是一个XML文档,一个JSON对象,或者其它任何序列化形式。
特点:
1.键值存储提供了基于键对值的访问方式。
2.键值对可以被创建或删除,与键相关联的值可以被更新。
3.键值存储一般不提供事务处理机制。
4.键值存储引擎并不在意“值”的内部结构,它依赖客户端对“值”进行解释和管理。
代表:
redis、Memcached等

第三类文档存储
描述:
文档存储支持对结构化数据的访问,不同于关系模型的是,文档存储没有强制的架构。事实上,文档存储以封包键值对的方式进行存储。在这种情况下,应用对要检索的封包采取一些约定,或者利用存储引擎的能力将不同的文档划分成不同的集合,以管理数据。支持二级索引,允许对任意字段进行高效查询。支持文档嵌套存储的能力,使得查询语言具有搜索嵌套对象的能力,
特点:
1.文档存储模型支持嵌套结构。例如,文档存储模型支持XML和JSON文档,字段的“值”又可以嵌套存储其它文档。文档存储模型也支持数组和列值键。
2.文档存储关心文档的内部结构。这使得存储引擎可以直接支持二级索引,
代表:
XQuery、MongoDB等

第四类列式存储
描述:
列式存储以流的方式在列中存储所有的数据。对于任何记录,索引都可以快速地获取列上的数据。列式存储支持行检索,但这需要从每个列获取匹配的列值,并重新组成行。
特点:
1.非关系型数据库,一般作为数据仓库存在如:Map-reduce的实现Hadoop的流数据处理效率非常高,列式存储的优点体现的淋漓极致。因此,HBase和Hypertable通常作为非关系型数据仓库,为Map-reduce进行数据分析提供支持。
2.列上可以存储更复杂的数据。这直接体现在Cassandra中,它引入的“column family”可以被认为是一个“super-column”。
3.列式存储支持行检索。
代表:
HBase、Hypertable和Cassandra等

第五类图形数据库
描述:
图形数据库存储顶点和边的信息,有的支持添加注释。图形数据库可用于对事物建模,如社交图谱、真实世界的各种对象。IMDB(Internet Movie Database)站点的内容就组成了一幅复杂的图像,演员与电影彼此交织在一起。图形数据库的查询语言一般用于查找图形中端点的路径,或端点之间路径的属性。
特点:
1.查询一般是查询端点之间的路径,类似数据结构中的图。
2.适用于数据库中采用图的地方。
代表:
Neo4j

猜你喜欢

转载自snv.iteye.com/blog/1844130