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服務,而你只需要挑選自己喜歡的方式來操作它完成自己的業務,
關注我的公眾號一起玩轉技術

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/76781.html
標籤:其他
