在Azure Service Fabric中查询数据的最佳方法是什么? Reliable Dictionary上有什么东西吗?例如:map / reduce?
示例:客户对象存储在可靠的集合中。关键是CustomerID。现在我想找到所有姓氏以" A"这些来自"悉尼"并在上个月内订购了一些东西。
在Azure Service Fabric中实现此查询的最佳方法是什么?性能如何?让我们假设列表中有数十万客户。
答案 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中的内置功能)进行分区。在这种情况下,您将在每个分区中具有相同的查询,但是您需要聚合结果。通常在这种情况下,设置另一个可以作为常见查询索引的字典是很好的。