【发布时间】:2017-03-06 08:32:57
【问题描述】:
使用 Azure 存储表构建类似于博客发布系统的图像。 用户发布一条消息,数据库会记录用户的地区、城市和语言。
之后,用户可以浏览所有其他用户的帖子,并可以按地区、城市和语言的任意组合对其进行过滤。或者两者都不看。
我看到了几种解决方案:
- 使用 Region-City-Language 组合将每条消息放在 8 个不同的分区中(优点:读取时闪电般的快速点查询;缺点:写入时每条消息 8 个事务)。
- 将每条消息放在 4 个不同的分区中,结合区域-城市和执行分区扫描以按语言过滤的能力(优点:事务少于 (1);缺点:分区扫描,每条消息 4 个事务)。李>
- 根据用户 ID 将每条消息放入分区中(优点:每条消息单个事务;缺点:缓慢的表扫描和之后的分区扫描)。
我的看法:
- 读取速度快,写入速度慢(可能代价高昂)。
- 平衡的读/写/成本。
- 写入速度快,读取速度慢(但成本低)。
“成本/便宜”是指基于交易(而非空间)的定价。 “平衡”是指在这些变体中。
考虑过使用索引表,但在这里看不到它们的帮助。 所以问题是,也许还有另一种更好的方法?
【问题讨论】:
-
这确实是征求意见和广泛的意见 - 没有正确的答案。您需要为您的特定应用程序进行基准测试并选择正确的组合。不确定您所说的“索引表”是什么意思(也许您指的是额外的存储表,具有特定的索引属性作为分区/行键?)。
-
是的。索引表就像您描述的那样。我在问是否有其他可能的解决方案。
标签: azure azure-storage azure-table-storage