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服务,而你只需要挑选自己喜欢的方式来进行它完成自己的业务。

关注公众号玩转技术

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值