cta*_*cke 14 .net azure azure-table-storage
目前,我正在使用PartitionKey来区分将数据存储到Azure Table Services的设备.我想构建一个允许我浏览该数据的查看器,但能够构建它以便我可以"通过设备"或通过PartitionKey查看数据会很好.查看器应用程序将不知道存在哪些设备,因此如果我能以某种方式返回给定表中的不同PartionKeys列表,那将会很棒.这是可能的,还是我将被降级为创建一个元数据表,我为每个设备插入一个新行,然后使用它进行查询?
dan*_*ofo 13
创建一个表来存储您的分区.按您使用的表名对表进行分区,并为您创建的每个分区添加一个条目.
public class PartitionEntry : TableServiceEntity { }
tableServiceContext.AddObject("TablePartitions", new PartitionEntry
{
PartitionKey = "<table name>",
RowKey = "<partition key>",
});
tableServiceContext.BeginSaveChanges(SaveChangesOptions.ContinueOnError, null, null);
Run Code Online (Sandbox Code Playgroud)
然后只查询此表以获取分区列表.这对我来说非常易于管理.
var tbl = tableServiceContext.CreateQuery<PartitionEntry>("TablePartitions");
return tbl.Where(i => i.PartitionKey == "<table name>")
.Select(i => new { PartitionKey = i.RowKey, });
Run Code Online (Sandbox Code Playgroud)
我打赌这可以优化.
我认为没有办法检索所有分区键.不过,这是一个聪明的解决方法:http://blogs.msdn.com/b/avkashchauhan/archive/2011/10/23/retrieving-partition-key-range-in-windows-azure-table-storage.aspx
引用Avkash的博客:
进一步挖掘,我发现没有内置的API来获取分区键列表,而是我必须为自己创建一个解决方案.所以我最终在每个分区中插入一个虚拟行,当我想获得一个分区键列表时,我只是查询那些虚拟项目,他们给了我正在寻找的列表.
我相信你已经看过这个,但对于其他可能在这个问题上发生的人,我认为这是表服务功能的最佳指南:http://azure.microsoft.com/en-us/documentation/articles/storage-dotnet-how-to-use-tables /带有示例和指向详细API文档的链接.
遗憾的是,Azure 表没有不同的功能或其他功能 - 将其视为基于键的结构化存储,如内存中的字典。您执行的任何操作都必须遍历所有项目才能获得它们的子集,除非知道要首先加载哪些键并处理该子列表。
我个人会简单地使用第二个 azure 表并将分区键存储在那里(作为行键),然后让您有机会按另一个因素对它们进行分组。或者简单地为第二个表使用单个分区键。
这将为您提供最佳性能和最少的头痛。
有时,最简单的方法是最好的方法,因为您可以完成工作。
希望这可以帮助,
| 归档时间: |
|
| 查看次数: |
8587 次 |
| 最近记录: |