Azure 数据库 - 架构设计规则

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

我有一个简单的“用例”,假设我希望使用 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:

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

enter image description here

希望对您有帮助。

关于Azure 数据库 - 架构设计规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52140083/

相关文章:

angular - 类型 'MsalService' 上不存在属性

azure - 在 Azure YAML 管道中实现 Gates

azure cosmos db 免费套餐 100 RU

azure-cosmosdb - Gremlin 查询将顶点与不相关的顶点组合 CosmosDB

java - 更新 Titan 图数据库中的顶点属性的问题

azure - 如何在 Azure 批处理帐户中设置具有不同时间增量的作业计划?

azure - 为什么 RU 消耗高于预配置吞吐量与自动缩放最大吞吐量的比率?

azure - Cosmos 查询获取列表中的项目

groovy - 禁用选项卡以在 Gremlin 控制台中显示控制台命令

spring-boot - 如何在 Azure Spring Boot 部署的应用程序中使用 access.properties 变量?