Azure cosmosdb CosmosDB应该像文档数据库或图形数据库那样建模吗?
我发现CosmosDb既可以支持图形查询,也可以支持更传统的类似SQL的查询——但是我有点困惑于什么样的底层模式在集合级别是最好的。如果我要在MongoDb、SQL Server或Neo4j中建模,我会有非常不同的模式。此外,我似乎可以使用更传统的类似SQL的语法进行查询,这让我对下面的正确性或有效性感到困惑。有时,使某些内容易于查询并不意味着应该假设它是一个高效的查询 CosmosDb的核心是一个文档数据库,我应该对它进行相应的建模——还是一个非常不同的野兽 示例用例 这里有一个例子——假设我有:Azure cosmosdb CosmosDB应该像文档数据库或图形数据库那样建模吗?,azure-cosmosdb,Azure Cosmosdb,我发现CosmosDb既可以支持图形查询,也可以支持更传统的类似SQL的查询——但是我有点困惑于什么样的底层模式在集合级别是最好的。如果我要在MongoDb、SQL Server或Neo4j中建模,我会有非常不同的模式。此外,我似乎可以使用更传统的类似SQL的语法进行查询,这让我对下面的正确性或有效性感到困惑。有时,使某些内容易于查询并不意味着应该假设它是一个高效的查询 CosmosDb的核心是一个文档数据库,我应该对它进行相应的建模——还是一个非常不同的野兽 示例用例 这里有一个例子——假设我
- 轮廓
- 照片
- 博客
- 问题
- 类照片
- 博客评论
- 光电元件
- 问题意见
- 轮廓
- 照片
- 博客
- 问题
- 轮廓
- 照片
- 博客
- 问题
我们如何在CosmosDB中为这个模式建模?我们应该像MongoDb这样的传统文档数据库那样对其进行建模,还是拥有对图形查询的访问权限可以让我们获得额外的自由,比如不必对“like”之类的操作的字段进行非规范化?Azure Cosmos DB数据库引擎的设计完全不依赖于模式。 容器(可以是图形、文档集合或表)是与模式无关的容器,包含任意用户生成的内容,这些内容在接收时自动编制索引。我建议阅读“Azure DocumentDB的模式不可知索引”,这在Cosmos DB中也是一样,以便更好地理解细节 我们如何在CosmosDB中为这个模式建模?我们应该像MongoDb这样的传统文档数据库那样对其进行建模,还是访问图形查询可以让我们获得额外的自由,比如不必对“like”之类的操作的字段进行非规范化 当您开始在Azure Cosmos DB中建模数据时,您需要考虑:1。您的应用程序读重还是写重?2.您的应用程序将如何查询和更新数据?etc。通常,非规范化数据模型可以提供更好的读取性能,规范化可以提供更好的写入性能
举例说明了如何为NoSQL数据库建模文档数据,并分享了使用嵌入式数据模型、规范化数据模型和混合数据模型的一些场景,这应该是有帮助的。为了使示例更简单,假设是普通的情况,它将被读取为heavy-ala instagram。所以它应该基于NoSQL数据库-类似于mongodb的建模方式?它允许图形查询的后果是什么呢?因为您不希望以与传统的无sql数据库相同的方式对其进行建模。