azure - Azure 存储表上的 PartitionKey 和 RowKey

标签 azure azure-table-storage azure-cosmosdb

了解 Azure 存储表。
对于包含地址和其他字段的人员表, 设置 PartitionKey 和 RowKey 来优化这样的查询的最佳方法是什么?

SELECT * FROM {table} 
WHERE
((FIRST_NAME LIKE '%{Name}%'
 OR LAST_NAME LIKE '%{Name}%'
 OR NICK_NAME LIKE '%{Name}%')
AND
 (CITY LIKE '%{Loc}%'
  OR STATE LIKE '{Loc}'
  OR ZIP LIKE '%{Loc}%'))

我正在寻找一种方法来存储大量数据并能够快速查询,同时保持尽可能低的成本。我一直在查看存储表和 CosmosDB 表。从定价角度来看,CosmosDB 对于非常大的表来说可能会变得昂贵。

关于查询,我可以将“City”、“State”、“Zip”作为 PartitionKey,将“First_Name”、“Last_Name”和“Nick_Name”作为 RowKey。例如:“Los Angeles CA 90045”作为分区键,“John Doe JDoe”作为 RowKey。我能够快速执行包含 Los Angeles 的 PartitionKey 搜索和 John 的 KeySearch 吗?

最佳答案

据我所知,Azure 存储表的目标是单个区域的高容量(可选的辅助只读区域,但无故障转移)、按 PK/RK 建立索引以及存储优化定价。

Azure Cosmos DB 表的目标是高吞吐量(读取和写入的个位数毫秒延迟,在世界任何地方的任何规模,第 99 个百分位数的读取延迟小于 10 毫秒,写入延迟小于 15 毫秒),全局分布(多个故障转移)、SLA 支持的预测性能(具有每个属性/属性的自动索引)以及专注于吞吐量的定价模型。

定价:

Azure 表:

LRS First 1 TB / Month $0.07 per GB

Next 49 TB (1 to 50 TB) / Month $0.065 per GB

Access Prices:We charge $0.00036 per 10,000 transactions for Tables. Any type of operation against the storage is counted as a transaction, including reads, writes and deletes.

详情看这个article

Azure Cosmos 表 API:

SSD Storage (per GB) $0.25 GB/mo

Reserved RUs/second (per 100 RUs, 400 RUs minimum) $0.008/hr

详情看这个article

您可以看到 cosmosdb 比用于数据存储的表存储更昂贵。

所以如果你的数据量很大,我建议你可以选择表存储。

如果你想让数据查询保持快速,我建议你可以选择cosmosdb。

Regarding the query, could I put "City", "State", "Zip" as PartitionKey and "First_Name", "Last_Name", and "Nick_Name" as RowKey. Ex: " Los Angeles CA 90045" as partitionKey and "John Doe JDoe" as RowKey. Will I be able to do a PartitionKey search that contains Los Angeles and KeySearch for John quickly?

据我所知,在查询中同时指定 PartitionKey 和 RowKey。

诸如此类的点查询是最有效的表服务查询。关于如何设计表格,可以引用这个article .

因此,如果将“City_State_Zip”设置为PartitionKey,“First_Name_Last_Name_Nick_Name”设置为rowkey,这将是点查询。这将是最高效的表服务查询。

注意:表查询不支持like关键字,如果要使用点查询,需要发送正确的partitionkey和rowkey进行查询。

关于azure - Azure 存储表上的 PartitionKey 和 RowKey,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45653908/

相关文章:

azure - AADSTS50011 错误 - 请求中指定的回复 URL 与为应用程序配置的回复 URL 不匹配

azure - 限制 Visual Studio Code -> 部署到函数应用

azure - Azure 机器学习和批处理端点的问题

javascript - 为什么创建和删除 Azure 表失败?

azure - SQL Azure 与表存储 - 带有 "contains"的 queryig 实体参数

azure - Azure DocumentDB 和 Azure 表存储之间的主要区别

c# - 如何使用输出参数实现azure异步函数

Azure DevOps 构建管道不包含所有 NuGet 包内容文件

javascript - 对子元素的 Azure CosmosDB 查询

c# - DocumentDB 在提取大量记录时比 SQL 慢吗?