繁体   English   中英

在Azure表服务中对简单的社交网络进行建模

[英]Model simple social network in Azure table service

使用Azure Table Service的简单社交网站的最佳表设计是什么?

  1. 该网站可能有数百万的用户。
  2. 用户需要能够查看系统中所有其他用户的列表,这些列表按相互连接的数量排序。
  3. 用户必须能够查看其连接列表
  4. 用户必须能够查看自己及其连接发布的内容。

一个主要的设计约束是,当有大量记录时,Azure表服务查询通常仅限于分区键和行键,否则它们会变得很慢。 另一个约束是查询结果仅按分区键然后按行键排序。

试试这个设计:

用户表


PK :GUID(用于PK的GUID将使可伸缩性最大化,每个服务器中只有一个分区且只有一行)
RK :GUID
...其余物业

UserFriendsTable


PK :UserTable.RK(每个用户及其朋友在单独的服务器中)
RK :GUID
FriendWith :UserTable.Pk-UserTable.RK(将用户表中的PK和RK连接为“-”,当您尝试访问朋友资料时,这将帮助您快速执行点查询)

PostsTable


PK :UserTable.RK +“-” + YYYYMM +随机数(这将允许azure将任何用户的所有月度帖子放在单独的服务器中。该随机数可防止azure按顺序自动对分区进行分组。您可以使用过滤PK查询帖子部分示例:pk从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);

帖子 :字符串

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM