访问只读静态变量比从 Azure blob 重复检索数据好还是坏?
Is accessing a read-only static variable better or worse than repeatedly retrieving data from an Azure blob?
我有大约 5,000 条只读记录。
通常我将记录存储在 Azure blob 中,一个函数将检索数据,搜索它们,然后 return 将记录匹配给最终用户。
从 Azure blob 一次检索数据,将其存储在静态变量中,然后搜索它是否高效且安全?
我看了又看,但找不到 (a) 从 Azure blob 重复检索数据与 (b) 仅将其保存在静态变量中的比较或讨论,以及为什么这可能不受欢迎。
从 Azure blob 重复检索数据的问题:
- 每个检索(读取)操作都是收费事务,因此您的 Azure 账单会增加。
- 每个检索(读取)操作都是一个可能会失败的网络调用,因此您必须考虑到这一点。此外,它会增加您的整个请求过程的时间。
在静态变量中维护它的问题:
- 静态变量会消耗服务器内存。
不确定这些文件有多大,但如果它们不大,那么如果您的 blob 确实是只读的(即不会更改),我建议将它们存储在静态变量中。
这听起来像是 Cache-Aside 模式用例。按需将数据从数据存储加载到缓存中。这可以提高性能,还有助于保持缓存中保存的数据与底层数据存储中的数据之间的一致性。
https://docs.microsoft.com/en-us/azure/architecture/patterns/cache-aside
我会接受 Gaurav 的建议。我在我的 azure 函数中使用了类似的模式。我一般都是把变量加载到静态变量里,一直用下去。您应该记住,您的 azure 函数 运行 来自容器,而 azure 函数 运行time 可以按需加载多个容器。所以请记住对您的静态变量进行空检查。考虑到你的 5000 条记录不是很大(每条几 Kb),你不会产生很多账单。性能也会好很多。
我有大约 5,000 条只读记录。
通常我将记录存储在 Azure blob 中,一个函数将检索数据,搜索它们,然后 return 将记录匹配给最终用户。
从 Azure blob 一次检索数据,将其存储在静态变量中,然后搜索它是否高效且安全?
我看了又看,但找不到 (a) 从 Azure blob 重复检索数据与 (b) 仅将其保存在静态变量中的比较或讨论,以及为什么这可能不受欢迎。
从 Azure blob 重复检索数据的问题:
- 每个检索(读取)操作都是收费事务,因此您的 Azure 账单会增加。
- 每个检索(读取)操作都是一个可能会失败的网络调用,因此您必须考虑到这一点。此外,它会增加您的整个请求过程的时间。
在静态变量中维护它的问题:
- 静态变量会消耗服务器内存。
不确定这些文件有多大,但如果它们不大,那么如果您的 blob 确实是只读的(即不会更改),我建议将它们存储在静态变量中。
这听起来像是 Cache-Aside 模式用例。按需将数据从数据存储加载到缓存中。这可以提高性能,还有助于保持缓存中保存的数据与底层数据存储中的数据之间的一致性。
https://docs.microsoft.com/en-us/azure/architecture/patterns/cache-aside
我会接受 Gaurav 的建议。我在我的 azure 函数中使用了类似的模式。我一般都是把变量加载到静态变量里,一直用下去。您应该记住,您的 azure 函数 运行 来自容器,而 azure 函数 运行time 可以按需加载多个容器。所以请记住对您的静态变量进行空检查。考虑到你的 5000 条记录不是很大(每条几 Kb),你不会产生很多账单。性能也会好很多。