第六章 数据库设计基础知识

6.1数据库基本概念

数据(Data)是描述事物的符号记录,它具有多种表现形式,可以是文字、图形、图像、声音和语言等。
信息(Information)是现实世界事物的存在方式或状态的反映。信息具有可感知、可存储、可加工、可传递和可再生等自然属性。
数据是信息的符号表示,而信息是具有特定释义和意义的数据。
数据库系统(DataBase System,DBS)是一个采用了数据库技术,有组织地、动态地存储大量相关联数据,从而方便多用户访问的计算机系统。广义上讲,DBS包括了数据库管理系统(DataBase Management System,DBMS)。
数据库(DataBase,DB)是统一管理的、长期储存在计算机内的,有组织的相关数据的集合。其特点是数据间联系密切、冗余度小、独立性较高、易扩展,并且可为各类用户共享。
DBMS是数据库系统的核心软件,是由一组相互关联的数据集合和一组用以访问这些数据的软件组成。其主要功能包括数据定义功能、数据操纵功能、数据库的运行管理和数据库的建立与维护。

6.1.1数据库技术的发展

数据管理技术的发展经历了3个阶段:人工管理、文件系统和数据库系统阶段。

1.人工管理阶段

特点:
(1)数据量较少。
(2)数据不保存。
(3)没有软件系统对数据进行管理。
手工处理数据有两个缺点:
(1)应用程序与数据之间的依赖性太强,不相互独立。
(2)数据组和数据组之间可能有许多重复数据,造成数据冗余。

2.文件系统阶段

特点:
(1)数据可以长期保留,数据的逻辑结构和物理结构有了区别,程序可以按照文件名称访问文件,不必关心数据的物理位置,由文件系统提供存取方法。
(2)数据不属于某个特定的应用,即应用程序和数据之间不再是直接的对应关系,数据可以重复使用。
(3)文件组织形式的多样化,有索引文件、链接文件和Hash文件等。
文件系统具有如下缺点:
(1)数据冗余(Data Redundancy)。文件与应用程序密切相关,相同的数据集合在不同的应用程序中使用时,经常需要重复定义、重复存储,数据冗余度大。
(2)数据不一致性(Data Inconsistency)。由于相同数据的重复存储,单独管理,同样的数据可能存在于多个不同的文件中,给数据的修改和维护带来难度,容易造成数据的不一致。
(3)数据孤立(Data Isolation),即数据联系弱。由于数据分散在不同的文件中,而这些文件可能具有不同的文件格式,文件之间是孤立的,所以从整体上看文件之间没有反映现实世界事物之间的内在联系,因此很难对数据进行合理的组织以适应不同应用的需要。

3.数据库系统阶段

特点:
(1)采用复杂的数据模型表示数据结构。数据模型不仅描述数据本身的特点,还描述数据之间的联系。数据不再面向某个应用,而是面向整个应用系统。数据冗余明显减少,实现了数据共享
(2)有较高的数据独立性。数据库也是以文件方式存储数据的,但是它是数据的一种更高级的组织形式,在应用程序和数据库之间由DBMS负责数据的存取。DBMS对数据的处理方式和文件系统不同,它把所有应用程序中使用的数据以及数据间的联系汇集在一起,以便于应用程序查询和使用。
数据库系统与文件系统的区别是:数据库对数据的存储是按照同一种数据结构进行的,不同的应用程序都可以直接操作这些数据(即对应用程序的高度独立性)。数据库系统对数据的完整性、一致性和安全性都提供了一套有效的管理手段(即数据的充分共享性)。数据库系统还提供管理和控制数据的各种简单操作命令,容易掌握,使用户编写程序简单(即操作方便性)。

6.1.2数据模型

数据库的基础结构是数据模型,是用来描述数据的一组概念和定义。数据模型的三要素是数据结构、数据操作和数据的约束条件。
(1)数据结构。对象类型的集合,是对系统静态特性的描述。
(2)数据操作。对数据库中各种对象(型)的实例(值)允许执行的操作集合,包括操作及操作规则。
(3)数据的约束条件。是一组完整性规则的集合。

1.层次和网状数据库系统

层次模型采用树形结构表示数据与数据间的联系。上层和下一层类型的联系是1:n联系(包括1:1联系)。
采用网络结构表示数据间联系的数据模型称为网状模型。在网状模型中,允许一个以上的结点无双亲,或者一个结点可以有多于一个的双亲。层次模型是网状模型的一个特例。
层次或网状模型,底层的数据结构均可用图来表示。二者的共同特点如下。
●支持三级模式的体系结构;
●用存取路径来表示数据之间的联系;
●独立的数据定义语言;
●导航的数据操纵语言。

2.关系数据库系统

关系模型中用表格结构表达实体集以及实体集之间的联系,其最大特色是描述的一致性

3.第三代数据库系统

面向对象模型、语义数据模型、XML数据模型、半结构化数据模型等

6.1.3数据库管理系统

DBMS应具有如下几个方面的功能及特征:

1.DBMS功能

1).数据定义
DBMS提供数据定义语言(Data Definition Language,DDL),可以对数据库的结构进行描述,包括外模式、模式和内模式的定义;数据库的完整性定义;安全保密定义,如口令、级别和存取权限等。这些定义存储在数据字典中,是DBMS运行的基本依据。
2).数据库操作
DBMS向用户提供数据操纵语言(Data Manipulation Language,DML),实现对数据库中数据的基本操作,如检索、插入、修改和删除。
3).数据库运行管理
数据库在运行期间,多用户环境下的并发控制、安全性检查和存取控制、完整性检查和执行、运行日志的组织管理、事务管理和自动恢复等都是DBMS的重要组成部分。这些功能可以保证数据库系统的正常运行。
4).数据组织、存储和管理。
DBMS分类组织、存储和管理各种数据,包括数据字典、用户数据和存取路径等。要确定以何种文件结构和存取方式在存储级别上组织这些数据,以提高存取效率。实现数据间的联系、数据组织和存储的基本目标是提高存储空间的利用率。
5).数据库的建立和维护
数据库的建立和维护,包括数据库的初始建立、数据的转换、数据库的转储和恢复、数据库的重组和重构、性能监测和分析等。
6).其他功能
如DBMS与网络中其他软件系统的通信功能,一个DBMS与另一个DBMS或文件系统的数据转换功能等。

2.DBMS的特点

1)数据结构化且统一管理。
2)有较高的数据独立性。
3)数据控制功能。
  • 数据库的安全性(Security)是指保护数据库以防止不合法的使用所造成的数据泄露、更改或破坏。这样,用户只能按规定对数据进行处理,例如,划分了不同的权限,有的用户只有读数据的权限,有的用户有修改数据的权限,用户只能在规定的权限范围内操纵数据库。
  • 数据的完整性(Integrality)是指数据库正确性和相容性,是防止合法用户使用数据库时向数据库加入不符合语义的数据。保证数据库中数据是正确的,避免非法的更新。
  • 并发控制(concurrency control)是指在多用户共享的系统中,许多用户可能同时对同一数据进行操作。DBMS的并发控制子系统负责协调并发事务的执行,保证数据库的完整性不受破坏,避免用户得到不正确的数据。
  • 故障恢复(recovery from failure)。数据库中的常见故障是事务内部故障、系统故障、介质故障及计算机病毒等。故障恢复主要是指恢复数据库本身,即在故障导致数据库状态不一致时,将数据库恢复到某个正确状态或一致状态。恢复的原理非常简单,就是要建立冗余(redundancy)数据。

6.1.4数据库三级模式

三级模式两级映射。

1)视图层(View Level)是最高层次的抽象,描述整个数据库的某个部分的数据。
2)逻辑层(Logical Level)是比物理层更高一层的抽象,描述数据库中存储的数据以及这些数据间存在的关系。
3)物理层(Physical Level)是最低层次的抽象,描述数据在存储器中是如何存储的。

6.2关系数据库

关系模型是关系数据库的基础,由关系数据结构、关系操作集合和关系完整性规则3部分组成。

6.2.1关系数据库基本概念

1.关系的基本术语

1)属性(Attribute):在现实世界中,要描述一个事物常常取若干特征来表示。这些特征称为属性。
2)域(Domain):每个属性的取值范围对应一个值的集合,称为该属性的域。
3)目或度(Degree):目或度指的是一个关系中属性的个数。
4)候选码(Candidate Key):若关系中的某一属性或属性组的值能唯一的标识一个元组,则称该属性或属性组为候选码。
5)主码(Primary Key):或称主键,若一个关系有多个候选码,则选定其中一个作为主码。
6)主属性(Prime Attribute):包含在任何候选码中的属性称为主属性。不包含在任何候选码中的属性称为非主属性(Non-Prime Attribute)。
7)外码(Foreign Key):如果关系模式R中的属性或属性组不是该关系的码,但它是其他关系的码,那么该属性集对关系模式R而言是外码。
8)全码(All-key):关系模型的所有属性组是这个关系模式的候选码,称为全码。
笛卡尔积
参考资源绑定

2.关系数据库模式

3.关系的完整性约束

实体完整性、参照完整性(也称引用完整性)和用户定义完整性。
1)实体完整性(Entity Integrity)。实体完整性规则要求每个数据表都必须有主键,而作为主键的所有字段,其属性必须是唯一且非空值。
2)参照完整性(Referential Integrity)。现实世界中的实体之间往往存在某种联系,在关系模型中实体及实体间的联系是用关系来描述的,这样自然就存在着关系与关系间的引用。
3)用户定义完整性(User Defined Integrity)。就是针对某一具体的关系数据库的约束条
件,反映某一具体应用所涉及的数据必须满足的语义要求,由应用的环境决定。例如,银行的
用户账户规定必须大于等于100000,小于999999。

6.2.2关系运算

关系代数运算符有4类:集合运算符、专门的关系运算符、算术比较符和逻辑运算符。
并:都要; 差(Difference) :R-S=属于R但不属于S的集合; 广义笛卡尔积:不用说了;
投影(Projection) :实际是按条件选择某关系模式中的某列,列也可以用数字表示。
选择(Selection):实际是按条件选择某关系模式中的某条记录。
交(Intersection):既属于R又属于S的元素
连接(Join) :分 为条件连接(θ连接)、等值连接(Equijoin) 及自然连接
1).θ连接 条件连接(θ连接),逻辑上是table之间先做笛卡儿积,再做对应选择操作。
2).等值连接:是θ连接的特例,逻辑上是table之间先做笛卡儿积构成一个新表,在新表中,选择table之间属性值相同的元组,构成最终的表
3).自然连接(Natural Join):逻辑上是table之间先做笛卡儿积构成一个新表,在新表中,选择table之间属性值相同的元组,构成最终的表。
自然连接    =     等值连接    +    去除重复属性组
自然连接是一种特殊的等值连接,自然连接需要去除重复属性,如果没有重复属性那么自然连接就转换为笛卡尔积
除(Division):笛卡尔积的逆运算。
广义投影(Generalized Projection):
注:参考了@Safe network access 这个人图
外连接(Outer Jion):outer join/left join/right join
聚集函数:sum、count、min、max.....

6.2.3关系数据库设计基本理论

函数依赖以及范式参考绑定资源。----关系代数与范式知识补充

6.3数据库设计

6.3.1数据库设计的基本步骤

多年来,人们提出了多种数据库设计方法,多种设计准则和规范。但考虑数据库和应用系 统开发全过程,一般将数据库设计分为如下6个阶段。

6.3.2数据需求分析

数据库设计人员采用一定的辅助工具对应用对象的功能、性能、限制等要求进行科学的分析。
数据需求分析是在项目确定之后,用户和设计人员对数据库应用系统所设计的内容(数据)和功能(行为)的整理和描述,以用户角度认识系统,它是后续开发(逻辑设计、物理设计、应用程序的设计)的基础和依据。
任务:综合各个用户的应用需求,对现实世界要处理的对象(组织、部门和企业等)进行详细调查,了解现行系统概况,确定新系统功能,收集支持目标的基础数据和处理方法。
参与人员:主要是分析人员和用户,两者需要互补,分析人员知道如何分析和设计,用户了解具体业务。
分析和表达用户需求的方法主要:自顶向下和自底向上。
需求分析的重点是调查组织机构情况、调查各部门的业务活动情况、协助用户明确对新系统的各种要求、确定新系统的边界,以此获得用户对系统的如下要求。
信息要求:用户需要保存哪些信息,这些信息要得到什么样的信息,有什么完整性要求等等。
处理要求:要实现什么功能,对保存信息的处理和方式,各种操作处理的频度、相应时间要求、处理方式等以及处理过程中的安全、完整性方面要求等。
系统要求:包括完整性要求、使用方式要求和可扩充性要求

6.3.3概念结构设计

概念结构设计是对信息分析和定义,如视图模型化、视图分析和汇总。对应用对象精确地抽象、概括而形成独立于计算机系统的企业信息模型。描述概念模型的较理想的工具是E-R图。
目标:产生反应系统信息需求的数据库概念结构,即概念模式。概念结构是独立于支持数据库的DBMS和使用的硬件环境的。设计人员从用户角度看待数据及其约束,产生反应用户观点的概念模式,然后把概念模式转为逻辑模式。
概念结构设计最常用ER图。对现实事务抽象认识的3种方法:分类、聚集、概括。
分类:对现实事务按照具有共同特征和行为,定义为一种类型。
聚集:定义某一类型所具有的属性。
概括:由一种已知类型定义新的类型。如超类和子类。
步骤:
1.选择局部应用:
需求分析获得的大量数据分散杂乱,许多应用不同的处理,数据于数据间关联也较为复杂,要最终确定实体、属性、联系,就必须根据数据流图来理清楚。
数据流图是业务从高到低的一级级抽象,不能分太多层级,太细,最好底层每部分对应一个局部应用
2.逐一设计分E-R图
划分好局部应用后,进行局部E-R图设计。其所用到的数据都应该收集在字典中,依照局部应用数据流图,提取字典中数据,使用抽象机制,确定实体、实体的属性、视图标识符及实体间类型及其类型。
3.E-R图合并
局部E-R图设计好后,进行合并,目的在于合并过程中解决分E-R图中相互间存在的冲突、冗余
合并E-R图的冲突:
属性冲突:如同一属性在不同的局部E-R中
命名冲突:相同意义的属性,不同的名称
结构冲突:同一实体在不同的分E-R中有不同的属性
合并后的优化:
实体类型的合并:如1:1和1:* 可合并;冗余属性的消除;冗余联系的消除

6.3.4逻辑结构设计

将抽象的概念模型转化为与选用的DBMS产品所支持的数据模型相符合的逻辑模型,它是物理结构设计的基础。包括模式初始设计、子模式设计、应用程序设计、模式评价以及模式求精。
主要步骤:确定数据模型、将E-R图转换成指定数据模型、确定完整性约束、确定用户视图。
1.E-R图转换为关系模式
   E-R描述的信息世界不适用计算机处理,需转换为关系模式,转换方式:
   1).将E-R图中的实体注意转换为关系模式,实体名对应关系模式名,实体属性转换为关系模式的属性,实体标识符就是关系的码。
   2).E-R图中:1:1通常不需要将其转换为一个独立关系模式,只需要将联系归并到关联的两个实体的任一方,另一方增加一个列是对方的码。---主外键
1:N通常也不需要转换为一个独立关系,只需将联系归并到关联的多方,多方实体增加1方的码。
M:N只能转换为一个独立关系模式,名称是联系名称,属性取该联系所管理的两个多方视图的码及联系的属性,关系的码是多方实体的码构成的集合。
   
2.关系模式规范化
   E-R图转换来的还不能符合要求,数据冗余,更新异常等等问题存在。具体操作:
   1).根据语义确定关系模式的数据依赖。设计前只考虑关系及属性,没考虑数据依赖。
   2).根据数据依赖确定关系模式的范式。规范化理论可确定关系模式所属范式。
   3).规范化理论来达到3NF或BCNF
   4).评价和及修正。根据实际需要修改关系模式以达到平衡,比如规范化理论消除冗余和更新异常 ,但是实际查询需要效率,增加部分冗余可提升效率。
3.确定完整性约束
   规范化理论确定了关系模式后,还要对关系模式加约束,包括数据项的约束、表级约束及表间约束等等。
4.确定用户视图
确定了整个系统的关系模式之后,还要根据数据流图及用户信息建立视图模式,提高数据的安全性和独立性。
1).根据数据流图确定处理过程使用的视图。
2).根据用户类别确定不同用户使用的视图。
5.反规范化
这种就是前面的修正,比如增加冗余,提高查询效率。造成的数据不一致性可用程序同步、批量处理同步、触发器同步等。

6.3.5物理设计

逻辑模型在计算机中的具体实现方案。工作步骤:确定数据分布、存储结构和访问方式。
1.确定数据分布
   需确定数据是集中还是分布式管理,分布的需要考虑几方面:
   1).根据不同应用访问数据。不同部门使用的数据不同,场地也可能不同,自己用的数据存储在自己的场地,处理起来更顺畅;如果多个场地同时处理可通过网络进行。
   2).根据处理要求确定数据的分布。比如高频度、短响应的存在高速设备上。
   3).对数据的分布存储必然会导致逻辑结构的变化,需修改关系模式以适应。
2.确定数据的存储结构
   具体指数据文件中记录质检的物理结构。根据实际应用来选择合理的物理结构。同时增加索引等技术也可提高访问速度。
3.确定数据的访问方式
访问方式由存储结构所决定,物理结构主要由存储记录格式、记录在物理设备上的安排及访问路径(存取方法)等构成。
1).存储记录的结构设计:记录的组成、长度、数据项间的关系,以及逻辑记录到存储记录的映射,数据项分片存储(分不同的盘)减少访盘冲突提高性能。
2).存储记录布局
确定数据存放位置。存储记录作为一个整体,如何分布在物理区域上。聚簇功能可大大提高按照聚簇码进行查询的效率。聚簇可用于单个或多个关系。
聚簇建立原则:
①聚簇码的值相对稳定,没有或很少需要修改
②表主要用于查询,并且通过聚簇码进行访问或连接是该表的主要应用。
③对应每个聚簇码值的评价元组数既不太多也不太少。
聚簇可明显提高性能,但是有增删改的时候需要重新搬动数据后重新存储,所以建立聚簇的维护代价很大。
3).存取方法的设计
提供存储和检索能力的技术,分存储结构和检索机制两部分。存储结构限定了可能访问的路劲共和存储记录,检索机制定义了每个应用的访问路径。
存储路径最普遍的方式建索引,原则:
①首先可确定关系的存储结构,即记录是无序存放还是按照某属性(组)聚簇存放
②确定不宜建立索引的表,太小的表,属性少的,大文本的,很少出现的属性等等
③确定宜建立索引的属性,如码查询的条件函数输出的(min、max、avg、sum、count)属性列。

6.3.6数据库实施

数据库设计人员根据逻辑设计和物理设计阶段的结果建立数据库,编制与调试应用程序,组织数据入库,并进行试运行。

1.建立实际的数据库

1).数据库模式与子模式,以及数据库空间等的描述。例如,在Oracle系统中,数据库逻辑结果的描述包括表空间(Tablespace)、段(Segment)、范围(Extent)和数据块(Data block)。DBA或设计人员通过对数据库空间的管理和分配,可以控制数据库中数据的磁盘分配,将确定的空间份额分配给数据库用户,能够控制数据的可用性,将数据存储在多个设备上,以此提高数据库性能等。

2).数据库完整性描述。所谓数据的完整性,是指数据的有效性、正确性和一致性。在数据库设计时,如果没有一定的措施确保数据库中数据的完整性,就无法从数据库中获得可信的数据。数据的完整性设计,应该贯穿在数据库设计的全过程中。例如,在数据需求分析阶段,收集数据信息时,应该向有关用户调查该数据的有效值范围。在模式与子模式中,可以用DBMS提供的DDL语句描述数据的完整性。

3).据库安全性描述。数据安全性设计同数据完整性设计一样,也应在数据库设计的各个阶段加以考虑。在进行需求分析时,分析人员除了收集信息及数据间的联系之外,还必须收集关于数据的安全性说明。在设计数据库逻辑结构时,对于保密级别高的数据,可以单独进行设计。子模式是实现安全性要求的一个重要手段,可以为不同的应用设计不同的子模式。在数据操纵上,系统可以对用户的数据操纵进行两方面的控制:一是给合法用户授权,目前主要有身份验证和口令识别;二是给合法用户不同的存取权限。

4).据库物理存储参数描述。物理存储参数因DBMS的不同而不同。一般可设置的参数包括块大小、页面大小(字节数或块数)、数据库的页面数、缓冲区个数、缓冲区大小和用户数等。

2.数据加载

数据加载分为手工录入和使用数据转换工具两种。大部分的数据加载工作应在数据库的试运行和评价工作中分批进行。

3.数据库试运行和评价

当加载了部分必须的数据和应用程序后,就可以开始对数据库系统进行联合调试,称为数据库的试运行。
将数据库的试运行和评价结合起来的目的是测试应用程序的功能;测试数据库的运行效率是否达到设计目标,是否为用户所容忍。测试的目的是为了发现问题,而不是为了说明能达到哪些功能。所以,测试中一定要有非设计人员的参与。

6.3.7数据库运行维护

数据库应用系统经过试运行即可投入运行,但该阶段需要不断地对系统进行评价、调整与修改。
该阶段主要是DBA工作:
1.对数据库性能的监测和改善
2.数据库的备份及故障恢复
3.数据库重组和重构:如用了一段时间后碎片太多,进行重组或部分重构

6.4应用程序与数据库的交互

在应用程序中访问数据要通过高级语言,所以数据库提供了一些程序级别的接口来访问数据,常见应用程序与数据库的数据交互方式有库函数、嵌入式SQL、通用数据接口标准和对象关系映射(Object Relational Mapping,ORM)等。

6.4.1库函数级别访问接口

OCl是由一组应用程序开发接口(API)组成的,Oracle提供API的方式是提供一组库。这组库包含一系列的函数调用。这组函数包含了连接数据库、调用SQL和事务控制等。缺点是强依赖于特定数据库,对开发人员要求高,需要对数据库有深入的理解。

6.4.2嵌入SQL访问接口

嵌入式SQL(Embedded SQL)是一种将SQL语句直接写入某些高级程序语言,如C、COBOL、Java、Ada等编程语言的源代码中的方法。借此方法,可使得应用程序拥有了访问数据以及处理数据的能力。

6.4.3通用数据接口标准

开放数据库连接(Open DataBase Connectivity,ODBC)是为解决异构数据库间的数据共享而产生的。ODBC为异构数据库访问提供统一接口,允许应用程序以SQL为数据存取标准,存取不同DBMS管理的数据;使应用程序直接操纵数据库中的数据,免除随数据库的改变而改变,也可以访问如Excel表和ASCII数据文件这类非数据库对象。

6.4.4ORM访问接口

对象关系映射(Object Relational Mapping,简称ORM或O/RM或O/R mapping)是一种程序设计技术,用于实现面向对象编程语言里不同类型系统数据之间的转换。
ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象与关系数据库相互映射;ORM可以解决数据库与程序间的异构性。
ORM是一种将内存中的对象保存到关系型数据库中的技术,主要负责实体域对象的持久化,封装数据库访问细节,提供了实现持久化层的另一种模式,采用映射元数据(XML)来描述对象-关系的映射细节,使得ORM中间件能在任何一个应用的业务逻辑层和数据库之间充当桥梁。
典型的ORM框架有Hibernate、Mybatis和JPA等。
Hibernate:全自动的框架,强大、复杂、笨重、学习成本较高。Mybatis:半自动的框架。JPA(Java Persistence API):JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,是Java自带的框架。

6.5NoSQL数据库

它是个概念not only sql,区别于关系数据库,不保证ACID特性。

6.5.1分类与特点

按照所使用的数据结构的类型,一般可以将NoSQL数据库分为以下4种类型。
1.列式存储数据库
行式存储数据库就是传统的关系型数据库,每条记录所有属性存储在一行。列式是按照数据库记录的列来组织和存储数据的,数据库中每个表由一组页链的集合组成,每条页链对应表中的一个存储列。
这类数据库通常是用来应对分布式存储的海量数据。键仍然存在,但是它们的特点是指向了多个列。这些列是由列家族来安排的。现有产品如Cassandra、HBase、Riak。
2.键值对储数据库
典型结构是数组链表:先通过Hash算法得出Hashcode,找到数组的某个位置,然后插入链表。
这类数据库主要会用到一个哈希表,表中有一个特定的键和一个指针指向特定的数据。
优势:简单、易部署。缺点:支队部分值查询或更新时,k-v效率低下。有产品如Tokyo Cabinet/Tyrant、Redis、Voldemort、Oracle BDB。
3.文档型数据库
同键值对数据库类似,该类型的数据模型是版本化的文档,半结构化的文档以特定的格式存储,比如JSON。允许嵌套键值,在处理网页等复杂数据时,它比k-v更高效,现有产品如CouchDB、MongoDb,国内也有文档型数据库SequoiaDB,已经开源。
4.图数据库
它使用灵活的图形模型,并且能够扩展到多个服务器上。
NoSQL没有标准的查询语言(SQL),要查询需要指定数据模型,多配备REST式的接口或API。
适合存储通过图进行建模的数据,例如社交网络数据,生物信息网络数据,交通网络数据等。常见的产品有Neo4J、InfoGrid、Infinite Graph等。
NoSQL随没有标准定义,但有共同特征:
1).易扩展:因为去掉了关系型特性,数据间毫无关联可随意扩展。
2).大数据量,高性能:还是因为无关系性,结构简单性能高
3).灵活的数据模型:无需实现建立字段,随时可存储自定义的数据格式
4).高可用:NoSQL在不太影响性能的情况下,就可以方便地实现高可用的架构,有些产品通过赋值模型也能实现高可用。

6.5.2体系框架

  • 19
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值