最不喜欢在Tornado中使用任何同步阻塞型的东西,不想让ioloop阻塞在某个IO调用上,因为单线程的东西任何阻塞都是代价很高的,除非你的数据库被优化的性能很好,速度很快。除了之前的线程池之外,直接使用异步库也是不错的选择,Motor就是Tornado里可以用的很好的异步库,它兼容Tornado的gen.coroutine式的异步调用形式,主要使用了greenlet来巧妙的封装PyMongo的同步API, 把底层的socketIO进行了异步化的处理,化同步为异步。
从使用的例子来分析Motor是如何把PyMongo的API异步化的:
client = motor.MotorClient(...)
db = client['te
继续阅读 »
文/Robin
这是「区块链技术指北」的第 38 篇文章。
本站推广
币安是全球领先的数字货币交易平台,提供比特币、以太坊、BNB 以及 USDT 交易。
币安注册: https://accounts.binancezh.pro/cn/register/?ref=11190872
邀请码: 11190872
如果对我感兴趣,想和我交流,我的微信号:Wentasy,加我时简单介绍下自己,并注明来自「区块链技术指北」,同时我会把你拉入微信群。
题图来自: © ChainONE / Original / chainon.io
更新:从 EOSIO 1.1.0 开始,已经默认支持 MongoDB,所以本文提供的方法仅做参考
继续阅读 »
写在前面
book 开头的文章都是记录我个人的读书记录的,里面分情况会记录下面这些东西:目录,读书感想,技术分享和推荐等。如果只是写下目录,那大多是留给自己以后看的。我不会把书长篇大论地翻译成中文,只会写下能对我个人以后真正有用的东西。
这是一本讲mongodb实践的经验书籍,就66页,除去前面目录什么的,也就50来页,对我个人还是挺有用的,所以我写下其目录,供以后复习时用。没必要写什么读书笔记,毕竟大脑才是最好用的u盘。
目录
Duplicate data for speed, reference data for integrity
Normalize if you need to future-proof
继续阅读 »
Connecting to a Replica Set from Pymongo
py
read_pref = pymongo.read_preferences.ReadPreference.SECONDARY
connection = pymongo.MongoClient() # for default localhost:port
connection = pymongo.MongoClient(host=['mongodb://localhost:27001', 'mongodb://localhost:27002'], replicaSet="setName", w=1, j=False, read_preferenc
继续阅读 »
由于在搭建的过程中涉及到很多权限问题(permission denied),建议使用root用户进行下面的操作。
1. 安装并启动mongodb
到mongodb官网下载相应系统的最新版安装包,或者从以下链接下载较旧的64位linux mongodb 3.0.1,。下载完以后请放/root目录下,然后解压。
继续阅读 »
Performance
本周的内容基本与上周Mongodb for DBAs: week3重复,重点和之前没有的再记一次好了。
继续阅读 »
Schema Design
mongodb区别于sql数据库,没有外键,支持内嵌文档。在设计数据库时既可以内嵌也可以分别创建不同的集合再进行连接,较为自由。内嵌的好处是提高磁盘读取效率。缺点是不能内嵌太多文档,否则会超过16MB的文档大小限制,还有如果内嵌导致大量重复数据则容易造成数据不一致。
继续阅读 »
Storage Engine
Mongodb 现有两个存储引擎,默认的是MMAPv1,可选的是WiredTiger。可以在启动数据库时指定。wiredTiger支持而MMAPv1不支持的特性有:文档级别锁,数据压缩。
shell
mongod --storageEngine wiredTiger
继续阅读 »
Replication
Why replication?
high availability (when server failure occurs)
durability
scaling in some situations
disaster recovery
继续阅读 »