gpt4 book ai didi

MongoDB - 使用推文和统计数据

转载 作者:可可西里 更新时间:2023-11-01 09:13:20 26 4
gpt4 key购买 nike

我正在使用 Twitter 实时流式传输 API 来保持特定轨道的活跃计数。例如,我想跟踪“苹果”、“橙子”和“梨”在推特上的发布次数。我正在使用 Mongo 存储推文数据,但我有一个问题,即如何最好地获取我关注的每条轨道的计数。

我将每秒运行一次此查询以获得每个轨道的接近实时计数,因此我需要确保以正确的方式进行:

选项 1

针对特定轨道运行计数查询

 db.tweets.count({track: 'apple'})

考虑到推文数据库将保存大量数据(可能数百万),我想知道这是否会有点慢?

选项 2

创建第二个集合“track_count”并在每次收到新推文时更新“count”属性:

{track:'apple', count:0}
{track:'orange', count:0}
{track:'pear', count:0}

然后当一条新推文进来时:

db.track_count.update( { track:"apple" }, { $inc: { count : 1 } } );

然后我可以为每个轨道保留最新的计数,但这意味着两次写入数据库,一次用于推文,另一次用于增加轨道计数。请记住,每秒可能会收到相当多(数十,也许数百)条推文。

有人对执行此操作的最佳方法有任何建议吗?

最佳答案

毫无疑问,使用一个单独的 track_count 集合来保持匹配次数的运行总数。否则,您将每秒重新查询整个 tweets 集合,随着数据量的增长,这将变得非常缓慢和昂贵。

不要担心两次写入数据库,一次存储推文,然后再次增加计数器。 MongoDB 中的写入速度非常快,并且此解决方案的扩展能力将远远超过每秒数千条推文,即使在单个非集群 Mongo 实例上也是如此。

关于MongoDB - 使用推文和统计数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6153062/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com