我在 SQL Server 中有这样的表
用户
- 用户 ID(唯一)
- 姓名
- 年龄
朋友们
- 用户身份
- 朋友ID
话题
- 用户身份
- 学科
可能有数千个用户。表中还有其他几个属性。
我可以查询以获得以下答案。
- 给我用户“汤姆”的所有朋友。
- 给我“汤姆”创建的所有主题。
- 给我汤姆的朋友创建的所有主题中包含“abc”的主题。
如果我要在 Azure 表存储中执行此操作,我该如何构建我的表?我已经经历了这个,我希望有人在建模 Azure 表存储方面有更多经验,以提供一些见解..
1和2很简单。您创建两个 Azure 表 - 由用户 ID 索引的朋友和主题(在键中包含用户 ID)。
Azure 表的第三个要困难得多,尤其是“在主题中包含'abc'”部分。
Azure 表不支持全文搜索。基本上,只有使用精确键或使用“startswith”运算符才能有效地检索值(或值范围)。就像“给我所有键等于'键值'的记录”。或“给我所有键大于'键下限'且小于'键上限'的记录”。
也可以通过记录的任何非关键字段使用'startswith'进行过滤,但这会涉及表扫描并且效率不高。用“包含”做类似的过滤是不可能的。
所以我认为你需要在这里有全文搜索支持的东西。