当前位置:  开发笔记 > 编程语言 > 正文

Azure Cosmos DB是多模型的意思是什么?

如何解决《AzureCosmosDB是多模型的意思是什么?》经验,为你挑选了2个好方法。

看看新的Azure宇宙数据库,我对它的多模型性质有点困惑.具体来说,这是否意味着:

a)可以同时以多种方式查询相同的底层数据库/存储,这样我就可以对同一个集合使用gremlin图形查询和mongodb api.

要么 -

b)是否意味着您可以在配置Cosmos DB时选择不同的模型(图形,键值,列,文档),以及从那时起数据的存储方式.

这本小册子听起来像a),但是使用Azure仪表板创建一个cosmos实例,它看起来像b)因为你必须在创建时选择一个模型类型.

此外,文献提到了柱状数据,但我没有在创建时看到它的选项.



1> Murray Foxcr..:

Cosmos DB是一个NoSQL数据引擎,是Document DB的演变.创建容器("数据库实例")时,为您的用例选择最相关的API,以优化与底层数据存储交互的方式以及数据如何持久保存到该存储中.

因此,根据所选的API,它会将所需的模型(图形,列,键值或文档)投影到底层商店.

您只能对容器使用一个API,由于数据的存储和检索方式,因此无法使用多个API.API规定了存储模型 - 图形,键值,列等,但它们都重新映射到引擎盖下的相同技术.

感谢@Jesse Carter在下面的评论,看来你可以混合和匹配图形和DocumentSQL API.

来自文档:

多模型,多API支持

Azure Cosmos DB本身支持多种数据模型,包括文档,键值,图形和列族.Cosmos DB数据库引擎的核心内容模型基于原子记录序列(ARS).原子由一小组原始类型组成,如string,bool和number.记录是由这些类型组成的结构.序列是由原子,记录或序列组成的数组.数据库引擎可以有效地将不同的数据模型转换和投影到基于ARS的数据模型上.Cosmos DB的核心数据模型可以从动态类型编程语言本地访问,并且可以像JSON一样公开.

该服务还支持用于数据访问和查询的流行数据库API.Cosmos DB的数据库引擎目前支持DocumentDB SQL,MongoDB,Azure Tables(预览版)和Gremlin(预览版).您可以继续使用流行的OSS API构建应用程序,并获得经过实战考验和全面管理的全球分布式数据库服务的所有好处.


这不完全正确.您可以在单个集合中混合和匹配图形和DocumentSQL API,而不会出现任何问题.
好的,所以一旦你选择了api - 这会掩盖数据的存储方式,所以你以后不能更改api是正确的吗?
那么只有2图和documentsql apis之间可以互换吗?例如,你不能在documentsql集合上使用mongo apis?
这个答案是不正确的.Cosmos在所有API下使用ARS(原子记录序列).截至目前,您无法在API之间切换,但他们计划在将来支持此功能.https://www.pass.org/Community/PASSBlog/tabid/1476/entryid/881/Demystifying-the-Multi-Model-Capabilities-in-Azure-Cosmos-DB.aspx

2> Yaron Y. Gol..:

Cosmos DB的核心是一个地理上分布的数据库,它有自己的Atom-Record-Sequence存储引擎和索引.在该基础架构之上,我们能够实现许多不同类型的存储,从SQL(如使用我们的SQL API的商店)到Mongo,到Cassandra,到Gremlin,再到Azure Table存储的实现等等.

每种不同的商店类型都有自己的数据类型(例如编码数字,日期等方式),并以自己的方式在我们的存储和索引层中进行编码.随着时间的推移,我们希望我们的SQL API本身支持大多数这些数据类型.但是现在我们的每个数据库类型都使用自己的编码约定.在Cosmos DB中创建帐户(这是一个组织单位,用户可以拥有多个帐户)时,在帐户中指定数据库的"类型".所以可以有一个Table API帐户或一个Mongo帐户或者你有什么.

在某些情况下,可以使用API​​ Y访问数据类型为X的帐户.例如,可以使用SQL API与Table API帐户中的表进行通信.但在图表之外,这通常不是一个好主意.现在,我们以特殊格式编码每个API的信息,并且不同的数据类型不会互相说出格式.因此,如果要使用SQL API写入Table API,最终结果很可能是损坏的数据.

例外情况是我们努力确保所有数据库类型工作得相当好的图表,我们将来会对此有更多的说明.

因此,如果您确实希望使用多API访问,我们强烈建议您仅在不使用给定帐户的"本机"API时以"只读"模式执行此操作.换句话说,无论如何都要使用来自Table API的SQL API读取,请不要写入起诉SQL API客户端的Table API帐户.

推荐阅读
拾味湖
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有