我有一个简单的“用例”,假设我希望使用 Xamarin 和 Azure 克隆 Facebook 应用程序。
读完这篇文章后:https://learn.microsoft.com/en-us/azure/cosmos-db/social-media-apps
我注意到我可以将数据存储到一组集合/文档(SQL API)中。
但是当我必须处理数百万个关系时,它不起作用,我必须使用 Graph API 数据库!
因此,为此我需要在 Azure 上创建一个数据库,这是我现在要做的:
1 - 一个 Cosmos DB 数据库 - 带有 SQL API(集合),其中: a) 用户的集合 b) 出版合集
2 - 一个 COMOS DB 数据库 - 带有 Gremlin API(图形),其中: a) 管理用户和出版物之间关系的图表(即用户 A 喜欢出版物 B)
因此,SQL API 数据库将管理所有记录,而 Gremlin 数据库将管理所有记录 所有复杂的关系。
所以我有几个问题: 1)我真的需要2个未连接的数据库吗?或者这是一个糟糕的设计? 因为每次添加用户时,我都需要在集合中添加一个文档, 又是一个顶点!这是双重管理!
2)当我将文档插入集合中时,它会生成一个带有 自动 GUID key 。我可以使用这个 ID 作为我的顶点的键吗?
也许用户和发布可以具有相同的 GUID ?所以,在我的图表中 我不知道我的顶点是用户还是发布?
还有其他方法可以解决这个问题吗?
谢谢
最佳答案
克里斯萨利德。为什么要根据您的情况创建 2 个数据库?根据我的理解,你可以选择 SQL API 或 Graph API。
SQL API:
创建用户集合和pub集合。如果要查询用户喜欢哪些出版物,只需将pub id数组存储在用户文档中即可。
{
"user":"jay",
"likePubArray":
[{"pubId":"A"},{"pubId":"B"}]
}
如果您还需要双向查询,请将用户id数组存储在pub文档中。
图形 API:
创建用户顶点和发布顶点并在顶点中添加目标属性。
希望对您有帮助。
关于Azure 数据库 - 架构设计规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52140083/