gpt4 book ai didi

database - 支持实现反垃圾邮件的最佳平台?

转载 作者:行者123 更新时间:2023-12-02 21:47:04 24 4
gpt4 key购买 nike

我必须维护下面提到的架构,其中我将拥有 5000 万用户(行)的记录,并且我需要获取记录并更新该特定记录的每个获取操作的记录计数。

架构:项目 ID |域名 ID |用户 ID |类型 |亚型 | epoch_day |计数

应该使用什么平台来有效地查询这样的模式(需要时间和空间方面的效率)而且如果平台也支持ttl,这样记录一旦过期就会被删除,那就太好了。

查询:

获取过去 1 天内 userId = x、project_id = x、domain_id = x、type = x、subtype = x 的计数

获取过去 7 天内 userId = x、project_id = x、domain_id = x、type = x、subtype = x 的计数

任何建议或帮助将不胜感激,我的用例是实现反垃圾邮件。

最佳答案

您的问题没有 Elixir 的答案。您需要使用某种数据库,如果您按照描述的方式查询架构,则任何一种数据库都不会给出最佳结果。这个结论只是因为您将使用多个键,因此无论哪种方式,多个索引扫描都不是最佳选择。

您可以做的是针对您尝试执行的查询类型优化数据。一种选择是将所有键值组合成一个新键并使用它进行查询。例如,新 key 可以包含 userId + project_id + domain_id + type + subtype + date 的串联值。完成此技巧后,您将拥有一个可以索引的键并获得最大的查询性能。查询时,将所有搜索值连接在一起并通过键查找行。

根据行数,任何关系数据库都可以处理。如果您想将其提升到一个新的水平,请考虑通过其中一个 NoSQL 数据库对数据进行分片,以便查询仅扫描信息的子集而不是整个数据集。尽管,正如我所说,您提到的行数对于单次扫描来说听起来非常可行。

关于删除,你要么找一个非常专业的平台根据过期时间进行删除,要么自己写一个。后者始终是一个易于使用的技巧 - 编写一个脚本或一个作业来删除所有过期的行,比方说,每天一次。

这就是我要做的。

我知道我没有提到任何特定平台,因为就您而言,我认为该平台不会产生重大影响。

关于database - 支持实现反垃圾邮件的最佳平台?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59528717/

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