关于数据库:MongoDB

44次阅读

共计 3227 个字符,预计需要花费 9 分钟才能阅读完成。

MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 利用提供可扩大的高性能数据存储解决方案。
MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中性能最丰盛,最像关系数据库的。

MongoDB 将数据存储为一个文档,数据结构由键 (key=>value) 对组成。MongoDB 文档相似于 JSON 对象。字段值能够蕴含其余文档,数组及文档数组。

次要特点

  • MongoDB 是一个面向文档存储的数据库,操作起来比较简单和容易。
  • 你能够在 MongoDB 记录中设置任何属性的索引 (如:FirstName=”Sameer”,Address=”8 Gandhi Road”)来实现更快的排序。
  • 你能够通过本地或者网络创立数据镜像,这使得 MongoDB 有更强的扩展性。
  • 如果负载的减少(须要更多的存储空间和更强的解决能力),它能够散布在计算机网络中的其余节点上这就是所谓的分片。
  • Mongo 反对丰盛的查问表达式。查问指令应用 JSON 模式的标记,可轻易查问文档中内嵌的对象及数组。
  • MongoDb 应用 update()命令能够实现替换实现的文档(数据)或者一些指定的数据字段。
  • Mongodb 中的 Map/reduce 次要是用来对数据进行批量解决和聚合操作。
  • Map 和 Reduce。Map 函数调用 emit(key,value)遍历汇合中所有的记录,将 key 与 value 传给 Reduce 函数进行解决。
  • Map 函数和 Reduce 函数是应用 Javascript 编写的,并能够通过 db.runCommand 或 mapreduce 命令来执行 MapReduce 操作。
  • GridFS 是 MongoDB 中的一个内置性能,能够用于寄存大量小文件。
  • MongoDB 容许在服务端执行脚本,能够用 Javascript 编写某个函数,间接在服务端执行,也能够把函数的定义存储在服务端,下次间接调用即可。
  • MongoDB 反对各种编程语言:RUBY,PYTHON,JAVA,C++,PHP,C# 等多种语言。
  • MongoDB 安装简单。

关系型数据库遵循 ACID 规定

事务在英文中是 transaction,和事实世界中的交易很相似,它有如下四个个性:

1、A (Atomicity) 原子性

原子性很容易了解,也就是说事务里的所有操作要么全副做完,要么都不做,事务胜利的条件是事务里的所有操作都胜利,只有有一个操作失败,整个事务就失败,须要回滚。

比方银行转账,从 A 账户转 100 元至 B 账户,分为两个步骤:1)从 A 账户取 100 元;2)存入 100 元至 B 账户。这两步要么一起实现,要么一起不实现,如果只实现第一步,第二步失败,钱会莫名其妙少了 100 元。

2、C (Consistency) 一致性

一致性也比拟容易了解,也就是说数据库要始终处于统一的状态,事务的运行不会扭转数据库本来的一致性束缚。

例如现有完整性束缚 a +b=10,如果一个事务扭转了 a,那么必须得扭转 b,使得事务完结后仍然满足 a +b=10,否则事务失败。

3、I (Isolation) 独立性

所谓的独立性是指并发的事务之间不会相互影响,如果一个事务要拜访的数据正在被另外一个事务批改,只有另外一个事务未提交,它所拜访的数据就不受未提交事务的影响。

比方当初有个交易是从 A 账户转 100 元至 B 账户,在这个交易还未实现的状况下,如果此时 B 查问本人的账户,是看不到新减少的 100 元的。

4、D (Durability) 持久性

持久性是指一旦事务提交后,它所做的批改将会永恒的保留在数据库上,即便呈现宕机也不会失落。

数据库

一个 mongodb 中能够建设多个数据库。

MongoDB 的默认数据库为 ”db”,该数据库存储在 data 目录中。

MongoDB 的单个实例能够包容多个独立的数据库,每一个都有本人的汇合和权限,不同的数据库也搁置在不同的文件中。

“show dbs” 命令能够显示所有数据的列表。

执行 “db” 命令能够显示以后数据库对象或汇合。

运行 ”use” 命令,能够连贯到一个指定的数据库。

数据库也通过名字来标识。数据库名能够是满足以下条件的任意 UTF- 8 字符串。

  • 不能是空字符串(””)。
  • 不得含有 ’ ‘(空格)、.、$、/、和 0 (空字符)。
  • 应全副小写。
  • 最多 64 字节。

有一些数据库名是保留的,能够间接拜访这些有特殊作用的数据库。

  • admin:从权限的角度来看,这是 ”root” 数据库。要是将一个用户增加到这个数据库,这个用户主动继承所有数据库的权限。一些特定的服务器端命令也只能从这个数据库运行,比方列出所有的数据库或者敞开服务器。
  • local: 这个数据永远不会被复制,能够用来存储限于本地单台服务器的任意汇合
  • config: 当 Mongo 用于分片设置时,config 数据库在外部应用,用于保留分片的相干信息。

文档(Document)

文档是一组键值 (key-value) 对(即 BSON)。MongoDB 的文档不须要设置雷同的字段,并且雷同的字段不须要雷同的数据类型,这与关系型数据库有很大的区别,也是 MongoDB 十分突出的特点。


须要留神的是:

  1. 文档中的键 / 值对是有序的。
  2. 文档中的值不仅能够是在双引号外面的字符串,还能够是其余几种数据类型(甚至能够是整个嵌入的文档)。
  3. MongoDB 辨别类型和大小写。
  4. MongoDB 的文档不能有反复的键。
  5. 文档的键是字符串。除了多数例外情况,键能够应用任意 UTF- 8 字符。

文档键命名标准:

  • 键不能含有 0 (空字符)。这个字符用来示意键的结尾。
  • . 和 $ 有特地的意义,只有在特定环境下能力应用。
  • 以下划线 ”_” 结尾的键是保留的(不是严格要求的)。

汇合

汇合就是 MongoDB 文档组,相似于 RDBMS(关系数据库管理系统:Relational Database Management System)中的表格。

汇合存在于数据库中,汇合没有固定的构造,这意味着你在对汇合能够插入不同格局和类型的数据,但通常状况下咱们插入汇合的数据都会有肯定的关联性。

比方,咱们能够将以下不同数据结构的文档插入到汇合中:

{"site":"www.baidu.com"} {"site":"www.google.com","name":"Google"} {"site":"www.labixiaoxin.com","name":"蜡笔小新","num":5}

元数据

数据库的信息是存储在汇合中。它们应用了零碎的命名空间:

dbname.system.*

在 MongoDB 数据库中名字空间 <dbname>.system.* 是蕴含多种零碎信息的非凡汇合(Collection),如下:

对于批改零碎汇合中的对象有如下限度。

在 {{system.indexes}} 插入数据,能够创立索引。但除此之外该表信息是不可变的(非凡的 drop index 命令将自动更新相干信息)。

{{system.users}}是可批改的。{{system.profile}}是可删除的。

MongoDB 数据类型

MongoDB – 连贯

规范 URI 连贯语法:

mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]
  • mongodb:// 这是固定的格局,必须要指定。
  • username:password@ 可选项,如果设置,在连贯数据库服务器之后,驱动都会尝试登录这个数据库
  • host1 必须的指定至多一个 host, host1 是这个 URI 惟一要填写的。它指定了要连贯服务器的地址。如果要连贯复制集,请指定多个主机地址。
  • portX 可选的指定端口,如果不填,默认为 27017
  • /database 如果指定 username:password@,连贯并验证登录指定数据库。若不指定,默认关上 test 数据库。
  • ?options 是连贯选项。如果不应用 /database,则后面须要加上 /。所有连贯选项都是键值对 name=value,键值对之间通过 & 或;(分号)隔开

正文完
 0