我想维护一个电子邮件黑名单的人谁不想从我的服务收到电子邮件。你知道吗
在我发送每封电子邮件之前,我想查找一下收件人是否在列表中。你知道吗
两个选择中哪一个更好?你知道吗
我可以在数据存储中创建一个BlacklistEmail模型,并将其键入电子邮件地址,以便使用get\u by\u id()进行更快的查找。在99%的情况下,收件人不在黑名单中,因此这实际上需要一次读取,因为它不会命中memcache。
我可以将列入黑名单的电子邮件存储在csv文件中,并检查收件人是否在列表中。这似乎不会花费任何东西,但我不确定的性能。我不认为名单会很大。
还有更好的办法吗?
在成本和性能方面哪个更好?你知道吗
据我所知,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
相关问题 更多 >
编程相关推荐