学习日记-MongoDB

MongoDB 是一个文档数据库(以 JSON 为数据模型)由 C++ 语言编写,旨在为 WEB应用提供可扩展的高性能数据存储解决方案。文档指的是JSON Document 并非我们一般理解的pdf word的文档 当前版本:4.4.9
MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,数据格式是 BSON ,一种类似 JSON的二进制形式的存储格式,简称 Binary JSON ,和 JSON一样支持内嵌的文档对象和数组对象 因此可以存储比较复杂的数据类型。 MongoDB最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。 原则上 Oracle 和MySQL 能做的事情, MongoDB 都能做(包括 ACID 事务)。
1. 数据库( database):最外层的概念,可以理解为逻辑上的名称空间,一个数据库包含多个不同名称的集合。
2. 集合( collection ):相当于 SQL 中的表,一个集合可以存放多个不同的文档。
3. 文档( document ):一个文档相当于数据表中的一行,由多个不同的字段组成。
4. 字段( field ):文档中的一个属性,等同于列( column )。
5. 索引( index ):独立的检索式数据结构,与 SQL 概念一致。
6. id :每个文档中都拥有一个唯一的 id 字段,相当于 SQL 中的主键( primary key )。
7. 视图( view ):可以看作一种虚拟的(非真实存在的)集合,与 SQL中的视图类似。从3.4 版本开始提供了视图功能,其通过聚合管道技术实现。MongoDB
8.聚合操作( $lookup ): MongoDB 用于实现 类似 表连接( tablejoin )的聚合操作符。
尽管这些概念大多与 SQL 标准定义类似 但 MongoDB 与传统RDBMS仍然存在不少差异 
1.半结构化,在一个集合中,文档所拥有的字段并不需要是相同的,而且也不需要对所用的字段进行声明。因此, MongoDB具有很明显的半结构化特点。除了松散的表结构,文档还可以支持多级的嵌套、数组等灵活的数据类型,非常契合面向对象的编程模型。
2.弱关系 MongoDB 没有外键的约束,也没有非常强大的表连接能力。类似的功能需要使用聚合管 道技术来弥补
MongoDB的优势
1. 高水平扩展能力使得它在处理海量、高并发的数据应用时颇具优势。
2. JSON 结构和对象模型接近,开发代码量低
3. JSON的动态模型意味着更容易响应新的业务需求
4. 复制集提供99.999%高可用
5. 分片架构支持海量数据和无缝扩容
6. 简单直观:从错综复杂的关系模型到一目了然的对象模型
7.  原生的高可用
8.  横向扩展能力

  

MongoDB 应用场景
从目前阿里云 MongoDB 云数据库上的用户看, MongoDB 的应用已经渗透到各个领域:
1.游戏场景,使用 MongoDB 存储游戏用户信息,用户的装备、 积分 等直接以内嵌文档的形式存储,方便查询、更新;
2.物流场景,使用 MongoDB 存储订单信息,订单状态在运送过程中会不断更新,以 MongoDB 内嵌数组的形式来存储,一次查询就能将订单所有的变更读取出来;
3.社交场景,使用 MongoDB 存储存储用户信息,以及用户发表的朋友圈信息,通过地理位置索引实 现附近的人、地点等功能;
4.物联网场景,使用 MongoDB 存储所有接入的智能设备信息,以及设备汇报的日志信息,并对这些信息进行多维度的分析;
5.视频直播,使用 MongoDB 存储用户信息、礼物信息等;
6.大数据应用,使用云数据库 MongoDB 作为大数据的云存储系统,随时进行数据提取分析,掌握行业动态;

 

如何考虑是否选择MongoDB?

没有某个业务场景必须要使用 MongoDB 才能解决,但使用 MongoDB 通常能让你以更低的成本解决问题。如果你不清楚当前业务是否适合使用MongoDB, 可以通过做几道选择题来辅助决策。
1.应用不需要负责的长事物和join
2.需求变动频繁 无法确定模型 快速迭代开发
3.2000-3000以上的qps
4.TB-PB级别的储存
5.快速水平扩展
6.数据长久储存
7.99的高可用
8.大量的地理位置和文本查询
mongo shell常用命令
命令
说明
show dbs | show databases
显示数据库列表
use 数据库名
切换数据库,在第一次插入数据的时候不存在创建数据库
db.dropDatabase()
删除数据库
show collections | show tables
显示当前数据库的集合列表
db. 集合名 .stats()
查看集合详情
db. 集合名 .drop()
删除集合
show users
显示当前数据库的用户列表
show roles
显示当前数据库的角色列表
show profile
显示最近发生的操作
load("xxx.js")
执行一个 JavaScript 脚本文件
exit | quit()
退出当前shell
db.help()
查找数据库帮助命令
db. 集合名 .help()
查找集合帮助命令
db.version()
查看数据库版本
db.runCommand({ connectionStatus: 1 })
 
当前连接的用户信息,以及该用户所拥有的权限和角色。
db.auth('username', 'password')当前用户在哪个库创建的需要再哪个库下面执行命令 切换用户
db返回当前数据库的信息
db.createUser({ user: "myUser", pwd: "myUserPassword", roles: [ { role: "readWrite", db: "myDatabase" }, { role: "read", db: "anotherDatabase" } ] })创建新用户,并为其分配角色 除了特定的一些权限(全部可读或者写)在admin库下面创建用户 其他的根据业务 在指定的业务库下面创建角色 

  • 13
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值