1. MongoDB 3.4简介
MongoDB是一个开源、分布式文档数据库,它是将数据以BSON(Binary JSON)二进制格式进行存储的。MongoDB3.4是MongoDB最新的稳定版本,它带来了一些新特性,包括基于MongoDB Compass的可视化分析工具,以及增加了多文档事务、增加了一些新的聚合操作符等功能。
1.1 MongoDB Compass
MongoDB Compass是一个可视化分析工具,可以方便的进行数据分析和洞察。它带来了一个新的图形用户界面(GUI)工具,可以提供对你的MongoDB数据的更好的可视化控制。
其中,Compass还有一个新功能就是MongoDB的Schema分析器,它可以根据你的数据集,在MongoDB文档中数据类型的分布、每个字段的值的分布以及对数据进行分块等等。
1.2 增加了多文档事务
在MongoDB 3.4版本中,增加了对多文档事务的支持。这个新功能在MongoDB中是一个重要的改变,使得MongoDB可以在复杂的企业环境中进行更加强大的数据管理。
这个功能将帮助开发人员更好的处理操作过程中的错误,可以在同一文档事务中执行多个操作,某个操作失败时,整个事务都会自动回滚操作,使你的数据库保持在一致的状态。这是避免脏数据插入的好方法。
1.3 新增聚合操作符
在MongoDB 3.4中新增加了几个聚合操作符,这些聚合操作符可以帮助你更好的处理一些数据聚合问题。
例如,$sample操作符可以从集合中随机抽样一定数量的文档,而$lookup操作符可以将来自不同集合的文档连接起来。
2. MongoDB 3.4的使用
2.1 安装MongoDB 3.4
安装MongoDB 3.4非常简单,你可以从MongoDB的官方网站下载稳定版本的MongoDB,并进行安装。在安装完成后,可以通过以下命令验证MongoDB是否正确安装。
mongod --version
如果你看到了MongoDB成功安装,你可以通过以下命令在你的机器上启动MongoDB实例。
mongod
2.2 连接MongoDB
连接MongoDB非常简单,你可以通过以下Python代码将自己连接到数据库。
from pymongo import MongoClient
# 创建 MongoDB 客户端
client = MongoClient('localhost', 27017)
# 连接到相应的数据库
db = client.test_database
# 或者 db = client['test_database']
2.3 创建集合
可以通过以下代码在MongoDB中创建集合。
# 创建新的集合
>>> collection = db.test_collection
# 或者 collection = db['test-collection']
2.4 插入文档
可以通过以下的代码将数据插入到集合中:
# 创建一个文档
>>> import datetime
>>> post = {"author": "Mike",
... "text": "My first blog post!",
... "tags": ["mongodb", "python", "pymongo"],
... "date": datetime.datetime.utcnow()}
# 插入文档
>>> posts = db.posts
>>> post_id = posts.insert_one(post).inserted_id
>>> post_id
ObjectId('...')
在上面的代码中,我们将一个包含了几个字段的文档插入到了MongoDB中,其中文档的_id自动生成,并且返回给了我们。
3. MongoDB 3.4的性能提升
3.1 WiredTiger存储引擎
WiredTiger是MongoDB3.4的默认存储引擎,而且它带来了很多对性能的提升。使用WiredTiger存储引擎后,MongoDB在写入方面的速度提高了65%左右,并且能够支持更高的并发。
具体而言,WiredTiger使用了一种命名空间的分离策略,将数据进行保存和索引,达到了更高的写入及查询效率。另外,小文档的读写速度也比MMapv1存储引擎快。
3.2 存储空间管理
在MongoDB 3.4版本中,提供了更好的存储空间管理能力。现在,MongoDB可以在重建数据库索引、合并和压缩(daily smart compaction)、实时压缩(idletime compression)和滚动更新时,动态地压缩数据。(在MMapv1中,压缩的数据需要对数据文件进行归档,这样会导致存储空间的大量浪费)。
4. 结论
在MongoDB 3.4版本中,带来了很多值得期待的改变和新特性。MongoDB Compass作为一个可视化分析工具,可以帮助数据库管理者更加直观的了解和控制当前的数据库。而对于开发人员而言,增加了多文档事务和新增聚合操作符等功能,可以更加轻松的应对数据管理和处理过程中的复杂问题。此外,WiredTiger存储引擎的运用和存储空间管理算法的改进,使得MongoDB在查询及写入效率上有了很大提升。没有任何疑问,MongoDB 3.4是一个更加优秀的版本,值得你去使用和尝试。