使用Azure Table Service的简单社交网站的最佳表格设计是什么?
一个主要的设计约束是,当存在大量记录时,Azure表服务查询通常仅限于分区键和行键,否则它们会变得非常慢。另一个限制是查询结果仅按分区键排序,然后按行键排序。
答案 0 :(得分:0)
试试这个设计:
UserTable
PK :GUID(PK的GUID将最大化可扩展性,每个服务器中只有一个带有单行的分区)
RK :GUID
......其他房产
UserFriendsTable
PK :UserTable.RK(每个用户与他的朋友在一个单独的服务器上)
RK :GUID
FriendWith :UserTable.Pk - UserTable.RK(将用户表中的PK和RK连接用" - ",这将帮助您在尝试访问时快速执行点查询朋友简介)
帖子广告
PK :UserTable.RK +" - " + YYYYMM +随机数(这将允许azure将任何用户的所有月度帖子放在一个单独的服务器中。随机数以防止azure按顺序自动分组。您可以使用过滤PK部分查询帖子ex:pk start with XCtghi94ktY-201411 。
RK 使用以下代码按降序生成行键。意味着最新帖子首先发布。
long ticks = DateTimeOffset.MaxValue.UtcDateTime.Ticks - DateTimeOffset.Now.UtcDateTime.Ticks;
string guid = Guid.NewGuid().ToString("N");
string suffix = "-";
string.Format("{0:d21}{1}{2}", ticks, suffix, guid);
发布:字符串