NoSQL -- 2.MongoDB文档数据库介绍以及建立

传统关系型数据库(TRDB)需要对表结构进行预先定义和严格约束,这样会导致处理数据过程中技术更加繁琐,甚至执行效率会严重下降。在数据量达到一定量的规模后,TRDB反应迟钝,甚至使用户端界面无法打开。因此前人引入了文档数据库,避开对表结构的预先定义和严格约束,从而加快执行效率。

文档数据库存储结构的基本要素

1.键值对(Key-Value Pair)

键和值的组合,他们是一对一的映射关系,一个键只能对应一个值,而同个值可以对应多个键,例如"唐三:男",“唐昊:男”,但不能 “唐三:女”,“唐三:男”。

2.文档

文档就是有键值对构成的有序集。

3.集合

集合是由若干条文档构成的对象。一个集合对应的文档应该具有相关性。

4.数据库

文档数据库包括多个集合,在进行数据操作前,必须指定数据库名。

基本数据操作方式

1.写(Insert)命令

语法:db.collection_name.insert()

关于写的其他语法后续会说到。

2.读(Select)命令

语法:db.collection_name.insert()

3.改(Update)命令

语法:db.collection_name.update()

4.删(Remove)命令

语法:db.collection_name.remove()

文档存储的优缺点

1.优点

  • 简单:没有数据存储结构定义要求,不需要考虑约束条件,从而提高读写响应速度。

  • 相对高效:相对TRDB而言是高效的,以MongoDB为列,TRDB,最大并发支持操作时几千到几万条之间,而MongoDB是几万到几十万之间。

  • 文档格式处理:文档数据库擅长基于JSON,XML,BSON。

  • 查询功能强大:接近与SQL的查询功能。

  • 分布式处理:文档数据库具有分布式多服务器处理功能,有很强的可伸缩性,给大数据处理带来了很多方便,可以解决PB和EB级的数据存储。

2.缺点

  • 缺少约束:文档数据库为了追求效率牺牲了很多东西,比如说集合与集合之间的关系,当删除一条记录时,它不会像SQL那样会提示你这条数据被别的表使用,不能删除。
  • 数据出现冗余:相对操作速度而言,出现一些合理的冗余是允许的,而SQL语言不会允许出现冗余。

数据库类型

(1) admin数据库:一个权限数据库,如果创建用户的时候将该用户添加到admin数据库中,那么该用户自动继承所有数据库权限。

(2) local数据库:这个数据库永远不会被负责,可以用来存储本地服务器单台服务器的任意集合。

(3) config数据库:当MongoDB使用分片模式时,config数据库在内部使用,用于保存分片的信息。

(4)test数据库:MongiDB安装后的默认数据库,可以用于数据库命令的各种操作,包括测试。

(5)自定义数据库:根据应用系统需要建立的业务数据库。

MongoDB数据库建立相关命令

在操作MongoDB相关命令之前需要安装MongoDB服务器,这里一位朋友的一篇文章写的很详细安装配置MongoDB

1.创建数据库use

> use goodsdb
switched to db goodsdb

use DATABASE_NAME

如果数据库不存在,则创建数据库,否则切换到指定数据库。

2.查看数据库show dbs

> show dbs
admin    0.000GB
goodsdb  0.000GB
local    0.000GB
test     0.000GB

show dbs

对于刚刚建立的goodsdb数据库并没有显示出来,原因是goodsdb数据库里没有任何内容。需要在goodsdb数据库里增加数据。

3.插入一条简单文档

 db.goodsbaseinf.insert(
... {name:"MongoDB教程",price:32}
... )
WriteResult({ "nInserted" : 1 })

4.统计某数据库信息

> use test
switched to db test
> db.stats()
{
        "db" : "test",						//系统自带数据库
        "collections" : 1,			 		// 集合数量
        "views" : 0,
        "objects" : 3,						//文档对象个数,所有集合的记录数之和
        "avgObjSize" : 76.33333333333333,		//平均对象大小
        "dataSize" : 229,					 //当前库所有集合的数据库大小
        "storageSize" : 36864,				//磁盘存储大小
        "numExtents" : 0,					//所有集合的扩展数量统计数
        "indexes" : 1,						//已建立索引数量
        "indexSize" : 36864,				//索引大小
        "ok" : 1
}

5.删除数据库dropdatabase()

> use goodsdb
switched to db goodsdb
> db.dropDatabase()
{ "dropped" : "goodsdb", "ok" : 1 }

执行该命令对应的数据库文件将会消失,一般情况具有不可恢复性。所以不要随便执行该命令

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星空皓月

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值