不仅仅是Firebase,还可以通过MongoDB来实时获取更新的值的方法

有时候我们想要实时获取数据库值的更改。例如聊天消息或其他日志。

在那个时候非常方便的就是Firebase实时数据库。它是一个免费可用的NoSQL数据库,可以接收到值的添加或更改的通知。

由于研究项目的关系,我遇到了大量请求产生的问题。在Firebase上可能会超出免费存储空间的限制,因此我尝试在原本用于日志存储的MongoDB服务器上实时获取值。

使用Change Streams

更改流
MongoDB3.6及更高版本中有一个名为”更改流”的功能。
该功能可以通过流接收数据库中添加的值。

你可以使用以下简单的代码实时获取值。

from pymongo import MongoClient

client = MongoClient('localhost', 8001)
db = client['db']
collection = db['logs']
st = collection.watch()
while True:
    print(next(st))

只需要在`collection`上调用`.watch()`即可。这样做非常简单。

然而,如果MongoDB服务器没有进行复制,该功能将导致错误。这是因为在数据库的实时处理中,保持一致性是非常重要的。

使用MongoDB进行复制设置

在MongoDB中构建两个节点的副本集的方法,由于本博客已经详细而易懂地介绍了,因此在这里省略。

总结

一旦搭建起复制集,非常容易实时获取数据值呢。
特别是像MongoDB这样的NoSQL数据库,由于不需要建立表格,所以非常适用于需要实时性的数据,如日志。我认为这种功能非常方便。

广告
将在 10 秒后关闭
bannerAds