Azure数据库-架构设计规则

时间:2018-09-02 18:47:47

标签: azure azure-cosmosdb gremlin azure-cosmosdb-sqlapi

我有一个简单的“用例”,想象一下我想用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(图形),具有:   a)一种用于管理用户和出版物(即用户A之类的出版物B)之间关系的图形

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

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

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

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

还有另一种方法可以管理吗?

谢谢

1 个答案:

答案 0 :(得分:0)

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

SQL API:

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

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

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

图形API:

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

enter image description here

希望它对您有帮助。