关系型数据库与文档型数据库的差别?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关系型数据库与文档型数据库的差别?相关的知识,希望对你有一定的参考价值。

商用关系型数据库:db2,oracle,sqlserver
开源关系型数据库:mysql,postgrel
文件型数据库:louts domino/notes...
帮忙具体分析一下这两种数据库的特点及优劣,谢谢!
如果可以举例说明一下就更好了:)

参考技术A 关系型就是app(实例或者是程序)对应数据库,数据库再对应多个文档

文件型是实例直接对应文档

我是学信息管理的,正在奋斗OCA有空交流

lakespoon@gmail.com
参考技术B 关系型数据库是比较好的。从数据库发展历史上看,关系型数据库是在文件型数据库后面产生的,它的功能比文件型数据库强大的多。
关系型数据库是严格建立在关系数学的逻辑上的,它是经过严格的数学证明的,也是目前数据库是使用最广泛的一种数据库结构。
它主要是以二维表的形式来表现数据结构,它表示行与列的关系,有很多好的数据库运算在关系型数据库上可以很好的实现。
可以查看一些数据库的书籍。

其他技术----mongoDB基础

MongoDB简单使用

介绍MongoDB

MongoDB是一种文档型数据库,它属于非关系型数据库。数据对象以BSON(二进制JSON)格式被存储在集合的文档中,而不是关系数据库的行和列中。

MongoDB基本概念

集合

使用集合将数据编组,是一组用途相同的文档,类似表的概念,但集合不受模式的限制,在其中的文档格式可以不同。

文档

文档表示单个实体数据,类似一条记录(行);与行的差别:行的数据是扁平的,每一列只有一个值,而文档中可以包含子文档,提供的数据模型与应用程序的会更加一致。

如果MongoDB与关系型数据库表和数据库的对应关系如下
集合--->表
文档--->表中的行

通过CLI操作MongoDB

数据库操作

// 显示数据库
> show dbs
// 切换数据库(如果没有该数据库则会创建这个临时的数据库)
> use abc
// 显示当前使用的数据库
> db
// 删除数据库
> db.dropDatabase()

集合操作

// 显示所有集合
> show collections
// 创建一个集合
> db.createCollection('persons')
// 删除一个集合
> db.persons.drop()

insert操作

在插入一个文档时,我们可能插入一个或多个文档,所以就会有两种插入方式,分别是db.collection.insertOne()和db.collection.insertMany()当然db.collection.insertOne()可以写成db.collection.insert()。
数据插入后会自动生成一个值,而这个值相当于表中的主键。
插入实例

db.persons.insertOne({name:‘alice‘,age:20})
db.persons.insertMany([{name:‘bob‘,age:20},{name:‘jack‘,age:21,phone:[‘1899445123‘,‘13244648852‘]}])

find操作

由于NoSQL中是没有关联查询存在的,所以NoSQL中的查询就相对来说容易许多。查询的复杂度就小许多。

db.persons.find()检索所有的文档
// name 是 bob
db.persons.find({name:‘bob‘})
// age 大于 20
db.persons.find({age:{$gt:20}})
// age 小于30 且 name 是 bob
db.persons.find({age:{$lt:30},name:‘bob‘)

update操作

更新一个文档,如果有多个符合条件的话则只替换其中的第一个。
db.collection.updateOne()
更新多个文档
db.collection.updateMany()
更新实例

db.persons.updateOne(
{name:‘alice‘}, // 条件
{$set:{age:19}} // 新的数据
)

delete操作

删除一个文档,如果有多个文档符合条件,那么mongoDB会删除第一条匹配的数据。
db.collection.deleteOne()
删除多个文档,会将所有符合条件的文档删除。
db.collection.deleteMany()
删除实例

db.persons.deleteOne({name:‘bob‘})
db.persons.deleteMany([{},{}])
MongoDB在进行插入操作时,如果指定的数据库是不存在的数据库或未选择数据库,数据操作将会在test数据库中操作。

以上是关于关系型数据库与文档型数据库的差别?的主要内容,如果未能解决你的问题,请参考以下文章

关系型数据库到文档型数据库的跨越

mongodb与mysql区别(超详细)

20个MongoDB经典面试题

逻辑数据流图与物理数据流图的差别

MongoDB详解

分布式文档型NoSQL数据库——MongoDB初探