最好在数据存储或csv文件中维护一个列表?

2024-09-30 12:20:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我想维护一个电子邮件黑名单的人谁不想从我的服务收到电子邮件。你知道吗

在我发送每封电子邮件之前,我想查找一下收件人是否在列表中。你知道吗

两个选择中哪一个更好?你知道吗

  1. 我可以在数据存储中创建一个BlacklistEmail模型,并将其键入电子邮件地址,以便使用get\u by\u id()进行更快的查找。在99%的情况下,收件人不在黑名单中,因此这实际上需要一次读取,因为它不会命中memcache。

  2. 我可以将列入黑名单的电子邮件存储在csv文件中,并检查收件人是否在列表中。这似乎不会花费任何东西,但我不确定的性能。我不认为名单会很大。

  3. 还有更好的办法吗?

在成本和性能方面哪个更好?你知道吗


Tags: csv数据模型id列表getby键入
2条回答

据我所知,get \u by \u id()(小型)操作是免费的。所以你只需支付几个小时。但我认为最好用另一种方式存储订阅电子邮件,因为存储成本很低,而且数据的非规范化是GAE的一个好做法。无论如何,CSV看起来不是个好主意。你知道吗

正如tx802所指出的,我相信您的意思是将CSV存储在云存储中。我们说得对吗?你知道吗

在这种情况下,这可能是一种选择,但很奇怪。大多数情况下,如果它适合您拥有的其他工作流,并且您不太关心超级性能,也不经常更新它。当然,在它前面使用一个全局变量或Memcache,然后交叉手指,这样它就不会被刷新。你知道吗

不管怎样,这个选项升级得不好。我建议你选择方案3)。使用Memcache[1]进行快速查找,并使用Datastore进行备份,这也有很好的性能。你知道吗

还有别的事情要考虑。您应该存储/使用/查询完整列表还是使用单独的对象/实体?你知道吗

它主要取决于列表中存储的信息的大小和数量。 Datastore和Memcache都对其对象施加了1MB的限制。如果您无法将列表放入其中,则必须将其拆分为单独的实体。你知道吗

希望对你有帮助。快乐的编码!你知道吗

[1]https://developers.google.com/appengine/docs/python/memcache/#Python_When_to_use_a_memory_cache

相关问题 更多 >

    热门问题