简介
MongoDB (来源于 humongous)是一款开源、可扩展、高性能、无模式的 文档导向数据库 ,用 C++ 编程语言编写。
2017 年 10 月 19 日在纳斯达克上市。
官网:
官网文档: https://docs.mongodb.com/manual/
下载:
查询工具 :RT、MongoChef
MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似 json 的 bjson 格式,因此可以存储比较复杂的数据类型。
Mongo 最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
Mongo 主要解决的是海量数据的访问效率问题,根据官方的文档,当数据量达到 50GB 以上的时候,Mongo 的数据库访问速度是 MySQL 的 10 倍以上。
Mongo 的并发读写效率不是特别出色,根据官方提供的性能测试表明,大约每秒可以处理 0.5 万-1.5 次读写请求
MongoDB 只支持对单行记录的原子性修改,并不支持对多行数据的原子操作。
表格 MongoDB 术语表
SQL 术语/概念 | MongoDB 术语/概念 | 解释/说明 |
---|---|---|
database | database | 数据库 |
table | collection | 数据库表/集合 |
row | document | 数据记录行/文档 |
column | field | 数据字段/域 |
index | index | 索引 |
table joins | 表连接,MongoDB 不支持,但可用内嵌文档 BSON | |
primary key | primary key | 主键,MongoDB 自动将_id 字段设置为主键 |
Mongodb 的优点与不足
1、Mongodb 的不足之处
- 在集群分片中的数据分布不均匀。
- 单机可靠性比较差。
- 大数据量持续插入,写入性能有较大波动。
- 磁盘空间占用比较大。
2、Mongodb 的过人之处
- 无模式。
- 查询与索引方式灵活,是最像 SQL 的 Nosql
- 支持复制集、主备、互为主备、自动分片等特性。
MongoDB ObjectId
MongoDB 的 _id (ObjectId) 是系统自动生成的 12 字节唯一标识。但在某些情况下,我们可能需要实现 ObjectId 自动增长功能。由于 MongoDB 没有实现这个功能,我们可以通过编程的方式来实现。
ObjectId 是一个 12 字节 BSON 类型数据,有以下格式:
4BYTES(时间戳) + 3BYTES(机器标识码) + 2BYTES(进程 id-PID) + 3BYTES(随机数)
BSON 格式
BSON 是由 10gen 开发的一个数据格式,目前主要用于 MongoDB 中,是 MongoDB 的数据存储格式。BSON 基于 JSON 格式,选择 JSON 进行改造的原因主要是 JSON 的通用性及 JSON 的 schemaless 的特性。
二进制的 JSON,JSON 文档的二进制编码存储格式
BSON 有 JSON 没有的 Date 和 BinData
MongoDB 中 document 以 BSON 形式存放
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论