Nosql 为社交网络建模azure表存储的有效方法
我在SQLServer中有这样的表 用户Nosql 为社交网络建模azure表存储的有效方法,nosql,azure-table-storage,Nosql,Azure Table Storage,我在SQLServer中有这样的表 用户 用户ID(唯一) 名字 年龄 朋友 用户ID FriendId 主题 用户ID 主题 可能有数千个用户。表中还有其他几个属性 我可以查询得到以下答案 给我用户“汤姆”的所有朋友 给我“汤姆”创造的所有主题 给我汤姆的朋友们创建的主题中包含“abc”的所有主题 如果要在Azure表存储中执行此操作,我应该如何构造表? 我已经经历过,我希望有人在Azure表存储建模方面有更多的经验,能够提供一些见解。1和2非常简单。您创建了两个Azure表—按用
- 用户ID(唯一)
- 名字
- 年龄
- 用户ID
- FriendId
- 用户ID
- 主题
我已经经历过,我希望有人在Azure表存储建模方面有更多的经验,能够提供一些见解。1和2非常简单。您创建了两个Azure表—按用户id(键中包含用户id)索引的朋友和主题 第三个问题对于Azure表来说要困难得多,尤其是“主题中包含'abc'的”部分 Azure表不支持全文搜索。基本上,只有使用精确的键或使用“startswith”操作符才能有效地检索值(或值的范围)。比如“给我所有记录,其中key等于‘key-value’”。或者“给我所有键大于‘键下限’且小于‘键上限’的记录” 也可以使用“startswith”按记录的任何非键字段进行筛选,但这将涉及表扫描,效率低下。使用“contains”进行类似的过滤是不可能的
因此,我认为您需要在此处提供全文搜索支持。感谢您的回复。1用户将有许多朋友并创建许多主题。在这种情况下,我不能将UserId作为行键,可以吗?谢谢全文搜索提示。我会研究这个[链接]()好的,你需要在键中加入其他东西,比如创建时间。键是字符串,因此需要确保它们是可排序的。因此,密钥看起来类似于“000016962620120301T200000”。然后,要查询某个用户和时间范围的所有记录,您可以使用范围[“0000169646,rangestart”,“0000169646,rangeend”]中的键查询所有记录。查询用户请求最大时间范围的所有记录