Cosmos DB 架构

面向 Azure Storage 的开发

Shahzad Mian

Content developer, DataCamp

Azure Cosmos DB

Azure_Cosmos_DB.svg.png

面向 Azure Storage 的开发

问题陈述

Cosmos DB 问题

面向 Azure Storage 的开发

什么是 Cosmos DB?

 

CosmosDB

  • 多模型、全球分布式 NoSQL 数据库。
  • NoSQL:灵活、类似文件夹的存储。
  • 支持多种 API 和数据类型。
  • 像灵活菜单,可选 API 风格:
    • SQL(Core)用于 JSON 文档。
    • MongoDB 适合 Mongo 开发者。
    • Cassandra 适合宽列数据。
    • Gremlin 适合图关系。
    • Table API 用于键值存储。
面向 Azure Storage 的开发

面向开发者的 Cosmos DB

  • 面向开发者设计。
  • 自动索引,无需模式管理。
  • 查询快速。
  • 五种一致性级别:从 Strong 到 Eventual。
  • 在性能与一致性间权衡。
    • Strong:所有人即时看到相同结果。
    • Eventual:稍后最终一致。

 

强一致与最终一致

面向 Azure Storage 的开发

扩展与吞吐量(RU/s)

预配模式

  • 每秒请求单位(RU/s)= Cosmos DB 的性能货币。
  • 每次读、写或查询都会消耗 RU/s。
  • 可选固定预配或自动缩放。
面向 Azure Storage 的开发

扩展与吞吐量(RU/s)

扩展

  • 每秒请求单位(RU/s)= Cosmos DB 的性能货币。
  • 每次读、写或查询都会消耗 RU/s。
  • 可选固定预配或自动缩放。
  • 自动缩放随负载自动调整。
面向 Azure Storage 的开发

弹性扩展与分区

  • Cosmos DB 通过分区实现扩展。
  • 每个容器使用一个分区键。
  • 分区键将相关数据归组。
  • 例:Cipher Coffee 订单使用 /customerId。
  • 用 /customerId 作为分区键时,某客户的订单都在同一分区。
  • 数据增长时查询仍然快速。
  • 热分区:分区负载不均导致性能下降。

弹性扩展与分区

面向 Azure Storage 的开发

全球分发

  • 轻松将数据复制到任意 Azure 区域。
  • 只需勾选复选框,无需复杂配置。
  • 区域故障时自动重路由流量。
  • 零停机、零数据丢失。
  • 如同备用门店可即刻服务客户。

全球分发

面向 Azure Storage 的开发

监控与成本优化

  • 在 Azure 门户跟踪性能。
  • 查看 RU/s、延迟、请求费用等指标。
  • 如同车载仪表盘:速度与油耗一目了然。
  • Cipher Coffee 工程师据此分析。
  • 通过动态调整吞吐量降本。

监控

面向 Azure Storage 的开发

开始练习!

面向 Azure Storage 的开发

Preparing Video For Download...