104
第六部分 数据库技术的发展趋势 信息科学与工程学院 杨金民 2017.12

第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

  • Upload
    others

  • View
    52

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

第六部分 数据库技术的发展趋势

• 信息科学与工程学院

• 杨金民

• 2017.12

Page 2: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

目录

l 对象-关系型数据库;

l 分布式数据库;

l NOSQL数据库;

l 数据仓库和数据挖掘;

l 大数据

Page 3: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

object-relation 数据模型例子

title Author-set Publisher(name, branch)

Keyword-set

compiler {smith,John} (Oxford, Beijing) {word, sentence, syntax}

network {Jack, Smith} (Amason, Changsha) (transport, fault-tolerance}

database {Jim, Tom, Phillipe} (Greatwall, Changsha) {relation, record, foreign key}

book

Page 4: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

flat_book表

title Author Publisher(name, branch)

Keyword

compiler smith (Oxford, Beijing) word

compiler smith (Oxford, Beijing) sentencecompiler smith (Oxford, Beijing) syntax

compiler John (Oxford, Beijing) wordcompiler John (Oxford, Beijing) sentence

compiler John (Oxford, Beijing) syntax

book表中的第一行数据的展开

Page 5: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

Relation data model

title publisher branch

compiler Oxford Beijingnetwork Amason Shanghaidatabase Greatwall Changsha

title Authorcompiler smithcompiler Johnnetwork Jacknetwork Smithdatabase Jimdatabase Tomdatabase Phillipe

title Keywordcompiler wordcompiler sentencecompiler syntaxnetwork transportnetwork fault-tolerancedatabase relationdatabase recorddatabase foreign key

keywordsAuthors

books

Page 6: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

关系数据模型的特性

l 当须要将一个东东看作一个对象时,就自然有其类的定义(Schema),自然就是该类表中的一行数据。

l 例如,在上一个例子中,如果要将每个作者看作一个对象,那么就应该创建book与作者的联系表Authors;

l 如果把book对象中作者看作是它的一个属性,那么book的属性author =“smith, John”即可;

l 到底是要将每个作者看作一个对象,还是将book对象中作者看作是它的一个属性,这要基于数据库服务的业务而定;

l 对于keywords也是。

Page 7: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

对关系模型的扩展——支持面向对象

关系模型的数据类型是固定的:仅有integer, string,date,bool,CLOB, BLOB这些;

引入数据类型的可扩展性:

CREATE TYPE Publisher AS (name VARCHAR(16),branch VARCHAR(24),

);

CREATTE TYPE Name AS ( firstName VARCHAR(20),

lastName VARCHAR(20)) FINAL;

首先是对数据类型的扩展

Page 8: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

数据类型扩展——典型的类型

l 典型的数据类型:数组,集合,List,stack,heap;

l 表是集合类型,表达的是某个类的实例的集合;

l 集合:其中成员的类型,既可以是基本类型,也可以是某个类;

l 集合的基本问题:其成员的标识问题。成员通常要求是同一类

型;

l 对于基本数据类型,就是自己本身来标识自己,即将所有字段

承视作主键;对于基本数据类型,它自然只一个字段;

Page 9: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

数据类型扩展——支持成员函数

l 对集合类型:添加成员,查找成员,删除成员,清空;

l INSERT INTO setObj

l SELECT FROM setObj WHERE 成员(属性/函数)...

l DELETE FROM setObj WHERE 成员(属性/函数)...

Page 10: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

类型与继承 in SQL 1999

集合(set)、数组(array)型数据类型:

CREATE TYPE Publisher AS (name VARCHAR(16),branch VARCHAR(24),

);

CREATE TYPE book AS (title varchar(64),

author-array varchar(20) array[10], publisher Publisher,

keyword-set setof(varchar(20)));

CREATE TABLE books OF book;

Page 11: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

类型与构造函数

CREATTE TYPE Name AS (firstName VARCHAR(20), lastName VARCHAR(20)) FINAL;

CREATE FUNCTION Name(firstName VARCHAR(20), lastName VARCHAR(20))RETURN NameBEGIN SET self.firstName = firstName; SET self.lastName = lastName;END

Page 12: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

类型与成员函数

CREATE TYPE personType AS ( name Name,

address Address,dateOfBirth date)NOT FINALMETHOD ageOnDate(onDate date) RETURN interval year;

CREATE INSTANCE METHOD ageOnDate(onDate date) RETURN interval yearFOR personTypeBEGIN RETURN onDate - self.dateOfBirth;END

Page 13: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

创建类型的实例,调用类型的方法(1)

CREATE TABLE person OF personType;

INSERT INTO person(name, address, dateOfBirth)VALUES(new Name('John', ‘Georage’), new Address('20 MainSt.' , 'New York', '11001'),

date '2001-08-11');

SELECT name.lastName, ageOfBirth(now() ) FROM person

WHERE dateOfBirth ≧ date '2000-01-01';

Page 14: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

创建类型的实例,调用类型的方法(2)

• 添加一行数据:

INSERT INTO books VALUES(`Compilers’, new ARRAY(`Smith’,`Jones’), Publisher(‘McGraw Hill’,`New York’ ), new SET(`parsing’,`analysis’));

查询行数据:

SELECT title, authors[0], publisher.name FROM books;

Page 15: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

类型的继承

CREATE TYPE student UNDER personType

( degree VARCHAR(20), department VARCHAR(20));

CREATE TYPE teacher UNDER personType

( salary DECIMAL(8.2), department VARCHAR(20));

CREATE TYPE teachingAssistant UNDER student, teacher ;

Page 16: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

集合的实例 表

CREATE TYPE teachingAssistant UNDER student, teacher ;

CREATE TYPE teachingAssistant UNDER

student WITH(department AS student_dept), teacher WITH(department AS teacher_dept);

CREATE TABLE teachingAssistant OF teachingAssistant;

Page 17: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

类型的实例的存储方式

CREATE TABLE teachingAssistant OF teachingAssistant

person degree, department salary, department

person degree, departmentp_id salary, departmentp_id

person student teacher

CREATE VIEW teachingAssistant OF teachingAssistant ASperson JOIN student JION teacher

Page 18: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

多继承中的对象层次结构

CREATE TABLE teachingAssistant OF teachingAssistant;

person degree, department salary, department

一个teachingAssistant实例隐含了另外三个类的实例:person实例,student实例,teacher实例

Page 19: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

由某一类型的对象,来生成另一类型的对象

SELECT title, A.author, Publisher.name AS pub_name, K.keyword

FROM book AS B, unnest(B.author_array) AS A(author),

unnest(B.keyword_set) AS K(keyword);

其含义是:对book表中的每一个行,将author_array字段的值(一

个array类的实例)转化为一个表,将keyword_set的值(一个

set类的实例)也转化为一个表,然后做笛卡尔运算。其它输出

字段( title, Publisher.name)的值在笛卡尔运算的结果中的每行都

重复一样。

Page 20: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

由某一类型的对象,来生成另一类型的对象(2)

INSERT INTO book ( SELECT title, array(SELECT author FROM authors AS A WHERE A.title = B.title ORDER BY A.position) AS author_array, Publisher(pub_name,pub_branch) AS publisher, multiset(SELECT keyword FROM keywords AS K WHERE K.title = B.title ) AS keyword_set

FROM flat_books AS B

);

Page 21: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

对象标识和引用类型

• CREATE TYPE Department (

name VARCHAR(20),

head REF(Person) );

CREATE TABLE departments OF Department

( head WITH OPTIONS SCOPE people );

注意:在这里,TABLE的含义是集合类型的一个实例;

Page 22: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

对象指针

1) INSERT INTO departments VALUES (`CS’, null);

2) UPDATE departments SET head = (SELECT REF(p)

FROM people AS p WHERE name=`John’)

WHERE name = `CS’;

3) SELECT head->name, head –>address FROM departments;

4) SELECT DEREF(head) AS teacherFROM departments WHERE name ='CS';

Page 23: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

成员函数扩展成虚函数,纯虚函数多态

• 类型定义,包括成员变量和成员函数。

• 数据库可看作是一个容器,存放类的schema,以及类的实例。

• 数据库,自然有类的实例的集合这个概念。

• 对于集合,其元素,即类的实例,首先有标识问题,接下来就有

判别问题,即某个实例是否已经在集合中,然后就是查找问题。

查找结果自然也是集合。

• 由于成员函数,虚函数,纯虚函数都属于Schema的内容,因此

多态在数据库中,很容易实现。

Page 24: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

虚函数,纯虚函数 接口 多态

内存

成员变量

指针对象指针(引用)

Schema

接口

Page 25: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

缺点: 对象间的联系,数据建模混沌不清

CREATE TYPE student ( s_id VARCHAR(20), name VARCHAR(20),);

学生选修课程:

teacherObj.OpenCourse(courseObj, semesterObj);

StudentObj.Enroll(courseObj, semesterObj);

manager.AssignTeacherForCourse(teacherObj, courseObj, semesterObj);

teacherObj.Grade(courseObj, semesterObj, StudentObj, score);

CREATE TYPE course ( c_id VARCHAR(8), name VARCHAR(20), hours integer, credit integer);

Page 26: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

关系数据模型,面向对象数据模型的共同——结构化数据

l 都有确定的Schema,结构轮廓固定,确定了其语义;

l 程序对数据的处理基于Schema,基于概念编程,运行时实例

化,实现了程序的通用性;

l 扩展性仅体现在类的实例的数目上;

l 横向无扩展性,仅在纵向上有扩展性;

l 横向要扩展,就要改变Schema,关系模型就要改表的schema,

对象模型就要定义新的类;

Page 27: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

结构化数据 vs 半结构化数据

l 结构化数据 概念确定 状态空间也确定 程序确定

运行时的实例化 程序通用;

l Schema 实例;实例具有Schema的完全特征;

l 关系数据模型,面向对象数据模型:一维线性数据模型;

l 有Schema是最大的优点;

l 半结构化数据似乎试图增强一点点横向扩展性;

Page 28: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

半结构化数据

一维线性结构 树形结构 新引入了层次型结构,新体现了

包含或者说归属关系;

关系数据模型,从扁平视角,来观察事情。事物之间具有对等性,

彼此之间的关系,不是从包含或者说归属视角来看待,而是从量

比上看待:一对一,一对多,多对多三种。

树形结构则是从包含或者说归属的视角来看待事情。

树形结构中,对等性的事情,为兄弟关系,彼此之间的关系要另

外刻画。

Page 29: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

学校的树形结构模型

学院

信息学院 数学院

课程老师 学生 课程老师 学生

Page 30: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

学校的树形结构模型

学院

信息学院 数学院

课程老师 学生 课程老师 学生授课 选课

Page 31: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

学校的树形结构模型

学院

信息学院 数学院

课程老师 学生 课程老师 学生授课 选课

要求独立性很强:信息学院下面的学生,老师,课程与数学

院下面的课程,老师,学生之间最好是没有关系。

一旦有关系,树形结构就暴露在对象的引用中。

一旦树形结构发生变动,对象引用的一致性就难以维护。

Page 32: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

关系数据模型

扁平结构:对等性,平起平坐性的实体。利用联系来表达彼

此之间的关系。在层次模型中,对象引用隐含了层次结构。

在关系模型中,无层次结构,对象引用变得直接。

学院 课程学生 老师 授课 选课

Page 33: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

学校的树形结构模型

学院

信息学院 数学院

课程老师 学生 课程老师 学生授课 选课

好处和优点:并行处理。可扩展性好,良好的Map/Reduce特性。

很多Internet服务的数据就具有可划分性,数据量巨大,适合层次

结构,但是通常都只设置成两层。key-Value对。

Page 34: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

NOSQL的由来

学院

信息学院 数学院

课程老师 学生 课程老师 学生授课 选课

在关系模型模型中稍微引入一点点层次数据模型。所以叫不仅仅是

SQL。

在引入层次数据模型上,很谨慎,通常都只设key和Value两层。

而且每个key值只有一个儿子结点,就是value。

Page 35: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

NOSQL的由来

Key

KEY1 KEYn

Value1

要求:value1,value2,valuen中的内容,彼此之间最好没有联

系。 万一有,当然应很少发生,则采取复制策略,来维持彼此独

立这一特性。此时可能会出现不一致性问题:可容忍的不一致。

KEY2 KEYi

Value2 Value3 Value4

Page 36: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

NOSQL的由来

KEY

KEY1 KEYn

Value1

key与机器的映射,实现并行处理,增大吞吐量,这就是集群

hadoop,spark的由来。

NoSQL本意是集群数据库 vs 分布式数据库。

KEY2 KEYi

Value2 Value3 Value4

Page 37: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

电子商务数据库

e-business

Client 支付

最大的数据是交易数据【client,seller,goods,支付,物流】

为了分布式处理:key:client value:交易记录;

key:seller value:交易记录;

在这里,把交易记录复制了一份存储,使得client和seller独立。

理由:频繁的数据访问:客户看他的交易记录,卖家看他的交易

记录;

seller goods 物流 纠纷

Page 38: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

电子商务数据库

e-business

Client 支付

最频繁的数据访问是浏览和查询商品数据:

对goods,也可采用key-value key: 类别 value:其它

value中进一步可就价格,厂家等不同视角建立索引,实现快速查

询。

从而实现层次管理,创造然后利用彼此独立,实现并行处理,增

大吞吐量

seller goods 物流 纠纷

Page 39: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

NOSQL特性

面向的是巨大的数据量,强调的是查找性能,追求的是吞吐量;

采用key-value 来实现目标。彼此独立,因此就不能做灵活而复

杂的处理:范围查询,模糊查询,联接运算。

只能做等值查询,按照已设计好的层次结构做引导式roll down

查询。

Page 40: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

NOSQL

类型 产品代表 特点

列存储Hbase

Hypertable

是按列存储数据。方便做数据压缩,对针对某一列或者某几列的

查询有非常大的IO优势。

文档存储 MongDB用类似Json的格式存储,

Schema不确定,易变。有机会对某些字段建立索引。

key-value存储 Redis可以通过key快速查询到其value。

一般来说,存储不管value的格式,照单全收。

Page 41: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

NOSQL

• 数据库的核心理念:减少CPU开销,I/O开销。

• 关系型数据库的核心:在数据正确性上,ACID属性上;

• 有些应用对于性能、吞吐量、高扩展性很高要求,例如微信;

• NoSQL主要将可扩展性放在首位。

• key/value;

Page 42: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

NOSQL数据库——Hbase

• Hbase数据模型:Row key, Column Family, Column.

• 列可以动态增加,列值为空就不存储数据, 节省存储空间;

• 查询:仅只支持按照Row key来等值、单表查询.

• 数据类型:仅只支持字符类型。

• 数据操作:HBase只有很简单的插入、查询、删除;

• 表和表之间完全独立、无联系。

• 存储模式:每个列族都有独立的存储单元。基于列的访问频度

Page 43: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

Hbase数据模型 VS 关系模型Article

Article_Id {pk} Title Content Keywords Author_id{fk}

1 HBase Introduction

HBase is hdoop database.

HBase;Hdoop;NoSQL 1

AuthorAuthor_id{pk} name nickname

1 Hu dajun Tiger

ArticleRowkey Column Family Column keys

IdArticle

TitleContent

Keywords

Author NameNickname

Page 44: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

一行数据的某个列的值可有多个版本

ArticleRowkey

ValueColumn Family

Column keys Column key value Timestamp

1Article

Title

HBase Introduction 20180818 11:30:49:120

Hbase 20170518 17:33:57:120

Hbase Essence 20170218 11:58:11:120

Content Keywords

AuthorName

Nickname

【R】key【C1】【V】Hbase Introduction【TS】20180819【/TS][/V】【V】Hbase 【TS】20180819【/TS][/V】【V】Hbase Essence【TS】20180819【/TS][/V】【/C1】.......【C3】......【/C3]【/R】

Page 45: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

MongDB——文档数据库

l 无定型的Schema;文档的数据结构和JSON基本一样。一个

文档一行,由字段组成,字段又可由集合构成;

l 文档是一个键值(key-value)对。MongoDB 的文档不需要设

置相同的字段,并且相同的字段不需要相同的数据类型;

l 可基于任何字段构建索引;

l 用GridFS存放大量的小文件;

l 支持Map/Reduce;

Page 46: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

数据库中col表的文档插入, 查找,删除

>db.col.insert( { title: 'MongoDB 教程',

description: 'MongoDB 是一个 Nosql 数据库',

by: 'w3cschool',

url: 'http://www.w3cschool.cn',

tags: ['mongodb', 'database', 'NoSQL'],

likes: 100 } )

>db.col.find({"by":"w3cschool"})

>db.col.remove({'title':'MongoDB 教程'}

Page 47: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

MongDB的文档键

l MongoDB中存储的文档必须有一个"_id"字段(主键)。这个

键的值可以是任何类型的,默认是个ObjectId对象。

l ObjectId 是一个12字节 BSON 类型数据,有以下格式:

u 前4个字节表示时间戳;

u 接下来的3个字节是机器标识码

u 紧接的两个字节由进程id组成(PID)

u 最后三个字节是随机数。

Page 48: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

Redis

l Redis 是完全开源免费的,高性能key-value数据库。

l 其特点是:支持存储的value类型相对更多,包括string(字符

串)、list(链表)、set(集合)、zset(sorted set --有序集合)和

hash(哈希);

l Hash(哈希)类型:一个键值对集合:

> HMSET user:1 username w3cschool.cn password w3cschool.cn points 200

> HGETALL user:1

Page 49: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

Redis

l List(列表):string类型的列表,按照插入顺序排序。你可以

添加一个元素到列表的头部(左边)或者尾部(右边)。

>LPUSH w3cschool.cn redis

>LPUSH w3cschool.cn mongodb

>LPUSH w3cschool.cn rabitmq

> LRANGE w3cschool.cn 0 10

Page 50: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

Redis

l Set(集合):string类型的无序集合。集合是通过哈希表实

现,添加/删除/查找的复杂度都是O(1)。元素有唯一性。

>SADD w3cschool.cn redis

>SADD w3cschool.cn mongodb

>SADD w3cschool.cn rabitmq

> SMEMBERS w3cschool.cn

l zset(sorted set有序集合):集合中每个元素关联一个double

类型的分数(score)。元素通过(score)分数从小到大排序。

Page 51: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

半结构化数据——XML数据

XML 是一种标签(markup)语言,其标签表达了数据的语义;

XML是有关数据交换(语义理解,数据解析)的框架和规范,定下的W3C国际标准。只要Internet上数据的发布者和数据的使用者都遵循该规范,他们就可彼此独立地做自己的工作,又能实现彼此沟通交流;

HTML,JSON 是XML的实例,HTML是有关文档的显示的规定.

标签是可扩展定义的,HTML是大小写不区分的,XML区分大小写;

Page 52: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

XML 数据——树形结构数据

一个XML 文档 的组成:

An XML declaration line, 表明其遵循的XML标准的版本.

Elements (or tags) 也叫 markup. 每个元素包括text,

attributes, nested elements. 这三者都是可有可无的。

每个属性(Attribute)采用 name= value 的方式,放在

element中.

每个XML文档有且仅有一个根元素(root Element),

Page 53: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

XML文档例子<?xml version = "1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE root SYSTEM "dept.dtd"><root>

<Dept dno = "D1"><Emp eno="E7"><name>R. Davis</name></Emp><Emp eno="E8"><name>J. Jones</name></Emp><student sno="S3"><name>张三</name></student><budget> 5000 </budget>

</Dept><Dept dno = "D2" mgr = "E6">

<Emp eno="E6"><name> L. Chu </name></Emp><Emp eno="E3"><name> A. Lee </name></Emp>

<course cno="C3"><name> Java </name></course></Dept>

</root>

Page 54: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

Namespaces 例子

<?xml version = "1.0" encoding="UTF-8" standalone="no"?>

<root xmlns:n1 = "http://www.abc.com"><n1:Dept dno = "D1">

<n1:Emp eno="E7"><name>R. Davis</name></Emp><n1:Emp eno="E8"><name>J. Jones</name></Emp>

</Dept><n1:Dept dno = "D2" mgr = "E7">

<n1:Emp eno="E6"><name>L. Chu</name></Emp><n1:Emp eno="E3"><name>A. Lee</name></Emp><n1:budget>350000</budget>

</Dept></root>

Page 55: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

Schema for XML

是理解和解析XML文档的前提,也是验证XML文档是否规范的依

据;

就像数据库中的表的模式,程序就是基于Schema来编写的;

XML文档只不过是它的实例;

XML schema 两种形式:

Document Type Definition (DTD)

XML Schema

Page 56: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

XML文档例子:Ueducation<?xml version = "1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE root SYSTEM "dept.dtd"><root>

<Dept dno = "D1"><Emp eno="E7"><name>R. Davis</name></Emp><Emp eno="E8"><name>J. Jones</name></Emp><student sno="S3"><name>张三</name></student><budget> 5000 </budget>

</Dept><Dept dno = "D2" mgr = "E6">

<Emp eno="E6"><name> L. Chu </name></Emp><Emp eno="E3"><name> A. Lee </name></Emp>

<course cno="C3"><name> Java </name></course></Dept>

</root>

Page 57: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

Document Type Definitions (DTD) 例子

<!DOCTYPE root [<!ELEMENT root(Dept+)><!ELEMENT Dept(Emp*, budget?,course*, student*)>

<!ATTLIST Dept dno ID #REQUIRED><!ATTLIST Dept mgr IDREF #IMPLIED>

<!ELEMENT budget (#PCDATA)><!ELEMENT Emp (name)>

<!ATTLIST Emp eno ID #REQUIRED><!ELEMENT course (name)>

<!ATTLIST course cno ID #REQUIRED><!ELEMENT name (#PCDATA)>

]> Parsed Character Data (atomic value)

Page 58: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

XML Schema

DTDs 并没有指明:

data types

constraints

explicit primary keys and foreign key references.

DTDs 并不遵循XML 语法.

XML Schema 后来定义的国际标准.

Page 59: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

XML Schema中的元素的类型

Elements type: simple types,composite type:

任何带有属性或者嵌入有子元素的类型:必须定义为composite type

<xsd:element name = "name" type = "xsd:string" />

<xsd:element name = "budget" type = "xsd:decimal" />

Page 60: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

Schema中可指明元素的实例的数量范围

<xsd:element name = "Emp"minOccurs="0" maxOccurs="unbounded">

<xsd:element name = "budget" type = "xsd:decimal"minOccurs="1" maxOccurs="1" />

Page 61: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

Constraints in XML Schema

唯一性约束:

<xsd:unique name = "UniqueDno"><xsd:selector xpath = "/root/Dept" /><xsd:field xpath = "@dno" /> </xsd:unique>

主键约束:

<xsd:key name = "EmpKey"><xsd:selector xpath = "/root/Dept/Emp" /><xsd:field xpath = "@eno" /> </xsd:key>

外键约束:

<xsd:keyref name = "DeptMgrFK" refer "EmpKey"><xsd:selector xpath = "Dept" /><xsd:field xpath = "@mgr" /> </xsd:keyref>

Page 62: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

XML Schema Example<?xml version = "1.0"><xsd:schema xmlns:xsd = "http://www.w3.org/2000/10/XMLSchema"><xsd:element name = "root"> <xsd:complexType> <xsd:sequence> <xsd:element name = "Dept" minOccurs="1" maxOccurs="unbounded"> <xsd:complexType> <xsd:attribute name = "dno" type = "xsd:string" /> <xsd:attribute name = "mgr" type = "xsd:string" /> <xsd:element name = "Emp" minOccurs="0" maxOccurs="unbounded"> <xsd:complexType> <xsd:element name = "name" type = "xsd:string" /> <xsd:attribute name = "eno" type = "xsd:string" /> </xsd:complexType> </xsd:element> <xsd:element name="budget" minOccurs="0" type ="xsd:decimal" /> </xsd:complexType> </xsd:element>

Page 63: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

XML Schema Example (cont.)

</xsd:sequence> </xsd:complexType></xsd:element><xsd:key name = "DeptKey">

<xsd:selector xpath = "/root/Dept" /><xsd:field xpath = "@dno" />

</xsd:key><xsd:key name = "EmpKey">

<xsd:selector xpath = "/root/Dept/Emp" /><xsd:field xpath = "@eno" />

</xsd:key><xsd:keyref name = "DeptMgrFK" refer "EmpKey">

<xsd:selector xpath = "/root/Dept" /><xsd:field xpath = "@mgr" />

</xsd:keyref></xsd:schema>

Page 64: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

XML Schema中通常把结构和约束分开:先结构,后约束

<?xml version = "1.0"><xsd:schema xmlns:xsd = "http://www.w3.org/2000/10/XMLSchema"><xsd:element name = "root" type =”university education”> <xsd:complexType> <xsd:sequence> <xsd:element name = "Dept"> <xsd:complexType> <xsd:element name = "Emp" > <xsd:complexType> <xsd:element name = "name" type = "xsd:string" /> </xsd:complexType> </xsd:element> <xsd:element name="budget" type ="xsd:decimal" /> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType></xsd:element>

Page 65: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

XML Schema结构之后的约束

</xsd:complexType name=”university education”> <xsd:sequence>

<xsd:element ref = "Dept" minOccurs="1" maxOccurs= "unbounded"> <xsd:complexType> <xsd:attribute name = "dno" type = "xsd:string" /> <xsd:attribute name = "mgr" type = "xsd:string" /> </xsd:complexType></xsd:element>.....

</xsd:sequence></xsd:complexType>

<xsd:key name = "DeptKey"><xsd:selector xpath = "/root/Dept" /><xsd:field xpath = "@dno" />

</xsd:key>

Page 66: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

XML Schema结构之后的约束

<xsd:key name = "EmpKey"><xsd:selector xpath = "/root/Dept/Emp" /><xsd:field xpath = "@eno" />

</xsd:key><xsd:keyref name = "DeptMgrFK" refer "EmpKey">

<xsd:selector xpath = "/root/Dept" /><xsd:field xpath = "@mgr" />

</xsd:keyref></xsd:schema>

Page 67: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

XQuery

使用 FLWR 表达式 (“for-let-where-return") ,与 SQL相似.

Page 68: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

XQuery FOR Clause Example

FOR $ename IN /Depts/Dept/Emp/name

RETURN <EmpName>{$ename}</EmpName>

Result:<EmpName>R. Davis</EmpName><EmpName>J. Jones</EmpName><EmpName>L. Chu</EmpName><EmpName>A. Lee</EmpName>

FOR loop variable XPath

Page 69: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

XQuery LET Clause Example

LET $en IN /Depts/Dept/Emp/name

RETURN <EmpName>{$en}</EmpName>

Result:

<EmpName>R. Davis, J.Jones, L. Chu, A. Lee </EmpName>

Page 70: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

XQuery WHERE Clause Example

FOR $e IN /Depts/Dept/Emp

WHERE $e/name > "I"

RETURN <EmpName>{$e/name}</EmpName>

Result:

<EmpName>R. Davis</EmpName>

<EmpName>J. Jones</EmpName>

<EmpName>L. Chu</EmpName>

Page 71: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

XQuery FOR/LET Clause Example

Return all departments with at least 2 employees.<result>

FOR $d IN /Depts/Dept/LET $e = $d/EmpWHERE COUNT($e) >= 2RETURN <DeptName>{$d/name}</DeptName>

</result> Result: <result> <DeptName>Management</DeptName> <DeptName>Consulting</DeptName> </result>

Page 72: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

XQuery中的 IDREF

输出每个学院及其院长的名字:

FOR $d IN /Depts/Dept/LET $en = $d/@mgr -> Emp/nameRETURN<DeptName> {$d/name} </DeptName><MgrName> {$en} </MgrName>

Result:<DeptName> Consulting </DeptName><MgrName> R. Davis </MgrName>

Page 73: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

XQuery Questions

Write XQuery queries to retrieve:

1) Return the book ISBN and price for each book.

2) Return only those books that have more than 2 authors.

3) Return average price of all books.

4) All titles of books costing < $70 where "Ullman" is an author.

Page 74: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

XML Parsers

An XML parser uses one of two common interfaces: DOM

and SAX to processes the content and structure of an

XML document ,according to its DTD or schema.

Page 75: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

DOM

XmlDocument doc = new XmlDocument(); doc.Load("test.xml");XmlElement firstCD = (XmlElement)

doc.DocumentElement.FirstChild;XmlElement artist = (XmlElement)

firstCD.GetElementsByTagName("artist")[0];XmlElement title =(XmlElement)

firstCD.GetElementsByTagName("title")[0]; Console.WriteLine("Artist={0}, Title={1}", artist.InnerText,

title.InnerText);

Page 76: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

Cursor-based APIs

XmlDocument doc = new XmlDocument(); doc.Load("test.xml");XPathNavigator nav = doc.CreateNavigator(); nav.MoveToFirstChild(); nav.MoveToFirstChild(); nav.MoveToFirstChild();nav.MoveToNext(); string artist = nav.Value;nav.MoveToNext(); string title = nav.Value;Console.WriteLine("Artist={0}, Title={1}", artist, title);

Page 77: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

Streaming APIs : SAX

XmlTextReader reader = new XmlTextReader("test.xml");

reader.MoveToContent();

while(reader.Read( ) ) {

if((reader.NodeType == XmlNodeType.Element) &&

reader.Name.Equals("artist")) {

artist = reader.ReadElementString();

title = reader.ReadElementString();

break;

}

}

Console.WriteLine("Artist={0}, Title={1}", artist, title);

Page 78: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

XML Query

XPathDocument doc = new XPathDocument("test.xml");XPathNavigator nav = doc.CreateNavigator(); XPathNodeIterator iterator = nav.Select("/items/compact-

disc[1]/artist | /items/compact-disc[1]/title");iterator.MoveNext(); Console.WriteLine("Artist={0}", iterator.Current);iterator.MoveNext();Console.WriteLine("Title={0}", iterator.Current);

Page 79: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

XML 数据特点

l 用树形结构组织数据;

l 树的结点分为属性结点和元素结点;

l 属性结点为叶节点,元素结点可以有孩子结点;

l 属性的值,有缺省值概念;不给出时,不是说没有,而是说取

缺省值;

l 某个元素类的实例数量可多可少,只能说是在纵向上有伸缩扩

展性;

Page 80: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

XML 数据的横向扩展性特点<xsd:element name = "root">

<xsd:complexType> <xsd:sequence> <xsd:element name = "Dept" minOccurs="1" maxOccurs="unbounded"> <xsd:complexType> <xsd:element name = "Emp" minOccurs="0" maxOccurs="unbounded"> <xsd:complexType> <xsd:element name = "name" type = "xsd:string" /> </xsd:complexType> </xsd:element> <xsd:element name="Proj" minOccurs="0" maxOccurs="unbounded" /> </xsd:complexType> </xsd:element>; </xsd:sequence> </xsd:complexType>

Dept包括Emp和Proj组成,可把Emp和Proj是Dept的横向组成部分,它们彼此独立,因此可看作两个表;

Page 81: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

XML 数据的横向扩展性特点

因此,并没有什么新特质,只是把彼此有联系的不同类别的实

例摆放到一起而已;

而关系模型则把它们放到不同的表中;

deptNo name mangerD01 Engineering E01

empNo name deptNoE01 李静 D01

E02 郭嘉 D01

projNo name budget deptNo

P01 大楼 1000 D01P02 花园 2400 D01

Dept Emp

Proj

Page 82: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

XML 和关系模型的本质差异

因此,它们并没有本质差异,只是XML把彼此有联系的不同

类别的实例放到一起而已;而关系模型则把它们放到不同

的表中,

deptNo name mangerD01 Engineering E02D02 Accounting E01

empNo name deptNoE01 李静 D02

E02 郭嘉 D01

projNo name budget deptNo

P01 大楼 1000 D01P02 花园 2400 D01

Dept Emp

Proj

Page 83: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

XML 和关系模型的本质差异

XML把联系看作第一位;而关系模型则把类看作第一位;

先有类及其实例,然后才有联系,因此关系模型有其道理。

deptNo name mangerD01 Engineering E02

empNo name deptNoE01 李静 D01

E02 郭嘉 D01

projNo name budget deptNo

P01 大楼 1000 D01P02 花园 2400 D01

Dept Emp

Proj

Page 84: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

XML的树形结构模型

学院

信息学院 数学院

课程老师 学生 课程老师 学生授课 选课

要求独立性很强:信息学院下面的学生,老师,课程与数学

院下面的课程,老师,学生之间最好是没有关系。

一旦有关系,树形结构就暴露在对象的引用中。

一旦树形结构发生变动,对象引用的一致性就难以维护。

Page 85: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

关系数据模型

扁平结构:对等性,平起平坐性的实体。利用联系来表达彼

此之间的关系。在层次模型中,对象引用隐含了层次结构。

在关系模型中,无层次结构,对象引用变得直接。

学院 课程学生 老师 授课 选课

Page 86: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

JSON{ "name": "中国", "province": [ { "name": "黑龙江", "cities": { "city": ["哈尔滨", "大庆"] } }, { "name": "广东", "cities": { "city": ["广州", "深圳", "珠海"] } } ]}

Page 87: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

XML<?xml version="1.0" encoding="utf-8"?><country> <name>中国</name> <province> <name>黑龙江</name> <cities> <city>哈尔滨</city> <city>大庆</city> </cities> </province> <province> <name>广东</name> <cities> <city>广州</city> <city>深圳</city> <city>珠海</city> </cities> </province></country>

Page 88: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

语义网

万维网是一个描述资源和资源之间关系的网络。

RDF(Resource Description Framework)是一种描述资源的方

式:主谓宾三元组:{ 苹果, 是, 公司 }, { 库克, 是, 人 }, { 苹果,

CEO 是, 库克 }

直接说「苹果公司的 CEO 是个叫库克的人」,计算机就凌乱了啊,

因为自然语言包含太多的不确定性。比如这里就有:苹果公司是

一家叫苹果的公司还是这是一家卖苹果的公司?

处理的是三元组本身的歧义:哪天又输入了一条 { 苹果, 是, 水果 },

那怎么办?这和我们之前的苹果不是一个货啊。

Page 89: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

语义网

描述的用词本身不能有歧义,有什么唯一表示的方法么?答案就

是用 URI(Universal Resource Identifier)。一旦确定每个东西

都有唯一表述方式,那么 RDF 三元组的形式就是 { URI, URI,

URI } 了。

有了许多这样的三元组以后,我们就可以得到一个知识网。把多

个这样的网放在一起,所有相同 URI 的节点都可以合并到一起,

逐渐组成一张大网——可以说是语义网的雏形。里面所有的内容

都是机器可查询、标准且无歧义的,于是可计算和推理,得到隐

含的新知识。

Page 90: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

RDF

Subject Property ObjectBook1 Title Human Machine Transaction

Book2 Title Foundations of Databases

Book1 Type book

Book2 Type book

Book2 hasAuthor Person1Book2 hasAuthor Person2

Person1 Type Author

Person2 Type Author

Person1 IsNamed E. F. Codd

Person2 IsNamed H. G. Holton

Page 91: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

查询

SELECT p5.objFROM rdf AS p1, rdf AS p2, rdf AS p3, rdf AS p4, rdf AS p5WHERE p1.prop = ’title’ AND p1.obj LIKE ’%Transaction%’AND p1.subj = p2.subj AND p2.prop = ’type’ AND p2.obj = ’book’ AND p2.subj = p3.subjAND p3.prop = ’ hasAuth’ AND p3.obj = p4.subj AND p4.prop = ’type’ AND p4.obj = ’author’ AND p4.subj = p5.subj AND p5.prop = ’isnamed’ ;

Subj1 Prop1 Obj1 Subj2 Prop2 Obj2Subj3 Prop3 Obj3 Subj 4 Prop4 Obj4 Subj5 Prop5 Obj5

代号书 Title %Transaction%

代号书 Type Book 代号书

HasAuth

代号人 代号人 Type Auth 代号人 IsNamed

特定人名

Page 92: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

更高级的连接Schema——正则表达式

Eother20 *

start 12digit

13.

14digit

15E

16+|-

17digit

18other

19

digit digit digit

digitother

21 *

对正则表达式: number → digits (. digits )?( E [+ - ]? digits)?

Page 93: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

更高级的Schema——上下文无关文法

E→ E + T | T

T→ T * F | F

F→ (E) | id

l 反映出了树型结构;l 反映出了运算的优先级;l 反映出了运算的交换律;l 具有开放性、灵活性,适应性;l 具有高度抽象性;l 具有全覆盖性;

E

id

+E T

输入串:id + id * id

*T F

F

id

T

F

id

输入串:(((id + id) * id+id)*id+id)*id

Page 94: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

分布式数据库

同构系统/ 异构系统,自治系统,邦联系统. 目的:l实现信息资源共享;l提高数据处理性能;l实现容错;l实现数据操作的简单性;

network

Page 95: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

分布式数据库管理系统DDBMS

正确性;性能;简单性;

操作系统

Connection;Fragments;Replica;Schema;

增强性能共享,提高可用性;简化复杂性;

SQL

SQL

DatabaseA

DDBMS

正确性;性能;简单性

操作系统

DatabaseB

Network DDB

SQL

Schema A Schema A

Page 96: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

分段例子(水平分段)

PROJ

P1P2P3P4P5

InstrumentationP2 Database DevelopCAD/CAMMaintenanceCAD/CAM

150000135000250000310000500000

Montreal

ParisBoston

PNO PNAME BUDGET LOC

PROJ1

P1P2

InstrumentationP2 Database Develop

150000135000

MontrealPNO PNAME BUDGET LOC

PROJ2

P3P4P5

CAD/CAMMaintenanceCAD/CAM

250000310000500000

ParisBoston

PNO PNAME BUDGET LOC

<$200000 >=$200000

Page 97: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

分段例子(垂直分段)

PROJ

P1P2P3P4P5

InstrumentationP2 Database DevelopCAD/CAMMaintenanceCAD/CAM

150000135000250000310000500000

Montreal

ParisBoston

PNO PNAME BUDGET LOC

PROJ1 PROJ2

P1P2P3P4P5

InstrumentationP2 Database DevelopCAD/CAMMaintenanceCAD/CAM

150000135000250000310000500000

Montreal

ParisBoston

PNO PNAMEBUDGET LOCP1P2P3P4P5

PNO

Page 98: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

DDBMS形式

DDBMS形式 1 DBMS

A

DDBMSDBMS

B

DDBMSDBMS

C

DDBMS

形式2 DBMSA

DBMSB

DBMSC

形式3

DBMSA

DBMSB

DDBMSDBMS

C

Page 99: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

DDBMS形式

DBMSA

DBMSB

DBMSC

DDBMS

DDBMS

DDBMS

DBMSA

DBMSB

DBMSC

DBMSA

DBMSB

DBMSC

DDBMS

Page 100: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

分布式数据库中的透明问题

• 网络透明(Network Transparency)

• 复制透明(Replication Transparency)

• 分段透明(Fragmentation Transparency)

Page 101: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

数据处理的类型

OLTPOn-line Transaction

Processing

OLAPOn-line Analyzing

Processing

处理故障 挖掘和提炼信息

决策支持日常事务工作

Page 102: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

基本概念

• 数据分析(Data analysis):对数据进行统计分析,找出规律特征;.

• 数据挖掘(Data mining):从大量的数据中区自动地发现隐藏的特征模式,为决策作支撑;

• 数据仓库(data warehouse ):将来自多个数据源的数据,以统一的模式,集中存储在某个站点上。其特征:历史数据,海量的数据,数据只添加,只读,无修改;.

• 信息提取(Information-Retrieval):对Internet上得无结构的文本数据进行查找.

Page 103: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

大数据

• 2013年马云:“大家还没搞清PC时代的时候,移动互联网来了,还没搞清移动互联网的时候,大数据时代又来了。”

• 2014年,若基亚CEO:“我们没有做错什么,但不知为什么,我们出局了。”

比特→字节→文件系统→数据库→NOSQL→数据仓库→

数据集市→大数据

符号01

编码

信息词 句

语义

字节

语法组合单元化

领域

Page 104: 第六部分 数据库技术的发展趋势 - hnu.edu.cncsee.hnu.edu.cn/Content/UploadFiles/2004213/Files/...关系数据模型,面向对象数据模型的共 同——结构化数据

多元性的圆梦新时代

files Linux

DatabaseXML

BigData OLAP

NOSQL

OLTP

RDF

WebservicesAndroid

JSON Eclipse