了解 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/