Azure数据库 - 架构设计规则

问题描述 投票:0回答:1

我有一个简单的“用例”,想象一下我希望用Xamarin和Azure克隆Facebook应用程序。

看完之后:https://docs.microsoft.com/en-us/azure/cosmos-db/social-media-apps

我注意到我可以将我的数据存储到一组集合/文档(SQL API)中。

但是,当我必须处理数百万个关系时,它不起作用,我必须使用Graph API数据库!

所以,为此,我需要在Azure上创建一个数据库,这是我现在要做的:

1 - 一个Cosmos DB数据库 - 带有SQL API(集合),带有:a)用户集合b)用于发布的集合

2 - 一个Comos数据库数据库 - 使用Gremlin API(图形),其中:a)管理用户和出版物之间关系的图表(即用户A,如出版物B)

因此,SQL API数据库将管理所有记录,而Gremlin将管理所有复合关系。

所以,我有几个问题:1)我真的需要2个未连接的数据库吗?或者这是一个糟糕的设计?因为每次我添加一个用户,我都需要在集合中添加一个文档,还需要一个顶点!这是双重管理!

2)当我将文档插入集合时,它会自动生成带有GUID键的“id”。我可以将此ID用作顶点的键吗?

也许用户和出版物可以具有相同的GUID?所以,在我的图表中,我不知道我的顶点是用户还是出版物?

还有另一种方法来管理这个吗?

谢谢

azure azure-cosmosdb gremlin azure-cosmosdb-sqlapi
1个回答
0
投票

Krysalid。为什么要为您的情况创建2个数据库?根据我的理解,您可以选择SQL API或Graph API。

SQL API:

创建用户集合和pub集合。如果要查询用户喜欢的出版物,只需将pub id数组存储在用户文档中。

{
  "user":"jay",
  "likePubArray":
     [{"pubId":"A"},{"pubId":"B"}]    
}

如果您还想要双向查询,请将用户ID数组存储在pub文档中。

图API:

创建用户顶点和pub顶点并在顶点中添加目标属性。

enter image description here

希望它能帮到你。

© www.soinside.com 2019 - 2024. All rights reserved.