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 DB 数据库 - 使用 Gremlin API (Graph),其中:a) 用于管理用户与出版物之间关系的图表(即,用户 A 喜欢出版物 B)

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

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

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

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

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

谢谢

4

1 回答 1

0

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

SQL API:

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

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

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

图 API:

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

在此处输入图像描述

希望它可以帮助你。

于 2018-09-03T06:53:41.117 回答