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

Rai*_*lle 5 azure-service-fabric

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

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

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

Vac*_*cek 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(...);
Run Code Online (Sandbox Code Playgroud)

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

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