MongoDB Tailable Cursors

MongoDB Tailable Cursors

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的示例

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/

时间: 2024-10-05 17:28:33

MongoDB Tailable Cursors的相关文章

MongoDB资料汇总(转)

原文:MongoDB资料汇总 上一篇Redis资料汇总专题很受大家欢迎,这里将MongoDB的系列资料也进行了简单整理.希望能对大家有用. 最后更新时间:2013-04-22 1.MongoDB是什么 MongoDB介绍PPT分享 MongoDB GridFS介绍PPT两则 初识 MongoDB GridFS MongoDB GridFS 介绍 一个NoSQL与MongoDB的介绍PPT MongoDB:下一代MySQL? 写给Python程序员的MongoDB介绍 又一篇给Python程序员的

MongoDB报表实例方案选型

MongoDB报表实例方案选型 背景介绍 在我们的生产环境使用的是复制集,为了将数据库服务器的业务压力分摊,我们将数据库拆分到了不同的复制集上运行. 我们在MongoDB复制集上运行应用程序,有时候有报表需求,常规用途是获得用户行为的分析,还有其他商业定制指标数据:有搜索引擎的查询需求,使用Solr从oplog.rs获取增量数据更新产品信息的索引. 这些报表查询和搜索引擎的查询需求,尽量不能影响到线上的业务正常运行,因此不能直接在生产数据库上运行报表.经过开发和运维讨论之后,在项目成立之初,计划

MongoDB资料汇总专题

1.MongoDB是什么 MongoDB介绍PPT分享 MongoDB GridFS介绍PPT两则 初识 MongoDB GridFS MongoDB GridFS 介绍 一个NoSQL与MongoDB的介绍PPT MongoDB:下一代MySQL? 写给Python程序员的MongoDB介绍 又一篇给Python程序员的MongoDB教程 MongoDB源码研究系列文章 白话MongoDB系列文章 MongoDB Tailable Cursors 特性介绍 MongoDB 文档阅读笔记 ——

Python操作Mongodb

MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统. 在高负载的情况下,添加更多的节点,可以保证服务器性能. MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案. MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成.MongoDB 文档类似于 JSON 对象.字段值可以包含其他文档,数组及文档数组. 1.创建连接 import pymongo client = pymongo.MongoClient('mongodb:/

实时同步MongoDB Oplog开发指南

转载请注明joymufeng,欢迎访问PlayScala社区(http://www.playscala.cn/) Capped Collections MongoDB有一种特殊的Collection叫Capped collections,它的插入速度非常快,基本和磁盘的写入速度差不多,并且支持按照插入顺序高效的查询操作.Capped collections的大小是固定的,它的工作方式很像环形缓冲器(circular buffers), 当剩余空间不足时,会覆盖最先插入的数据. Capped co

python 连接mongodb ,并将EXCEL文档导入mongodb

一.下载软件 1.https://pypi.python.org/pypi/pymongo/#downloads  下载 PYMONGO 下载后 用命令提示符  cmd进入目录 并运行命令 python setup.py install 2.下载 xlrd  https://pypi.python.org/pypi/xlrd 利用pymongo包进行数据库的连接,使用xlrd包读取excel数据,由于二者数据结构的不同,要将excel格式数据转换为json格式数据.由于编码问题会出现"TypeE

限制集

本节内容 概述 行为 限制和建议 程序 概述 限制集 是固定大小的集合支持基于文档插入顺序的高吞吐率的插入.检索.删除操作.限制收集工作在某种程度上类似于循环缓冲区:一旦一个文档填满分配给它的空间,他将通过在限制集中重写老文档来给新文档让出空间. 查阅 createCollection() 或者 create 了解关于创建限制集的更多信息. 行为 插入顺序 限制集合能够保留插入顺序.因此,查询并不需要索引来保证以插入顺序来返回文档.减少了索引的消耗,限制集合可以支持更高的插入吞吐. 最旧文档的自

Tornado异步任务的实现之一

前言 刚开始使用用tornado时都很迷惑:tornado不是标榜异步非阻塞解决10K问题的嘛? 但为什么我在handler中有一个步骤是耗时时,整体的响应就慢下了呢? 是不是torando根本就不好用. 其实是你用错了,因为你没有将你的耗时任务使用tornado的异步功能实现. 下面就各种torndo响应请求,进行耗时任务处理时的各种异步场景一一总结 一.异步HTTP请求的实现 tornado是一个异步web framework,说是异步,是因为tornado server与client的网络

zabbix监控mongod

参考 :http://john88wang.blog.51cto.com/2165294/1565968 http://aaronsa.blog.51cto.com/5157083/1741514  监控项讲解 1 被监控端写mongodb.sh 注意:里面的路径和你的端口要看自己的实际情况 case $# in   1)     output=$(/bin/echo "db.serverStatus().$1" |/usr/local/mongodb/bin/mongo admin