- 1
- 0
- 约2.88万字
- 约 16页
- 2015-09-22 发布于安徽
- 举报
[译] NoSQL生态系统 - NoSQLFan - 关注NoSQL相关技术、新闻 /html/2171.html
与本书中提到的其它主题不同,NoSQL不是一个工具,而是由一些具有互补性和竞争性的工具组
成的一个概念,是一个生态圈。这些被称作NoSQL的工具,在存储数据的方式上,提供了一种与
基于SQL语言的关系型数据截然不同的思路。要想了解NoSQL,我们必须先了解现有的这些工
具,去理解那些让他们开拓出新的存储领域的设计思路。
如果你正在考虑使用NoSQL,你应该会马上发现你有很多种选择。NoSQL系统舍弃了许了传统
关系型数据库的方便之处,而把一些通常由关系型数据库本身来完成的任务交给了应用层来完
成。这需要开发人员更深入的去了解存储系统的架构和具体实现。
在给NoSQL下定义之前,我们先来试着从它的名字上做一下解读,顾名思义,NoSQL系统的数
据操作接口应该是非SQL类型的。但在NoSQL社区,NoSQL被赋予了更具有包容性的含义,其
意为Not Only SQL,即NoSQL提供了一种与传统关系型数据库不太一样的存储模式,这为开发
者提供了在关系型数据库之外的另一种选择。有时候你可能会完全用NoSQL数据库代替关系型数
据加,但你也可以同时使用关系型和非关系型存储来解决具体的问题。
在进入NoSQL的大门之前,我们先来看看哪些场景下使用关系型数据库更合适,哪些使用
NoSQL更合适。
13.1.1 SQL及其关联型结构
SQL是一种任务描述性的查询语言,所谓任务描述性的查询语言,就是说它只描述他需要系统做
什么,而不告诉系统如何去做。例如:查出39号员工的信息,查出员工的名字和电话,只查找做
会计工作的员工信息,计算出每个部门的员工总数,或者是对员工表和经理表做一个联合查询。
简单的说,SQL让我们可以直接向数据库提出上述问题而不必考虑数据是如何在磁盘上存储的,
使用哪些索引来查询数据,或者说用哪种算法来处理数据。在关系型数据库中有一个重要的组
件,叫做查询优化器,正是它来推算用哪种操作方式能够更快的完成操作。查询优化器通常比一
般的数据库用户更聪明,但是有时候由于没有充足的信息或者系统模型过于简单,也会导致查询
优化器不能得出最有效的操作方式。
作为目前应用最广的数据库系统,关系型数据库系统以其关联型的数据模型而命名。在关联型的
数据模型中,在现实世界中的不同类型的个体被存储在不同的表里。比如有一个专门存员工的员
工表,有一个专门存部门的部门表。每一行数据又包含多个列,比如员工表里可能包含了员工
号,员工工资,生日以及姓名等,这些信息项被存在员工表中的某一列中。
关联型的模型与SQL是紧密想连的。简单的查询操作,比如查询符合某个条件的所有行
(例:employeeid = 3, 或者 salary $20000)。更复杂一些的任务会让数据库做一些额外的
工作,比如跨表的联合查询(例:查出3号员的部门名称是什么)。一些复杂的查询,比如统计操
作(例:算出所有员工的平均工资),甚至可能会导致全表扫描。
关联型的数据模型定义了高度结构化的数据结构,以及对这些结构之间关系的严格定义。在这样
的数据模型上执行的查询操作会比较局限,而且可能会导致复杂的数据遍历操作。数据结构的复
第1页 共16页 2011-10-11 16:30
[译] NoSQL生态系统 - NoSQLFan - 关注NoSQL相关技术、新闻 /html/2171.html
杂性及查询的复杂性,会导致系统产生如下的一些限制:
复杂导致不确定性。使用SQL的一个问题就是计算某个查询的代价或者产生的负载几乎是不
可能的。使用简单的查询语言可能会导致应用层的逻辑更复杂,但是这样可以将存储系统的
工作简单化,让它只需要响应一些简单的请求。
对一个问题建模有很多种方式。其中关联型的数据模型是非常严格的一种:表结构的定义规
定了表中每一行数
原创力文档

文档评论(0)