在 Azure Service Fabric 中查询数据的最佳方式是什么?

What is the best way to query data in Azure Service Fabric?

在 Azure Service Fabric 中查询数据的最佳方式是什么? Reliable Dictionary 上面有什么东西吗?例如:map / reduce?

示例: 客户对象存储在可靠集合中。关键是 CustomerID。现在我想找到所有姓氏以 "A" 开头的客户,这些客户来自 "Sydney" 并且在上个月内订购了东西。

在 Azure Service Fabric 中以功能方式实现此查询的最佳方式是什么?表现如何?假设列表中有数十万客户。

可靠集合是 IEnumerable(或支持创建枚举器),类似于 single-machine.NET 集合,这意味着您可以使用 LINQ 查询它们。例如:

IReliableDictionary<int, Customer> myDictionary =
   await this.StateManager.GetOrAddAsync<IReliableDictionary<int, Customer>>("mydictionary");

return from item in myDictionary
       where item.Value.Name.StartsWith("A")
       orderby item.Key
       select new ResultView(...);

性能取决于您正在执行的查询类型,但可靠集合的主要好处之一是它们在执行查询的代码中是本地的,这意味着您是直接从内存中读取而不是创建一个对外部存储的网络请求。

对于非常 的大数据集,您最终将对包含字典的服务进行分区(Service Fabric 中的一个built-in 功能)。在这种情况下,您将在每个分区中进行相同的查询,但随后您需要聚合结果。通常在这种情况下,最好设置另一个字典作为常见查询的索引。