Mongodb

Mongodb

定义

非关系型数据库

没有结构这么一说,是集合(数组)对文档(文档) (key => value)

MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。

NoSQL,指的是非关系型的数据库。NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称。

关系型数据库与非关系型区别

关系型数据库遵循ACID规则

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

A (Atomicity) 原子性

原子性很容易理解,也就是说事务里的所有操作要么全部做完,要么都不做,事务成功的条件是事务里的所有操作都成功,只要有一个操作失败,整个事务就失败,需要回滚。

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

C (Consistency) 一致性

一致性也比较容易理解,也就是说数据库要一直处于一致的状态,事务的运行不会改变数据库原本的一致性约束。

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

I (Isolation) 独立性

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

比如现在有个交易是从A账户转100元至B账户,在这个交易还未完成的情况下,如果此时B查询自己的账户,是看不到新增加的100元的。

D (Durability) 持久性

持久性是指一旦事务提交后,它所做的修改将会永久的保存在数据库上,即使出现宕机也不会丢失。

非关系型数据库

非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合,可以是文档或者键值对等。

格式灵活

存储数据的格式可以是key,value形式、文档形式、图片形式等等,文档形式、图片形式等等,使用灵活,应用场景广泛,而关系型数据库则只支持基础类型。

速度快

nosql可以使用硬盘或者随机存储器作为载体,而关系型数据库只能使用硬盘;
高扩展性

成本低

nosql数据库部署简单,基本都是开源软件

配置

MongoDB 将数据目录存储在 db 目录下。但是这个数据目录不会主动创建,我们在安装完成后需要创建它。请注意,数据目录应该放在根目录下 (如: C:\ 或者 D:\ 等 )。

–dbpath 路径切换

启动与关闭

需要在 MongoDB 安装目录的 bin 目录下执行 mongodb 即可。

执行启动操作后,mongodb 在输出一些必要信息后不会输出任何信息,之后就等待连接的建立,当连接被建立后,就会开始打印日志信息。

你可以使用 MongoDB shell 来连接 MongoDB 服务器。你也可以使用 PHP 来连接 MongoDB。本教程我们会使用 MongoDB shell 来连接 Mongodb 服务,之后的章节我们将会介绍如何通过php 来连接MongoDB服务。

连接

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,键值对之间通过&或;(分号)隔开

标准的连接格式包含了多个选项(options)略

基本命令

数据库

show dbs --查看显示所有数据库

db --显示当前数据库对象或集合

use 数据名 --切换到指定数据库(当第一个文档插入时,集合就会被创建。)

集合

show collections --查看当前数据的集合

createCollection(‘collectionName’)

文档

find()

Insert(‘document’) 别名 save()

update()

remove()

语法顺序

注:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bz2eShRa-1613957242290)(file:///C:\Users\ASUS\AppData\Local\Temp\ksohtml11400\wps1.jpg)]

数据库

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

不能是空字符串("")。

不得含有’ '(空格)、.、$、/、\和\0 (空字符)。

应全部小写。

最多64字节。

有一些数据库名是保留的,可以直接访问这些有特殊作用的数据库。

admin: 从权限的角度来看,这是"root"数据库。要是将一个用户添加到这个数据库,这个用户自动继承所有数据库的权限。一些特定的服务器端命令也只能从这个数据库运行,比如列出所有的数据库或者关闭服务器。

local: 这个数据永远不会被复制,可以用来存储限于本地单台服务器的任意集合

config: 当Mongo用于分片设置时,config数据库在内部使用,用于保存分片的相关信息。

集合

集合名不能是空字符串""。

集合名不能含有\0字符(空字符),这个字符表示集合名的结尾。

集合名不能以"system."开头,这是为系统集合保留的前缀。

用户创建的集合名字不能含有保留字符。有些驱动程序的确支持在集合名里面包含,这是因为某些系统生成的集合中包含该字符。除非你要访问这种系统创建的集合,否则千万不要在名字里出现$。

文档(Document)

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

主键,MongoDB自动将_id字段设置为主键

表连接,MongoDB不支持

一个mongodb中可以建立多个数据库。

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

MongoDB的单个实例可以容纳多个独立的数据库,每一个都有自己的集合和权限,不同的数据库也放置在不同的文件中。

MongoDB 数据类型

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4cGapt4H-1613957242291)(file:///C:\Users\ASUS\AppData\Local\Temp\ksohtml11400\wps2.jpg)]

应用

mongodb是一个基于分布式文件储存的数据库,

分布式系统

由多台计算机和通信的软件组件通过计算机网络连接(本地网络或广域网)组成。

分布式系统是建立在网络之上的软件系统。正是因为软件的特性,所以分布式系统具有高度的内聚性和透明性。

数据库mysql和mongdb的区别

SQL:mysql、Oracle、sqlserver、db2

高度事务性场景:银行、会计、贸易,库管,需要大量原子性操作

适合存储结构化数据,如用户的帐号、地址,预先定义明确的字段

数据价值高、对安全性要求高、稳定性要求高

需要持久化存储的 “冷数据”(不需要经常读写的数据)

需要通过SQL语言做关联查询,比如join

6.这些数据的规模、增长的速度通常是可以预期的

NoSQL:

redis key:value(string、hash、set、zset、list)、

mongodb {“name” : “xiaoming”, “age” : 18}, {}

mongodb:字典格式,支持分组、索引、主从备份、集群

灵活的数据结构,适合存储非结构化数据,如文章、评论,需要事先设计 数据的增删改 的字段

高度收缩性场景,社交网络、热点资讯,NoSQL数据库通常具有无限(至少接近)伸缩性

处理 “热数据”(经常需要读写的数据),这些数据通常用于模糊处理,如全文搜索、机器学习

这些数据是海量的,而且增长的速度是难以预期的,更容易扩展

按key获取数据效率很高,但是对join或其他结构化查询的支持就比较差

b {“name” : “xiaoming”, “age” : 18}, {}

mongodb:字典格式,支持分组、索引、主从备份、集群

灵活的数据结构,适合存储非结构化数据,如文章、评论,需要事先设计 数据的增删改 的字段

高度收缩性场景,社交网络、热点资讯,NoSQL数据库通常具有无限(至少接近)伸缩性

处理 “热数据”(经常需要读写的数据),这些数据通常用于模糊处理,如全文搜索、机器学习

这些数据是海量的,而且增长的速度是难以预期的,更容易扩展

按key获取数据效率很高,但是对join或其他结构化查询的支持就比较差

大型互联网项目都会选用MySQL(或任何关系型数据库) + NoSQL的组合方案

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值