Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 发布/订阅数据库和客户端编程数据库之间有什么区别?_Python_Mongodb_Redis_Publish Subscribe - Fatal编程技术网

Python 发布/订阅数据库和客户端编程数据库之间有什么区别?

Python 发布/订阅数据库和客户端编程数据库之间有什么区别?,python,mongodb,redis,publish-subscribe,Python,Mongodb,Redis,Publish Subscribe,我有两个nosqldbms:MongoDB和Redis: Redis拥有著名的PubSub,MongoDB拥有与RDBMS最接近的逻辑,它最适合从SQL过渡到NOSQL,由于MongoDB在python字典和列表中使用,例如,如果用户添加或删除产品,则更改的是列表的长度,因此,代码可以在此处作为通知者编写 那么,在这里使用Redis的好处在哪里呢?我已经在ops日志上使用了Redis pub sub和Mongodb可定制游标(这是一个有上限的集合,请参见.html和)来创建我自己的游标。主要区别

我有两个
nosqldbms
MongoDB
Redis

Redis
拥有著名的
PubSub
MongoDB
拥有与
RDBMS
最接近的逻辑,它最适合从
SQL
过渡到
NOSQL
,由于
MongoDB
python
字典和
列表中使用,例如,如果用户添加或删除产品,则更改的是
列表的长度,因此,代码可以在此处作为
通知者编写


那么,在这里使用Redis的好处在哪里呢?

我已经在ops日志上使用了Redis pub sub和Mongodb可定制游标(这是一个有上限的集合,请参见.html和)来创建我自己的游标。主要区别在于,您是否希望使用Mongo为pub sub构建自己的逻辑。从表面上看,酒吧酒吧间似乎很简单,但与其他任何事情一样,它有很多边缘案例,你必须进行编程。Redis'pub sub已经为您完成了大部分管道工作,因此您可以担心高级编码问题,而将低级内容留给已经解决问题的系统

Mongo战胜Redis的最大优势在于,你可以更好地控制如何建设自己的酒吧,因此,如果你有特殊需求,它可能是一个更好的选择。例如,使用Redis(开箱即用),如果客户机断开连接,10分钟后重新连接,它将在这段时间内丢失消息,并且无法恢复。使用Mongo,客户端可以返回并获取这些消息(注意,它必须从头到尾读取整个封顶集合)-记住,您必须跟踪发送给每个客户端的最后一条消息,等等。Redis有一些解决方法,以便它能够实现这一点-请参见一个示例

如果您需要速度,需要支持大量客户机和大量订阅频道,Redis是一个不错的选择。在我提到的实现中,Redis是迄今为止最快的,能够处理最多数量的客户端。当然,这可能反映了我们的Pub-Sub实现的问题,而不是mongo总体性能的反映。尽管如此,我们确实在Mongo中遇到了全局写锁问题,这在最新版本(2.2?)中得到了缓解


总而言之,如果你需要一些专门的东西,Mongo可能是你的正确选择。但是,如果您希望在大负载情况下直接发送消息,我不会尝试重新发明轮子,而是使用Redis。

我已经在ops日志上使用了Redis pub sub和Mongodb可定制游标(这是一个有上限的集合,请参见.html和)来创建自己的游标。主要区别在于,您是否希望使用Mongo为pub sub构建自己的逻辑。从表面上看,酒吧酒吧间似乎很简单,但与其他任何事情一样,它有很多边缘案例,你必须进行编程。Redis'pub sub已经为您完成了大部分管道工作,因此您可以担心高级编码问题,而将低级内容留给已经解决问题的系统

Mongo战胜Redis的最大优势在于,你可以更好地控制如何建设自己的酒吧,因此,如果你有特殊需求,它可能是一个更好的选择。例如,使用Redis(开箱即用),如果客户机断开连接,10分钟后重新连接,它将在这段时间内丢失消息,并且无法恢复。使用Mongo,客户端可以返回并获取这些消息(注意,它必须从头到尾读取整个封顶集合)-记住,您必须跟踪发送给每个客户端的最后一条消息,等等。Redis有一些解决方法,以便它能够实现这一点-请参见一个示例

如果您需要速度,需要支持大量客户机和大量订阅频道,Redis是一个不错的选择。在我提到的实现中,Redis是迄今为止最快的,能够处理最多数量的客户端。当然,这可能反映了我们的Pub-Sub实现的问题,而不是mongo总体性能的反映。尽管如此,我们确实在Mongo中遇到了全局写锁问题,这在最新版本(2.2?)中得到了缓解


总而言之,如果你需要一些专门的东西,Mongo可能是你的正确选择。但是,如果您希望在大负载情况下使用开箱即用的直截了当的消息传递,我不会尝试重新发明轮子,而是使用Redis。

您这里所说的notificator是什么意思?mongodb没有触发器?据我所知,pubsub与pubsub有关吗?不,MongoDB没有触发器或类似的机制来通知客户端进行更改。@RostyslavDzinko:MongoDB支持有上限的集合,如复制oplog,有些人使用过它。@Stennie,限制太多了,不能说可定制游标是发布/订阅的替代品,尽管我同意它可以应用于狭窄的任务领域。这里的notificator是什么意思?mongodb没有触发器?据我所知,pubsub与pubsub有关吗?不,MongoDB没有触发器或类似的机制来通知客户端进行更改。@RostyslavDzinko:MongoDB支持有上限的集合,如复制oplog,有些人使用过它。@Stennie,限制太多了,不能说可定制游标是发布/订阅的替代品,尽管我同意它可以应用于狭窄的任务领域。谢谢你的回复,所以,如果我同时使用这两种游标,我如何从MongoDB访问Redis,或者必须复制某些数据?这在很大程度上取决于您的应用程序、您设计模式的方式以及数据需要的方向