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语句,而当文档特别大时这样就出先了转 ...
随机推荐
- mysql表中已有数据,为表新增一个自增id。
第一步,在navicat中,例如表test新建查询,输入以下两行代码即可搞定. alter table test add id int; alter table `test` change id id ...
- manjaro与python开发环境配置
1.manjaro配置 1.1.启动项 sudo update-grub 注:Manjaro(archLinux)系统时间快8小时--> sudo timedatectl set-local-r ...
- css 引入的 方式有哪些? link与post有什么区别??
有四钟形式: 1.链入外部样式表,就是把样式表保存为一个样式表文件,然后在页面中用<link rel="stylesheet" type="text/css&quo ...
- Mysql多条数据以一条展示和判断某字符是否在某字段
多条数据以一条数据展示:GROUP_CONCAT select GROUP_CONCAT(uuid) from user; 判断某字符是否存在某字段:INSTR select * from( sele ...
- SpringSecurity权限管理系统实战—八、AOP 记录用户、异常日志
目录 SpringSecurity权限管理系统实战-一.项目简介和开发环境准备 SpringSecurity权限管理系统实战-二.日志.接口文档等实现 SpringSecurity权限管理系统实战-三 ...
- openstack vnc 报1006的错误
1.问题现象 创建完虚拟机以后,通过nova get-vnc-console命令,获取虚机的vnc连接地址,在浏览器中打开该连接,报1006错误 2.vnc的原理图 3.定位分析 1)分别在控制节点和 ...
- python编程中的并发------多线程threading模块
任务例子:喝水.吃饭动作需要耗时1S 单任务:(耗时20s) for i in range(10): print('a正在喝水') time.sleep(1) print('a正在吃饭') time. ...
- source insight编辑matlab,不可
先说结论,我用的source insight版本是4.0x,matlab的语言包用的sourceinght官网提供的matlab.clf.链接如下:https://www.sourceinsight. ...
- HTTPS协议原理解析
一.对称加密与非对称加密 1,定义: 对称加密:加密和解密的秘钥使用的是同一个. 非对称加密:与对称加密算法不同,非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatek ...
- WPF实现的加载动画
2020-09-03 09:43:30 xaml代码 <Grid x:Name="LayoutRoot" Background="Transparent" ...