Azure Cosmos DB,神奇的数据库,我觉得其实都不是数据库了,是一种梦想。当第一次看到这个名字的时候,就惊呆了,宇宙数据库,这个名字也是够霸气。
Azure Cosmos DB 是由 Microsoft 提供的全球分布式多模型数据库。 只需单击一个按钮,即可通过 Azure Cosmos DB 跨任意数量的 Azure 地理区域弹性且独立地缩放吞吐量和存储。 它通过综合服务级别协议 (SLA) 提供吞吐量、延迟、可用性和一致性保证,这是其他数据库服务无法提供的。
Azure Cosmos DB 提供关系数据库和非关系数据库的最佳功能
下表比较了关系DB,非关系DB和Cosmos DB的关系
功能 | 关系 DB | 非关系 (NoSQL) DB | Azure Cosmos DB |
---|---|---|---|
全球分布 | 否 | 否 | 统包式解决方案,目前在中国有 2 个区域,多宿主,全球超过30个区域 |
横向缩放 | 否 | 是 | 独立缩放存储和吞吐量 |
延迟保证 | 否 | 是 | 在 99% 的情况下,读取操作的延迟 < 10 毫秒,写入操作的延迟 < 15 毫秒 |
高可用性 | 否 | 是 | 始终可用,PACELC 权衡,自动和手动故障转移 |
数据模型 + API关系 | 关系+SQL | 多模型+OSS API | 多模型 + SQL + OSS API(即将推出更多) |
SLA | 是 | 否 | 有关延迟、吞吐量、一致性和可用性的综合 SLA |
*PACELC 解释: https://en.wikipedia.org/wiki/PACELC_theorem#Database_PACELC_ratings
*OSS:对象存储(Object Storage Service,简称OSS)
关键功能
作为一种全球分布式数据库服务,Azure Cosmos DB 提供以下功能,帮助构建可缩放的、具有高响应性的全球分布式应用程序:
统包式全球分布
应用程序在任何地方都可以即时提供给用户使用。 现在,数据也可以这样。
不必担心硬件以及添加节点、VM 或内核等问题。 只需点击一下,即可获得数据。
多个数据模型和用于访问及查询数据的常用 API
支持多个数据模型,包括键值、文档和列式数据模型。
用于 Node.js、Java、.NET、.NET Core、Python 和 MongoDB 的可扩展 API。
用于查询的 SQL。
在全球范围内按需求弹性缩放吞吐量和存储
以秒和分钟为时间粒度轻松缩放吞吐量,并可以随时对其进行更改。
透明且自动地缩放存储以满足现在和将来对大小的要求。
构建具有高响应性的任务关键型应用程序
在全球任意位置均可访问你的数据,99% 的情况下延迟仅为几毫秒。
确保“始终可用”可用性
在单个区域内可用性为 99.99%。
部署到任意数量的 Azure 区域可提高可用性。
模拟一个或多个区域的故障而保证不丢失任何数据。
编写全球分布式应用程序的正确方式
五个一致性模型提供类似于 SQL 的非常一致性到类似于 NoSQL 的最终一致性,以及介于两者之间的一致性。
退款保证
要么数据快速到达,要么退款。
有关可用性、延迟、吞吐量和一致性的服务级别协议。
无数据库架构/索引管理
无需担心将数据库架构和索引与应用程序架构保持同步的问题。 我们免架构。
拥有成本低廉
比非托管解决方案的成本效益高五到十倍。
比 DynamoDB 便宜三倍。
创建Comos DB
点击Azure CosomosDB,出现如下界面,点击ID ,选择API,API目前有三种选择:MongoDB、SQL (DocumentDB) 和表(键/值),这里创建了一个 SQL(DocumentDB)测试。
创建成功后,点击:数据资源管理器
点击New Collection,创建数据集 ,输入数据库ID ,数据集的ID , 容量,吞吐量,这里创建了 每秒400个的吞吐量, 400ru/s的能力。
这里创建了2个数据集,结果如下:
可以看到配置了区域是北京和上海,如果使用国际版意味着可以创建超过30个区域的配置。这就是DBA的梦想啊!!!
也可以进行缩放配置,也就是说可以进行某个区域的性能进行调整。
浏览数据
应用使用数据
.Nets示例,如何使用程序读取
https://docs.azure.cn/zh-cn/cosmos-db/documentdb-dotnet-samples
其他示例:
https://docs.azure.cn/zh-cn/cosmos-db/documentdb-nodejs-samples
https://docs.azure.cn/zh-cn/cosmos-db/documentdb-python-samples
总结
Cosmos DB 采用本机方式对数据进行分区,实现高可用性和可伸缩性。 Cosmos DB 在可用性、吞吐量、低延迟和一致性方面提供 99.99% 保证。
Cosmos DB 采用由 SSD 提供支持的存储,具有低延迟毫秒级响应时间。
Cosmos DB 支持最终、一致前缀、会话和有限过期等一致性级别,从而实现最大的灵活性和很高的性价比。 在一致性级别方面,没有任何数据库服务的灵活性比 Cosmos DB 更高。
Cosmos DB 提供灵活的数据友好型定价模式,独立测量存储和吞吐量。
Cosmos DB 保留的吞吐量模型使你可以考虑读取/写入数量而不考虑基础硬件的 CPU/内存/IOP。
Cosmos DB 的设计允许扩展到每天约数十亿个请求的大规模请求量。
Cosmos DB可以全球部署,支持多区域,可区域性进行扩展。从应用角度讲,可以全球性继续部署应用。几乎实现应用的无限扩展。
如何使用,可参考
https://docs.azure.cn/zh-cn/cosmos-db/use-cases