我有一个查询远程MongoDB数据库的Python脚本。查询结果非常大(约650MB)。但是mongo发送的文件极其可压缩,因为它们有很多纯文本。有没有什么方法可以在我的Python脚本和Mongo服务器之间插入某种压缩“代理” - 通过修改代码或使用某种网络实用程序?
答案 0 :(得分:1)
如果您想要简单的解决方案,可以通过压缩的ssh隧道连接到远程主机。假设您在默认端口上运行mongod,并且本地主机上的27017是免费的:
ssh -C -L 27017:127.0.0.1:27017 remote_user@mongohost
至少在虚拟数据上似乎工作得很好。您甚至可以使用paramiko创建ssh隧道(How to create a ssh tunnel using python and paramiko?)并将所有内容保存在Python代码中。
答案 1 :(得分:1)
MongoDB 3.4使用Snappy添加了对网络压缩的支持。虽然默认情况下未启用(使用networkMessageCompressors=snappy
启用它)。
MongoDB 3.6 added support for zlib压缩,默认启用网络压缩。
要在drivers中使用它(例如pymongo),请在配置字符串中添加“compressors = zlib”:
mongodb://localhost/?compressors=zlib