数据库浅析

1、关系型数据库,RDBMS
关系型数据库是以集合理论为基础的系统,实现未具有行和列的二维表。
与RDBMS交互的标准方法,是用结构化查询语言 SQL编写查询。
数据值具有类型,并且系统强制使用类型
更重要的是,表可以转化为新的、更复杂的表。
其中包括许多开源数据库可供选择,包括 MySQL、H2、HSQLDB、SQLite,当然,还有PostgreSQL。

2、键-值数据库
键-值存储是最简单的模型。顾名思义,KV存储库将键与值配对,类似于映射或是哈希表。
如果将文件路径看为键,文件内容作为值,文件系统也可以看成是键-值存储库。比较受欢迎的产品包括memcached(及相关的memcachedb和membase)、Voldemort,当然还有Redis和Riak
Riak:Riak不仅仅是一个键-值存储库,它从一开始就支持HTTP和REST等Web方式,它严格实现了亚马逊Dynamo的原理,具有一些高级功能,如解决冲突的向量时钟
Redis:Redis提供复杂的数据类型,如有序集合和哈希,以及基本消息模式,如发布-订阅和阻塞队列。
Redis在写入磁盘之前先写入内存缓存,因此获得了惊人的性能,代价是在出现故障的情况下,增加了数据丢失的风险

3、列型数据库
列型(或面向列的数据库)数据库将来自于一个给定的列的数据存放在一起。相较之下,面向行的数据库将一行的信息保存在一起。在面向列的数据库中添加列是相当简单的,而且是助逐行完成的。每一行可以有一组不停的列,或完全没有,允许表保持稀疏,而不会产生空值的存储成本。

4、文档型数据库
面向文档的数据库存储的就是文档。简而言之,文档就像是哈希,具有一个独一无二的标识符(ID)字段和值,值可能是任何类型,包括更多的哈希。文档可以包含嵌套的结构,因此表现出了高度的灵活性,允许有可变域。该系统对输入的数据很少有限制,只要它满足基本要求,就可以表示为一个文档。在建索引、自由定义的查询、复制、一致性及其他设计决策等等方面
MongoDB:
CouchDB:CouchDB的目标是各种部署场景,从数据中心到桌面,一直到智能手机。CouchDB使用Erlang编写的,具有独特的坚固性。由于它的数据文件几乎不可摧毁,即使是面对间歇性的连接丢失或者硬件故障,CouchDB也仍然能保持高可用性。像Mongo一样,CouchDB的原生查询语言是JavaScript。视图包括Mapreduce函数,它们以文档形式存储并在节点之间复制,像任何其他的数据一样。

5、图数据库
这是一种不太常用的数据库类型,图数据库善于处理高度互联的数据。图数据库包含节点及节点之间的关系。节点和关系可以有一些属性(一些键值对),用来存储数据。图数据库的真正实力是按照关系遍历节点。

你可能感兴趣的:(数据库浅析)