【问题标题】:Azure database - Schema design rulesAzure 数据库 - 架构设计规则
【发布时间】:2019-02-07 22:33:51
【问题描述】:

我有一个简单的“用例”,假设我希望使用 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 用作我的顶点的键吗?

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

还有其他方法可以解决这个问题吗?

谢谢

【问题讨论】:

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


    【解决方案1】:

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

    SQL API:

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

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

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

    图形 API:

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

    希望对你有帮助。

    【讨论】:

    猜你喜欢
    • 2020-09-20
    • 1970-01-01
    • 2016-11-30
    • 1970-01-01
    • 2011-01-09
    • 2023-03-14
    • 2017-01-18
    • 2015-08-29
    相关资源
    最近更新 更多