七周七数据库一

很长一段时间都是用有道云笔记,没有进行分享,才发现原来回头看看过去的笔记有时可以少走错误,最近会将笔记中的内容逐渐整理处理出来。

最近借了很多书,就从书摘总结开始吧。

今天介绍的这本书是《七周七数据库》

它们分别是关系数据库 Postgres

两个键-值 存储数据库 Riak和Redis

一个面向列数据库 HBase

两个面向文档的数据库 MongoDB和CouchDB

一个图数据库Neo4j

一、关系型数据库

Relational DataBase Management System, RDBMS

这部分的代表是 MySQL、H2、HSQLDB、SQLite、PostgreSQL

以集合理论为基础,实现具有行和列的二维表,与RDBMS交互的标准方法是使用结构化查询语言(Structured Query Language,SQL)编写查询,

它的数据值类型有:

数字、字符串、日期、未解释的二进制对象或其它类型

表可以联接并转化为新的更复杂的表。

数据的基础是集合理论。

二、键值数据库

Key-Value KV

顾名思义,KV存储库将键与值配对,类似于所有流行编程语言中的映射,或哈希表,如果你将文件的路径视为键而将文件内容视为值,文件系统也可以看成是键-值存储库。

比如Riak,不仅仅是一个键-值 存储库,它从一开始就支持HTTP和REST等Web方式,实现亚马逊Dynamo原理。关于Dynamo是什么,读者可以见:

Amazon的架构是一个完全的分布式去中心化的,存储也做到了分布式:

http://www.allthingsdistributed.com/files/amazon-dynamo-sosp2007.pdf

Dynamo: Amazon’s Highly Available Key-value Store

Riak

Riak的值可以是任何内容,从纯文本到XML到图像数据,键之间的关系由link命名结构处理,它是第一个通过mapreduce支持高级查询的数据库。

Redis

Redis提供复杂的数据类型,如有序集合和哈希,以及基本消息模式,它是查询机制最健壮的KV存储库之一。在写入磁盘之前先写入内存缓存,因此性能惊人,

代价是在出现硬件故障的情况下,增加了数据丢失的风险,因此适用于缓存非关键数据,或作为消息代理。

三、列型数据库

三种最流行的是HBase、Casandra、Hypertable

列型数据库将给定的列放在一起,添加列很简单,并且是逐行完成的,每一行可以有不同的列或完全没有。

允许表是稀疏的,不会产生空值得存储成本

HBase

在所有非关系数据库中,这个面向列的数据库与关系模型最为相似,简历在Hadoop上,其设计目标是在常用硬件的集群上横向伸缩,支持版本控制盒压缩,

在“大数据”世界上,显得与众不同。

四、文档型数据库

它存储的就是文档,文档如同哈希,具有独一无二的标识符ID字段和值,值可以是任何类型,包括更多的哈希,文档可以包含嵌套的结构。

MongoDB

Mongo是从单词Humongous中提取的,Humongous就是巨大无比的意思。它的设计目标是支持巨大的数据,提供一些原子读写操作(如递增一个值)

利用JavaScript作为查询语言,支持简单的查询和复杂的mapreduce工作。

CouchDB

目标是各种部署场景,从数据中心到桌面到智能手机,用Erlang编写(可见《七周七语言》),它的数据文件几乎不可摧毁,原生查询语言为JavaScript,

视图包括mapreduce函数。

五、图数据库

目前最流行的图数据库Neo4j

图数据库善于处理高度互联的数据,包含节点及节点之间的关系,节点和关系可以有一些属性,用来存储数据,图数据库真正实力是按照关系遍历节点,

图数据库经常用在社交网络应用中,它们应灵活性而受到关注

总结,目前使用单一的数据库仍然很常见,但是随着时间推移,流失的做法是同时使用几种数据库,利用它们各自的长处。

任何一种特定策略的数据库都不可能大获全胜,在未来,我们将看到越来越多的专用数据库

    原文作者:free_lock
    原文地址: https://blog.csdn.net/dudubird90/article/details/25118133
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞