在 Azure Table 存储服务中查询 PartitionKey 和 RowKey 语法
Querying PartitionKey and RowKey syntax in Azure Table Storage service
同时阅读 querying tables and entities in Azure Table Storage service 我发现 PartitionKey
和 RowKeys
可以被过滤在 myaccount.table.core.windows.net URL 中有两种不同的方式,如下所示:
https://<service-url>/Customers(PartitionKey='MyPartition',RowKey='MyRowKey1')
并使用 $filter
实现同样的效果:
https://<service-url>/Customers()?$filter=PartitionKey%20eq%20'MyPartitionKey'%20and%20RowKey%20eq%20'MyRowKey1'
我从文档中了解到 PartitionKey
和 RowKey
属性正在形成实体的主键,因此可以使用第一个语法以及 Filtering on the PartitionKey and RowKey Properties 部分状态:
Because the PartitionKey and RowKey properties form an entity's primary key, you can use a special syntax to identify the entity.
问题:
- 使用
$filter
而不是上面提到的那种特殊语法有什么缺点吗?
- 我在解决方案中使用哪一个重要吗?
感谢任何澄清,谢谢!
有趣的问题!因此,我尝试执行这两个操作以使用 Postman 获取实体,并且获取数据所花费的时间几乎相同(在 250 毫秒 - 300 毫秒之间)。
因此,只要您使用的是 REST API,我认为这并不重要。
当您使用 SDK(例如 WindowsAzure.Storage 版本 9.3.3)时,有不同的方法可以使用这些功能。看看下面的示例代码:
var account = new CloudStorageAccount(new StorageCredentials(accountName, accountKey), true);
var tableClient = account.CreateCloudTableClient();
var table = tableClient.GetTableReference("TableName");
//This uses https://account.table.core.windows.net/table(PartitionKey='pk', RowKey='rk')
TableOperation op = TableOperation.Retrieve("pk", "rk");
var entity = table.Execute(op).Result as DynamicTableEntity;
//This uses https://account.table.core.windows.net/table?$filter=PartitionKey eq 'pk' and RowKey eq 'rk'
TableQuery query = new TableQuery();
query.FilterString = "PartitionKey eq 'pk' and RowKey eq 'rk'";
var entity = table.ExecuteQuery(query).FirstOrDefault();
同时阅读 querying tables and entities in Azure Table Storage service 我发现 PartitionKey
和 RowKeys
可以被过滤在 myaccount.table.core.windows.net URL 中有两种不同的方式,如下所示:
https://<service-url>/Customers(PartitionKey='MyPartition',RowKey='MyRowKey1')
并使用 $filter
实现同样的效果:
https://<service-url>/Customers()?$filter=PartitionKey%20eq%20'MyPartitionKey'%20and%20RowKey%20eq%20'MyRowKey1'
我从文档中了解到 PartitionKey
和 RowKey
属性正在形成实体的主键,因此可以使用第一个语法以及 Filtering on the PartitionKey and RowKey Properties 部分状态:
Because the PartitionKey and RowKey properties form an entity's primary key, you can use a special syntax to identify the entity.
问题:
- 使用
$filter
而不是上面提到的那种特殊语法有什么缺点吗? - 我在解决方案中使用哪一个重要吗?
感谢任何澄清,谢谢!
有趣的问题!因此,我尝试执行这两个操作以使用 Postman 获取实体,并且获取数据所花费的时间几乎相同(在 250 毫秒 - 300 毫秒之间)。
因此,只要您使用的是 REST API,我认为这并不重要。
当您使用 SDK(例如 WindowsAzure.Storage 版本 9.3.3)时,有不同的方法可以使用这些功能。看看下面的示例代码:
var account = new CloudStorageAccount(new StorageCredentials(accountName, accountKey), true);
var tableClient = account.CreateCloudTableClient();
var table = tableClient.GetTableReference("TableName");
//This uses https://account.table.core.windows.net/table(PartitionKey='pk', RowKey='rk')
TableOperation op = TableOperation.Retrieve("pk", "rk");
var entity = table.Execute(op).Result as DynamicTableEntity;
//This uses https://account.table.core.windows.net/table?$filter=PartitionKey eq 'pk' and RowKey eq 'rk'
TableQuery query = new TableQuery();
query.FilterString = "PartitionKey eq 'pk' and RowKey eq 'rk'";
var entity = table.ExecuteQuery(query).FirstOrDefault();