Azure Cosmos DB 深入了解

2022-04-14 00:00:00 索引 数据库 分区 提供 吞吐量

Azure Cosmos DB 是个全球分布式的多模型数据库服务, 用于构建全球范围规模应用。多年来, 它一直在为微软的互联网规模服务提供动力, 现在该数据库可供所有 Azure 开发者使用。该服务旨在允许客户在任意数量的地理区域上弹性和水平地扩展吞吐量和存储, 它提供了有保证 99% 小于10ms的延迟, 99.99% 高可用性和五种一致性模型。Cosmos  DB 是当今市场上个全球分布式数据库服务, 并为吞吐量、延迟、可用性和一致性提供全面的服务级别协议(SLA)

优势

  1. 提供了一个简单的全球分配的NoSQL数据库,只需要点击按钮就可以在所有任意数目的Azure区域进行分发。

  2. 支持存储和吞吐量的弹性扩展。

  3. 保证低滞后时间:10 ms读取和 15 ms 索引写入。

  4. 多模型 + 多 API: 只有Cosmos DB 允许您在一个服务中使用 key-value、图形和文档数据, 在全球范围内, 无需担心模式或索引管理, 并允许您使用您喜欢的 API, 包括 SQL、JavaScript、Gremlin、MongoDB和 Azure 表存储来查询您的数据。

  5. 一致性选择: 5 种定义明确、直观和实用的一致性选择, 以佳地优化延迟、可用性和吞吐量。

  6. 完全管理的服务与整体服务的SLA达99%, Monthly Read Availability Percentage 99.999%,

  7. 满足开发人员和企业 "无论他们在哪里"-使用您熟悉的 api。选择任何自然适合您的数据的模型-没有后端困扰

架构

全球分布式多模型数据库服务

"开发现代云应用程序为企业建立敏捷性和进入新市场提供了独特的机会。这些应用程序不仅必须能够从任何地方访问, 而且为了赢得客户的忠诚度, 他们必须是低延迟和高可用性 "

Cosmos DB 是一个托管的全球分布式多模型数据库服务。它利用 Azure 云基础结构来支持全球规模的应用程序工作负载:

  • 自动数据索引 (不考虑数据模型)。不需要管理次级索引, Cosmos DB 是真正的模式不可知的。

  • Cosmos DB 可以很容易地扩大或缩减, 以满足应用程序的需要;存储和吞吐量可以独立进行缩放。

  • 可以在全球范围内复制数据, 在全球规模上构建应用程序。允许使用 SQL 或 LINQ. NET 运算符进行聚合查询。

  • 全球范围的高可用性, 具有明确定义的一致性、企业级安全性和全面的 SLA。

  • 快速和保证的低延迟性能与快速随机读取

    易于配置和维护已分区的集合和全局数据库, 并具有全局扩展和自动索引

  • "无闩锁" 属性确保线程不阻塞, 并且读取器不会与作者冲突, 从而支持高度的并发性。

  • Cosmos DB 的数据库引擎利用完整的存储写入带宽进行索引更新 (即写操作不会因读取而减慢)

  • 客户可以利用服务端可编程性, 例如 UDFS和使用事务性 Javascript 代码的过程。

索引和查询

Cosmos DB 的自动索引索引所有数据属性。客户不需要预先决定他们可能查询的元素。Cosmos DB 不期望或要求任何架构或辅助索引定义来索引数据的规模。它是真正的透明架构。可以根据需要对索引进行自定义, 以删除未使用的属性和元素。

Cosmos DB 提供了一个丰富的查询功能 (SQL, MongoDB, Gremlin(图), 表) 与投影, 过滤器, 聚合, 排序和拼合运算符, 表达式 (算术, 逻辑, 和各种数据转换)。提供了空间数据类型和查询。

Cosmos DB 查询的操作具有高度的并发性、架构不可知的索引和从存储中分离的吞吐量。开发人员可以通过任何 API 引用任何数据模型, 并且仍然获得相同的核心价值支柱--全球分布、存储和吞吐量的弹性扩展、一致性选择和全面的 SLA。

复制、一致性和事务

五个一致性级别模型提供了一系列的一致性:从类似于 SQL 的“强”一致性到类似于 NoSQL 的“终极”一致性,以及介于二者之间的其他一致性。

允许客户指定单个分区集合或分区集合。单个分区集合仅限于 10 gb/10 krus。另一方面, 分区集合对缩放没有理论限制。查询可能跨越多个分区, 但事务总是在单个分区内绑定到。

全球数据库客户可以轻松地支持地理本地读写、弹性缩放吞吐量、故障转移优先级和一致的数据库架构和索引迁移

分析, 全文搜索和移动支持

Power BI, 包括Power BI Desktop, 通过Cosmos DB 连接器支持Cosmos DB 。目前不支持从Tableau、Qlik 和其他报告工具直接连接。

Azure 搜索和Cosmos DB 通过使用索引器来提供本地集成。创建和管理数据源 (包括Cosmos  db) 和对这些数据源进行操作的索引器, 可以从 Azure 搜索中对Cosmos DB 内容进行索引和查询。请注意, Azure 搜索索引只能够实现终的一致性。

Xamarin 和Cosmos DB 提供本地集成。大多数移动应用程序都需要在云中存储数据, 而 Azure Cosmos DB 是移动应用程序的云数据库。它拥有移动开发者所需要的一切

价格体系

Cosmos DB 是为可预知的性能而设计的, 因为这样的客户在请求单位 (RU) 每秒购买一个保留的容量吞吐量水平。

在Cosmos DB 中的每一个操作, 都有一个确定性的 RU 值, 它是基于内存、i/o 和 CPU 处理成本, 或者是用来完成的查询、存储过程或 JavaScript 操作的 "吞吐量"。用户应提供足够的RUs, 以弥补其峰值使用。

在集合被分区的地方, 调配的RUs在分区之间均匀分布。即每个分区的吞吐量 = (每个集合的总吞吐量)/(分区数)。良好的分区策略是成本效率的关键。

客户还应支付其索引存储的使用率。尽管这是按每个月的每 GB 价格计算的, 但实际的存储和吞吐量表是按小时比例的。

罗斯是根据用户提供的容量来计费的, 而不管它是否实际使用。另一方面, 存储只在一个使用的基础上计费。文档 DB 支持弹性伸缩, 从而可以在任何时候方便地调配/解除吞吐量。

管理和监视

Azure 门户提供了对语法突出显示和其他类似 IDE 的功能 ,包括数据浏览器 (图形、文档、表) 的 CRUD 支持。Microsoft Visual Studio IDE 还提供对 "Cosomo DB" 的支持。

查询执行返回有关消耗的资源单位的基本统计信息, 但没有查询计划机制可从服务中返回详细的查询执行计划 (Cosmos DB 支持无状态、short-lived的执行模型)。

Cosmos DB 有一个全自动的在线备份, 每4小时完成一次, 后2备份存储在任何时候。这些存储在 Azure Blob 存储中, 以保证低延迟和高效的上载。

防火墙支持对CosmosDB 和 MongoDB api 的 IP 过滤和防火墙规则。

安全性和加密

对Cosmos DB 的身份验证是通过主密钥和委派的资源标记来进行的。可以通过管理门户检索和重置主密钥。此时, Cosmos DB 与 Azure 活动目录不集成。Cosmos DB 提供了一种机制, 用于创建用户并为这些用户提供一组权限;它还没有提供一种机制来定义 "group" 本身。

可以在资源层次结构的任何级别授予权限。数据库、收集、文件或附件;这提供了项目级别的权限粒度。权限要么是授予完全 CRUD 访问权, 要么是只读的。执行过程需要集合上的所有权限标记。

必须使用 SSL 来保护客户端到服务连接。要求审核功能的客户需要使用触发器来实现。

客户

  • Rolls Royce

  • Telenor

  • Tuku

  • NewsRepublic

  • Breeze

  • Xomni

  • Astute

相关工具

  • PowerBI

  • Azure Stream Analytics

  • Azure Blob Storage

  • Azure Data Factory

  • Azure Search

  • Azure Machine Learning

  • Azure Functions

  • Azure HDInsight/Spark

  • Azure IoT Hub

相关文章