我正在使用 Windows Azure 为移动社交网络构建服务器后端。
我有这 3 个实体:
- 用户 - 存储在 SQL Azure 中
- 线程( 2 个用户之间的某种关系,然后能够相互发送消息) - 存储在 SQL Azure 中
- 消息 - 存储在 Azure 表中
当我将消息存储在按线程 ID 分区的 Azure 表中时,我希望在聊天时有良好的性能(向/从线程发送/读取消息)。
但我还需要能够为用户提供最新线程列表(recent = 包含最新消息)。换句话说,我需要在显示时按最后一条消息日期订购线程。
扫描许多不同的表分区并查找消息显然会成为性能杀手,因此我需要以某种方式将数据非规范化到其他表分区,以便能够有效地获取最新的线程。
根据您的经验,最佳策略是什么?