如何创建类似于Table的可靠集合

时间:2016-07-23 07:47:14

标签: azure-service-fabric

创建类似于表的可靠集合的最佳方法是什么?我们可以自己动手吗?

我正在寻找能够存储索引的简单列表或包以及跟踪密钥和其他简单细节的东西,因为枚举多分区字典的成本非常高。优选顺序而非随机访问。

明显的选择:

  1. IDictionary <Guid, List>存在并发问题且性能不佳
  2. 尝试枚举队列,但我怀疑它会比字典
  3. 更好
  4. 使用外部数据存储
  5. 这些似乎都不是特别好。

2 个答案:

答案 0 :(得分:1)

分区实际上是为了获得性能。诀窍是以不需要交叉分区查询的方式对数据进行分片。您还可以使用相同数据的不同聚合创建多个词典。 (使用交易)

在“分区计划”一章中详细了解&#39; here

答案 1 :(得分:1)

当然,您可以推出自己的可靠系列。毕竟,可靠的集合只是一个由Azure存储对象支持的内存数据结构。如果你想要一个可靠的字符串列表,你可以实现IList<string>,并在各种方法(添加,删除,getEnumerator,ecc。)中插入代码来跟踪,保持数据结构。

根据您的内容,它可以是一个表(如果您可以生成一个好的分区/行键),或者只是一个blob(并且您每次,或在检查点,或者您的序列化/反序列化内容)政策!)

我没理解为什么IReliableDictionary<K, V>对你不利。您是否需要存储密钥,值对,并且出于性能原因,您不希望密钥在分区中分发? (因为“getAll”会产生机器吗?)

或者你只需​​要一个键列表(比如颜色,或者像你在HashSet中那样?)。

在任何情况下,根据数据的大小,您可以使用类似IReliableDictionary的方式对它们进行不同的分区,其中int可以只有一个(如“42”,你将有一个分区),或者几个(哈希,然后修改(%)您想要的数字),您将同时获得一大堆密钥(从每个密钥到N个密钥部分)。