識別 Azure Cosmos DB API
Azure Cosmos DB 是 Microsoft 完全受控且無伺服器的分散式資料庫,適用於任何大小或規模的應用程式,同時支援關聯式和非關聯式工作負載。 開發人員可以使用慣用的開放原始碼的資料庫引擎,快速建置和移轉應用程式,包括 PostgreSQL、MongoDB 和 Apache Cassandra。 當您佈建新的 Cosmos DB 執行個體時,您可以選取要使用的資料庫引擎。 引擎的選擇會依據許多因素而定,包括要儲存的資料類型、支援現有應用程式的需求,以及使用資料存放區的開發人員技能。
Azure Cosmos DB for NoSQL
Azure Cosmos DB for NoSQL 是 Microsoft 的原生非關聯式服務,可用於處理文件資料模型。 它可管理 JSON 檔案格式的資料,儘管它是 NoSQL 資料儲存體解決方案,但會使用 SQL 語法來處理資料。
包含客戶資料的 Azure Cosmos DB 資料庫的 SQL 查詢看起來可能如下所示:
SELECT *
FROM customers c
WHERE c.id = "joe@litware.com"
此查詢的結果包含一或多個 JSON 文件,如下所示:
{
"id": "joe@litware.com",
"name": "Joe Jones",
"address": {
"street": "1 Main St.",
"city": "Seattle"
}
}
Azure Cosmos DB for MongoDB
MongoDB 是熱門的開放原始碼資料庫,其中資料會以二進位 JSON (BSON) 格式儲存。 Microsoft Azure Cosmos DB 可讓開發人員使用 MongoDB 用戶端程式庫和程式碼來處理 Azure Cosmos DB 中的資料。
MongoDB 查詢語言 (MQL) 會使用精簡的物件導向語法,讓開發人員使用物件來呼叫方法。 例如,下列查詢會使用 find 方法來查詢 db 物件中的 products 集合:
db.products.find({id: 123})
此查詢的結果包含 JSON 文件,如下所示:
{
"id": 123,
"name": "Hammer",
"price": 2.99
}
Azure Cosmos DB for PostgreSQL
適用於 PostgreSQL 的 Azure Cosmos DB 是 Azure 中的分散式 PostgreSQL 選項。 Azure Cosmos DB for PostgreSQL 是一種原生的 PostgreSQL 全域分散式關聯式資料庫,可自動進行資料分區,協助您建置可高度調整的應用程式。 您可以開始在單一節點伺服器群組上建置應用程式,就像在其他地方使用 PostgreSQL 一樣。 當應用程式擴充性和效能需求逐漸成長,您便可透過一目瞭然的方式來分散資料表,流暢擴充至多個節點。 PostgreSQL 是一種關聯式資料庫管理系統 (RDBMS),您可以在其中定義資料的關聯式資料表,例如,您可以定義如下的產品資料表:
ProductID | ProductName | Price |
---|---|---|
123 | 鐵鎚 | 2.99 |
162 | Screwdriver | 3.49 |
然後,您可以查詢此資料表,以使用 SQL 來擷取特定產品的名稱和價格,如下所示:
SELECT ProductName, Price
FROM Products
WHERE ProductID = 123;
此查詢的結果會包含產品 123 的資料列,如下所示:
ProductName | Price |
---|---|
鐵鎚 | 2.99 |
Azure Cosmos DB for Table
Azure Cosmos DB for Table 用來處理索引鍵值資料表中的資料,類似於 Azure 資料表儲存體。 其提供比 Azure 資料表儲存體更大的可擴縮性和效能。 例如,您可以定義名為「客戶」的資料表,如下所示:
PartitionKey | RowKey | 名稱 | 電子郵件 |
---|---|---|---|
1 | 123 | Joe Jones | joe@litware.com |
1 | 124 | Samir Nadoy | samir@northwind.com |
然後,您可以透過其中一個特定語言 SDK 使用資料表 API 來呼叫服務端點,以從資料表擷取資料。 例如,下列要求會傳回包含前一個資料表中 Samir Nadoy 記錄的資料列:
https://endpoint/Customers(PartitionKey='1',RowKey='124')
Azure Cosmos DB for Apache Cassandra
Azure Cosmos DB for Apache Cassandra 與 Apache Cassandra 相容,其為使用資料行系列儲存體結構的熱門開放原始碼資料庫。 資料行系列是類似關聯式資料庫中的資料表,但例外狀況是,每個資料列都不需要有相同的資料行。
例如,您可以建立 Employees 資料表,如下所示:
識別碼 | 名稱 | 經理 |
---|---|---|
1 | Sue Smith | |
2 | Ben Chan | Sue Smith |
Cassandra 支援以 SQL 為基礎的語法,因此用戶端應用程式可以擷取 Ben Chan 的記錄,如下所示:
SELECT * FROM Employees WHERE ID = 2
Azure Cosmos DB for Apache Gremlin
Azure Cosmos DB for Apache Gremlin 是與圖形結構中的資料搭配使用;其中實體會定義為形成連通圖中節點的頂點。 節點是由代表關聯性的邊緣連接在一起,如下所示:
影像中的範例顯示兩種頂點 (employee (員工) 和 department (部門)),以及連接這些頂點的邊緣 (員工 "Ben" 的主管為員工 "Sue",且兩個員工都是隸屬 "Hardware" 部門)。
Gremlin 語法包含可在頂點和邊緣上運作的函式,可讓您在圖形中插入、更新、刪除和查詢資料。 例如,您可以使用下列程式碼新增名為 Alice 的新員工,其隸屬於員工識別碼 1 (Sue)
g.addV('employee').property('id', '3').property('firstName', 'Alice')
g.V('3').addE('reports to').to(g.V('1'))
下列查詢會依識別碼順序傳回所有員工頂點。
g.V().hasLabel('employee').order().by('id')