Azure Cosmos DB介绍及演示
Azure Cosmos DB 是 Microsoft 提供的全球分布式多模型数据库服务。Cosmos DB是一种NoSql数据库,但是它兼容多种API。它支持SQL, MongoDB、Cassandra或 Gremlin,你可以挑选自己喜欢的方式进行存储跟访问。
主要优势
统包式全局分发
凭借 Cosmos DB,你可以在全球范围内生成具有高响应性和高可用性的应用程序。 无论用户身处何处,Cosmos DB 均可以透明方式复制数据,因此用户可以与离他们最近的数据副本进行交互。
凭借 Cosmos DB,还可以随时向 Cosmos 帐户添加或删除任何 Azure 区域,只需单击一个按钮即可。 Cosmos DB 将无缝地将数据复制到与 Cosmos 帐户相关联的所有区域,同时,得益于该服务的多导功能,应用程序将继续保持高可用性。 有关详细信息,请参阅全局分发一文。
AlwaysOn
凭借与 Azure 基础结构和透明多主数据库复制的深度集成,Cosmos DB 可为读写操作提供 99.999% 的高可用性。 Cosmos DB 还提供以编程方式(或通过门户)调用 Cosmos 帐户的区域性故障转移的功能。 此功能有助于确保应用程序能够在发生区域性灾难时进行故障转移。
吞吐量和存储的弹性可伸缩性(全球范围内)
Cosmos DB 采用透明的水平分区和多主数据库复制设计,在全球范围内为读写操作提供了前所未有的弹性可伸缩性。 通过单个 API 调用即可在全球范围内从数千个请求/秒扩展到数亿个请求/秒,并且只需为所需吞吐量(和存储)付费。 此功能有助于处理工作负载中的意外峰值,而无需为意外峰值进行过度预配。 有关详细信息,请参阅 Cosmos DB 中的分区、容器和数据库上的预配吞吐量以及全局缩放预配的吞吐量。
保证第 99 个百分位为低延迟(全球范围内)
使用 Cosmos DB,可以生成响应迅速、具全球规模的应用程序。 凭借其新颖的多主数据库复制协议、免闩锁及优化了写入的数据库引擎,,Cosmos DB 可保证全球任意位置第 99 个百分位的读取(已编入索引)和写入延迟均低于 10 毫秒。 此功能可以为高响应能力的应用持续引入数据,并提供快速查询。
精确定义的多个一致性选择
在 Cosmos DB 中构建全球分布式应用程序时,不再需要在一致性、可用性、延迟和吞吐量之间进行极端的权衡。 Cosmos DB 的多主数据库复制协议经过精心设计,为一个直观的编程模型(其低延迟和高可用性适用于全球分布式应用程序)提供五个明确定义的一致性选择 - “强”、“有限过期”、“会话”、“一致前缀”和“最终” 。
无需架构或索引管理
对于全球分布式应用来说,让数据库架构和索引与应用程序架构保持同步尤其不便。 借助 Cosmos DB,则无需处理架构或索引管理。 数据库引擎完全与架构无关。 由于不需要架构和索引管理,因此迁移架构时也不必担心应用程序停用时间。 Cosmos DB 自动为所有数据编制索引,并可快速提供查询服务。
以上内容摘自Azure Cosmos文档
创建Cosmos DB资源
在portal控制面板找到Cosmos点击创建。

跟别的资源一样填写一个账户名,选择一个离自己近的位置。API选择MongoDB API。Apply Free Tier Discount选择Apply。这样就能开启免费额度了。
Cosmos DB的免费额度为:5G存储,400请求单位/秒。
复制Mongodb连接字符串

左侧菜单选择“连接字符串”,复制主连接字符串内容,下面会用到。
使用Mongodb API操作数据库
因为Cosmos支持mongodb协议,所以我们操作Cosmos的时候直接把Cosmos当做mongodb来使用就可以。下面代码演示了如何使用nodejs的mongodb驱动来操作Cosmos DB。
var MongoClient = require('mongodb').MongoClient;
var assert = require('assert');
var ObjectId = require('mongodb').ObjectID;
var endpoint = 'mongodb://';
var collectionName = "students";
//新增一个json文档
var insert = function(db, callback) {
db.collection(collectionName).insertOne( {
"id": "S001",
"lastName": "zhou",
"birthday": "2019-09-09",
"sex": "m",
"classId": 0
}, function(err, result) {
assert.equal(err, null);
console.log("Inserted a document into the students collection.");
callback();
});
};
//把collection里的数据都查出来
var find = function(db, callback) {
var cursor =db.collection(collectionName).find( );
cursor.each(function(err, doc) {
assert.equal(err, null);
if (doc != null) {
console.dir(doc);
} else {
callback();
}
});
};
//修改S001的lastName
var update = function(db, callback) {
var myquery = { "id": "S001" };
var newvalues = { $set: {lastName: "li"} };
db.collection(collectionName).updateOne(
myquery,newvalues,
function(err, results) {
console.log(results);
callback();
});
};
//移除lastName为li的内容
var remove = function(db, callback) {
db.collection(collectionName).deleteMany(
{ "lastName": "li" },
function(err, results) {
console.log(results);
callback();
}
);
};
MongoClient.connect(endpoint, function(err, client) {
assert.equal(null, err);
var db = client.db('school');
insert(db, function() {
console.log('insert success .');
find(db, function() {
console.log('find success .');
update(db, function() {
console.log('update success .');
remove(db, function(){
console.log('remove success .');
})
});
})
});
});
总结
Azure Cosmos DB是微软基于Azure开发的一款NoSql数据库,它支持多种数据库API。比如按SQL方式查询,按MongoDB方式读写等。如果你有海量文档数据需要存储及查询,你可以把他存储在Azure Cosmos DB上,由Azure来为你提供低延时、高吞吐量以及高达99.999%的SLA服务,而你只需要挑选自己喜欢的方式来操作它完成自己的业务。
Azure Cosmos DB介绍及演示的更多相关文章
- Azure Cosmos DB (一) 入门介绍
一,引言 今天是国庆.中秋双节房价的第三天,今天抽时间分享一篇关于使用Azure 提供的一项NoSql 服务-----Azure Cosmos DB.就有人问了,我听说过 MongoDB.Redis ...
- NCF 的Azure Cosmos DB 演示案例
简介 NCF想必看过我之前发的NCF的文章的同学们都已经很熟悉了 今天我们要来聊一聊的是NCF遇到Azure Cosmos DB后会碰撞出什么样的火花,让我们一起往下看 我们先来说说什么是Azure ...
- Azure Cosmos DB (二) SQL API 操作
一,引言 还记得国庆期间,我们学习了一下关于Azure Cosmos DB 的一些基础知识以及Azure Cosmos DB 的几种支持数据库类型.今天就开始分享一些实战操作,如何通过Azure Po ...
- Azure Cosmos DB (三) EF Core 操作CURD
一,引言 接着上一篇使用 EF Core 操作 Azure CosmosDB 生成种子数据,今天我们完成通过 EF Core 实现CRUD一系列功能.EF Core 3.0 提供了CosmosDB 数 ...
- Azure Cosmos DB (五) .Net Core 控制台应用
一,引言 之前在讲Azure CosmosDB Core(SQL)核心的时候,使用了EF Core 的方式,引用了 "Microsoft.EntityFrameworkCore.Cosmos ...
- Azure Cosmos DB 使用费用参考
之前在学习Cosmos DB 中SQL API(DocumentDB) 的时候,也就是之前做的一些笔记,看到有使用费用的一些介绍,就有兴趣的去了解了下,做了一下简单的总结. 想了解更多或是购买使用的还 ...
- Azure Cosmos DB (四) 使用EF的SQL API 异地冗余
一,引言 上一篇文章中,我们介绍到使用了EF Core 与Cosmos DB SQL API 进行结合开发.同时,大家在开发过程中一定要记得EF Core 不支持Cosmos DB 的迁移.今天我们启 ...
- Azure CosmosDB (10) Azure Cosmos DB体系结构
<Windows Azure Platform 系列文章目录> Azure Cosmos DB的体系结构分为以下几个部分: 1.Database Accounts Database Acc ...
- azure cosmos db (mongo DB)
使用.net mongo的操作类操作azure(微软云)cosmosdb时,发现在做delete的操作的时候可以传一个文档对象,但是最后这个文档会解析成具体的sql语句,而当文档特别大时这样就出先了转 ...
随机推荐
- 面试题-JavaSE语法
1.Java 有没有 goto 语句? goto 是 Java 中的保留字,在目前版本的 Java 中没有使用.根据 James Gosling(Java 之父)编写的<The Java Pr ...
- Kubernetes 的层级命名空间介绍
原文链接:https://fuckcloudnative.io/posts/introducing-hierarchical-namespaces/ 在单个 Kubernetes 集群上安全托管大量用 ...
- Linux下mv命令高级用法
mv 也是 Linux 下一个使用频率非常高的命令,但除了一些基本用法,你还知道它的哪些高级用法呢? 1. 基本用法 移动一个/多个文件: 移动一个/多个目录: 重命名文件/目录. 这些都是很基本的用 ...
- IP-master
http://www.igotaobao.cn/IP-master/
- Socket原理及实践(Java/C/C++)
原理 基本概念 什么是TCP/IP.UDP? 详细的可以看一下这个:学习计算机网络知识只要一篇就够了! TCP/IP(Transmission Control Protocol/Internet Pr ...
- 9.oracle表查询关键字
1.使用逻辑操作符号问题:查询工资高于500或者是岗位为manager的雇员,同时还要满足他们的姓名首字母为大写的J? select * from emp where (sal > 500 or ...
- golang mysql demo
Go操作Mysql数据库 使用Go操作MySQL等数据库,一般有两种方式:一是使用database/sql接口,直接在代码里硬编码sql语句:二是使用gorm,即对象关系映射的方式在代码里抽象的操作数 ...
- Federated Learning: Challenges, Methods, and Future Directions
郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布! arXiv:1908.07873v1 [cs.LG] 21 Aug 2019 Abstract 联邦学习包括通过远程设备或孤立的数据中心( ...
- 更换git远程仓库地址
通过命令直接修改远程仓库地址 git remote 查看所有远程仓库 git remote xxx 查看指定远程仓库地址 git remote set-url origin 你新的远程仓库地址 先删除 ...
- Java面试题(多线程篇)
多线程 35.并行和并发有什么区别? 1.并行是指两个或者多个事件在同一时刻发生:而并发是指两个或多个事件在同一时间间隔发生. 2.并行是在不同实体上的多个事件,并发是在同一实体上的多个事件. 3.在 ...