Azure Cosmos DB เป็นหนึ่งในบริการฐานข้อมูลแบบ Ready-to-scale ของ Microsoft ช่วงต้นเดือนที่ผ่านมานี้ มีโอกาสได้เข้าไปจับส่วนการเชื่อมต่อ (พลยังเขียนโค้ดอยู่น้า)
เห็นว่ามันสะดวกดี เลยมาเขียนเพื่อเป็นประโยชน์สำหรับคนต้องการจะเริ่มต้นครับ ทำตามได้ง่ายๆ เลย
ใครจะลองทำตาม ให้ทำการติดตั้ง .NET SDK ไว้ในเครื่องให้เรียบร้อยก่อนด้วยนะ
1. สร้าง Azure Cosmos DB Resource
เริ่มจากไปที่ Azure Portal แล้ว sign -in ให้เรียบร้อย (ใครยังไม่มี Azure Account สมัครฟรีที่นี่)
จากนั้นพอเข้ามาที่ portal เห็นแบบภาพด้านล่าง ให้กดปุ่ม Create a resource
จากหน้า Marketplace แบบด้านล่าง > ค้นหา Azure Cosmos DB ในช่องค้นหา > และกด Create Azure Cosmos DB
จากภาพด้านล่างนั้น ให้กดปุ่มเลือก NoSQL API (ในกรณีอื่นๆ สามารถเลือกได้ตามความต้องการ แต่การเขียนโค้ดจัดการข้อมูลก็จะแตกต่างกัน)
และจากภาพด้านล่าง ก็ให้กรอกข้อมูลที่จำเป็นในการสร้าง Cosmos DB Resource ครับ
- เลือก Subscription ที่เราต้องการ และ Resource group (สร้างใหม่ได้ถ้าจำเป็น)
- กำหนดชื่อ resource, location, ส่วน capacity mode ในที่นี้จะเลือก Provisioned throughput เพื่อที่จะเลือกการทำงานแบบ Free Tier
- เลือกเปิด Apply Free Tier Discount และ Limit total account throughput (หากเป็น production ก็สามารถเลือกไม่เอา Discount ก็ได้)
- กดปุ่ม Review + create และกดปุ่ม create ซ้ำเพื่อเริ่มการ provision ตัว Cosmos DB
หลังจากสร้างเสร็จแล้ว ให้เข้าไปที่ Cosmos DB Resource และทำตามภาพขั้นตอนด้านล่าง
- ค้นหาเมนูชื่อ Keys (จริงๆ เมนูนี้จะอยู่ในส่วนของ Setting > Keys)
- กดเลือกเมนู
- copy Primary Connection String เอาไว้
2. สร้าง .NET แอพพลิเคชั่นเพื่อเชื่อมต่อกับ Azure Cosmos DB
2.1 สร้างโปรเจค .NET console
เปิด Windows Terminal บน Windows หรือ Terminal บน MacOS
จากนั้นรันคำสั่ง
dotnet new console -n cosmos-console
จากนั้น ให้ติดตั้ง Package เพิ่มเติม โดยรันคำสั่งด้านล่างต่อไปนี้ทีละคำสั่ง
cd cosmos-console
dotnet add package Microsoft.Azure.Cosmos
dotnet add Microsoft.Extensions.Configuration
dotnet add Microsoft.Extensions.Configuration.Json
2.2 สร้างและเรียกใช้งาน Configuration
จากนั้นให้สร้างไฟล์ชื่อ appsettings.json ไว้ใน Directory ของ Project และใส่ข้อมูลลงไปใฟล์
{
"CosmosDB": {
"ConnectionString":"ส่วนนี้ให้เอา Connection string ของ CosmosDB ที่ได้มาจากขั้นตอนที่แล้ว มาใส่",
"DatabaseId":"db",
"ContainerId":"items",
"PartitionKeyPath":"/id"
}
}
เสร็จแล้วให้เปิดไฟล์ cosmos-console.csproj ที่อยู่ใน Directory ของ Project และเพิ่มส่วนด้านล่างเข้าไปดังตัวอย่างด้านล่าง
<Project Sdk="Microsoft.NET.Sdk">
... ของเดิมที่มีอยู่ในไฟล์
<ItemGroup>
<None Update="appsettings.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
</Project>
3. เชื่อมต่อและสร้าง item ลง Cosmos DB
เปิดไฟล์ Program.cs และเขียนโค้ดด้านล่างลงไป
// Type: C#
using System.Text.Json.Serialization;
using Microsoft.Azure.Cosmos;
using Microsoft.Extensions.Configuration;
// ทำการอ่านไฟล์ appsettings.json
var configuration = new ConfigurationBuilder().AddJsonFile($"appsettings.json");
var config = configuration.Build();
// ดึงค่า configuration จาก appsettings.json
string connectionString = config["CosmosDB:ConnectionString"];
string databaseId = config["CosmosDB:DatabaseId"];
string containerId = config["CosmosDB:ContainerId"];
string partitionKeyPath = config["CosmosDB:PartitionKeyPath"];
// เชื่อมต่อ Cosmos DB ด้วย Connection String
CosmosClient client = new CosmosClient(connectionString);
// สร้าง database ด้วย Id ที่กำหนด
Database database = await client.CreateDatabaseIfNotExistsAsync(databaseId);
// สร้าง container ด้วย Id ที่กำหนด พร้อมกำหนดว่า property ไหนจะเป็น partition key
Container container = await database.CreateContainerIfNotExistsAsync(containerId, partitionKeyPath);
// สร้าง object ของ Product record และส่งข้อมูลไปยัง Cosmos DB
Product product = new(
Guid.NewGuid().ToString(),
"Test"
);
// ส่งข้อมูลไปยัง Cosmos DB และกำหนด partition key ด้วย Id ของ object
var createItemResponse = await container.CreateItemAsync<Product>(product, new PartitionKey(product.id));
// ประกาศ Product record เพื่อเก็บข้อมูลที่จะส่งไปยัง Cosmos DB
public record Product
(
string id ,
string title
);
ทำการบันทึกไฟล์ และรันคำสั่งด้านล่างใน directory ของโปรเจค ผ่านโปรแกรม Terminal
dotnet run
หากทำงานได้ไม่มีปัญหา เราสามารถใช้ Data Explorer ที่อยู่บน Azure Cosmos DB เปิดดูข้อมูลได้ตามภาพด้านล่าง
- เปิด Data Explorer ที่อยู่ใน Cosmos DB
- สังเกตดูในส่วนของ Database และ Container ที่ถูกสร้างขึ้นมาตาม Id รวมถึง item ที่อยู่ด้านใน
- กดดูรายการของ document ที่อยู่ใน container
- รายละเอียดของ Document ที่เราใช้โค้ดใน .NET ใส่เข้ามา