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

时间:2016-01-21 13:22:11

标签: azure-service-fabric

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

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

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

1 个答案:

答案 0 :(得分:5)

Reliable Collections是IEnumerable(或支持创建枚举器),类似于单机.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(...);

性能取决于您正在进行的查询类型,但Reliable Collections的一个主要好处是它们是执行查询的代码的本地,这意味着您直接从内存中读取而不是向外部存储发出网络请求。

使用 very 大型数据集,您最终会对包含字典的服务(Service Fabric中的内置功能)进行分区。在这种情况下,您将在每个分区中具有相同的查询,但是您需要聚合结果。通常在这种情况下,设置另一个可以作为常见查询索引的字典是很好的。