MongoDB Tailable Cursors

本文涉及的产品
云数据库 MongoDB,通用型 2核4GB
简介:

MongoDB 有一个叫 Tailable Cursors的特性,它类似于tail -f 命令,你在一个Capped Collection上面执行查询操作,当操作完成后,你可以不关闭返回的数据Cursor,并持续地从中读出新加入的数据。

在高写入的Capped Collection上,索引不可用时,可使用Tailable Cursors。例如,MongoDB复制使用了Tailable Cursors来获取Primary的尾oplog日志。

考虑以下与Tailable Cursors相关的行为:

  • Tailable Cursors不使用索引,并以自然排序返回文档。

  • 因为Tailable Cursors不使用索引,查询的初始扫描非常耗性能;但是,游标初始化完后,随后获取到的新增加的文档是很快速的。

  • Tailable Cursors如果遇到以下情况之一将会僵死或无效:

    • 查询无匹配结果。

    • 游标在集合尾部返回文档,随后应用程序删除了该文档。

僵死的游标id为0。


DBQuery.Option.awaitData

在使用TailableCursor时,此参数会在数据读尽时先阻塞一小段时间后再读取一次并进行返回。

跟踪oplog的示例

1
2
3
4
5
6
use local
var  cursor = db.oplog.rs.find({ "op"  "u" "ns"  "MyDB.Product" },{ "ts" : 1,  "o2._id" : 1}).addOption(DBQuery.Option.tailable).addOption(DBQuery.Option.awaitData);
while (cursor.hasNext()){
     var  doc = cursor.next();
     printjson(doc);
};


2.6版的游标方法:
cursor.addOption()
https://docs.mongodb.com/v2.6/reference/method/cursor.addOption/

3.2版的游标方法:
cursor.tailable()
https://docs.mongodb.com/manual/reference/method/cursor.tailable/













本文转自UltraSQL51CTO博客,原文链接:http://blog.51cto.com/ultrasql/1789038 ,如需转载请自行联系原作者




相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
存储 NoSQL Unix
MongoDB(3)- Database 数据库相关
MongoDB(3)- Database 数据库相关
148 0
|
NoSQL 数据库 索引
|
SQL 安全 关系型数据库
Troubleshooting RDS Performance (MySQL, SQL SERVER and MongoDB)
A lot of questions have been raised by our users concerning why ApsaraDB for RDS sometimes performs worse than self-built databases on RDS.
3112 0
|
存储 关系型数据库 索引
|
关系型数据库 MySQL PHP
|
NoSQL 数据库
MongoDB Data Synchronization
MongoDB replica set (V3.0) synchronizes member status information through heartbeat information. Each node periodically sends heartbeat information to other members in the replica set.
2194 0
|
NoSQL 数据库
Six Reasons to Embrace MongoDB 3.x Over MongoDB 2.x
Are you still deciding if you should upgrade to the next MongoDB version? This article is lists five reasons why we think you should switch from MongoDB 2.
2435 0
|
NoSQL 数据库 MongoDB
MongoDB 游标
MongoDB中的游标与关系型数据库中的游标在功能上大同小异。游标相当于C语言的指针,可以定位到某条记录,在MongoDB中,则是文档。
1117 0