不仅仅是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数据库,由于不需要建立表格,所以非常适用于需要实时性的数据,如日志。我认为这种功能非常方便。