《七周七数据库》一一1.1 从一个问题开始

简介:

本节书摘来自异步社区出版社《七周七数据库》一书中的第1章,第1.1节,作者: 【美】Eric Redmond,更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.1 从一个问题开始

七周七数据库
本书的核心问题是:哪种数据库或数据库组合最好地解决了你的问题?读完本书,如果你知道如何根据特定需求和手头的资源做出这种选择,我们会很高兴。

但要回答这个问题,你需要了解你的选择。为此,我们将带你深入这7个数据库,揭示精华,并指出瑕疵。你将亲手尝试CRUD操作,发挥你使用的模式的力量,并找到下面这些问题的答案:

● 这是什么类型的数据库?数据库分为各种类型,例如,关系型、键-值型、多列型、面向文档型和图型。流行的数据库(包括本书中介绍的)一般可以划分为这几大类型。你将了解每种类型的数据库,以及它们最适合的各种问题。我们对本书涉及的数据库精心挑选,以覆盖这些类型,包括一个关系数据库(Postgres),两个键-值存储数据库(Riak和Redis),一个面向列的数据库(HBase),两个面向文档的数据库(MongoDB和CouchDB),以及一个图数据库(Neo4j)。

● 驱动力是什么?数据库不是凭空产生的。它们是为了解决实际使用中提出的问题。在RDBMS(关系数据库管理系统)出现的环境中,数据库查询的灵活性比灵活的模式更重要。另一方面,建立面向列的数据库是为了适于存储跨多机的大量数据,而数据之间的关系退居次要地位。我们将介绍使用每个数据库的场景和相关的例子。

● 如何与数据库交互?数据库往往支持多种连接选项。只要某个数据库有交互式的命令行界面,我们会首先使用它,之后再介绍其他方法。如果需要编程,我们主要使用Ruby和JavaScript,尽管不时会用到其他几种语言,如PL/pgSQL(Postgres)和Gremlin(Neo4j)。更深入一层,我们将讨论诸如REST(CouchDB和Riak)和Thrift(HBase)协议。第9章将介绍一个更复杂的数据库环境,它由Node.js JavaScript实现联接在一起。

● 每种数据库的独特性体现在哪里?任何数据存储库都支持写入和读回数据。它们在其他的方面彼此大不相同。有些数据库允许对任意字段的查询。有些数据库提供快速索引查找。有些数据库支持自由定义的查询(ad hoc query);而其他的数据库的查询必须先规划。模式是数据库所强制的一个刚性框架,或仅仅是一些随意商定的准则?理解每种数据库的功能和限制,将有助于挑选适合你的工作的数据库。

● 每种数据库的性能如何?这个数据库如何工作?其开销如何?它支持分片吗?复制呢?它是否使用一致散列均匀地分布数据?它将相似的数据放在一起吗?这个数据库为读、写或其他操作做了优化吗?如果你能对优化进行控制,程度如何?

● 每种数据库的可伸缩性如何?可伸缩性与性能相关。没有上下文,谈论可伸缩性一般不会有结论。本书会提供背景知识,你在建立这个上下文时就能提出正确的问题。虽然如何扩展每个数据库的讨论会有意淡化,但在这些章节里,你会发现每种数据存储库是更容易实现横向扩展(MongoDB、Hbase和Riak),还是传统的纵向扩展(Postgres、Neo4j和Redis),或者介于两者之间。

我们的目标不是将某种数据库的新手培养成大师。如果这样做的话,其中任何一个数据库都将充满整本书的篇幅。但最终你应该能够牢牢把握每个数据库的优势,以及它们的不同。

相关文章
|
NoSQL 大数据 数据库
|
存储 关系型数据库 数据库
|
关系型数据库 程序员 数据库
|
15天前
|
SQL 数据可视化 关系型数据库
轻松入门MySQL:深入探究MySQL的ER模型,数据库设计的利器与挑战(22)
轻松入门MySQL:深入探究MySQL的ER模型,数据库设计的利器与挑战(22)
|
15天前
|
存储 关系型数据库 MySQL
轻松入门MySQL:数据库设计之范式规范,优化企业管理系统效率(21)
轻松入门MySQL:数据库设计之范式规范,优化企业管理系统效率(21)