DocumentDB-데이터베이스 삭제
.Net SDK를 사용하여 코드뿐만 아니라 포털에서 데이터베이스를 삭제할 수 있습니다. 여기서는 DocumentDB에서 데이터베이스를 삭제하는 방법을 단계별로 설명합니다.
Step 1− Azure Portal에서 DocumentDB 계정으로 이동합니다. 데모를 위해 다음 스크린 샷에서 볼 수 있듯이 두 개의 데이터베이스를 더 추가했습니다.
Step 2− 데이터베이스를 삭제하려면 해당 데이터베이스를 클릭해야합니다. tempdb를 선택하면 다음 페이지가 표시되고 '데이터베이스 삭제'옵션을 선택합니다.
Step 3 − 확인 메시지가 표시되면 '예'버튼을 클릭합니다.
대시 보드에서 tempdb를 더 이상 사용할 수 없음을 알 수 있습니다.
.Net SDK를 사용하여 코드에서 데이터베이스를 삭제할 수도 있습니다. 다음은 단계입니다.
Step 1 − 삭제할 데이터베이스의 ID를 지정하여 데이터베이스를 삭제하겠습니다.하지만 SelfLink가 필요합니다.
Step 2 − 이전과 같이 CreateDatabaseQuery를 호출하고 있지만 이번에는 실제로 tempdb1 ID를 가진 하나의 데이터베이스 만 반환하는 쿼리를 제공합니다.
private async static Task DeleteDatabase(DocumentClient client) {
Console.WriteLine("******** Delete Database ********");
Database database = client
.CreateDatabaseQuery("SELECT * FROM c WHERE c.id = 'tempdb1'")
.AsEnumerable()
.First();
await client.DeleteDatabaseAsync(database.SelfLink);
}
Step 3− 이번에는 실제로 목록 객체가 필요하지 않기 때문에 ToList () 대신 AsEnumerable을 호출 할 수 있습니다. 결과 만 예상하고 AsEnumerable을 호출하면 First ()를 사용하여 쿼리에서 반환 된 첫 번째 데이터베이스 개체를 가져올 수 있습니다. 이것은 tempdb1의 데이터베이스 개체이며 데이터베이스를 삭제하는 DeleteDatabaseAsync를 호출하는 데 사용할 수있는 SelfLink가 있습니다.
Step 4 − 또한 DocumentClient를 인스턴스화 한 후 CreateDocumentClient 작업에서 DeleteDatabase 작업을 호출해야합니다.
Step 5 − 지정된 데이터베이스를 삭제 한 후 데이터베이스 목록을 보려면 GetDatabases 메서드를 다시 호출 해 보겠습니다.
using (var client = new DocumentClient(new Uri(EndpointUrl), AuthorizationKey)) {
//await CreateDatabase(client);
GetDatabases(client);
await DeleteDatabase(client);
GetDatabases(client);
}
다음은 지금까지의 완전한 Program.cs 파일입니다.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Azure.Documents;
using Microsoft.Azure.Documents.Client;
using Microsoft.Azure.Documents.Linq;
using Newtonsoft.Json;
namespace DocumentDBDemo {
class Program {
private const string EndpointUrl = "https://azuredocdbdemo.documents.azure.com:443/";
private const string AuthorizationKey = "BBhjI0gxdVPdDbS4diTjdloJq7Fp4L5RO/
StTt6UtEufDM78qM2CtBZWbyVwFPSJIm8AcfDu2O+AfV T+TYUnBQ==";
static void Main(string[] args) {
try {
CreateDocumentClient().Wait();
} catch (Exception e) {
Exception baseException = e.GetBaseException();
Console.WriteLine("Error: {0}, Message: {1}", e.Message, baseException.Message);
}
Console.ReadKey();
}
private static async Task CreateDocumentClient() {
// Create a new instance of the DocumentClient
using (var client = new DocumentClient(new Uri(EndpointUrl), AuthorizationKey)) {
//await CreateDatabase(client);
GetDatabases(client);
await DeleteDatabase(client);
GetDatabases(client);
}
}
private async static Task CreateDatabase(DocumentClient client) {
Console.WriteLine();
Console.WriteLine("******** Create Database *******");
var databaseDefinition = new Database { Id = "mynewdb" };
var result = await client.CreateDatabaseAsync(databaseDefinition);
var database = result.Resource;
Console.WriteLine(" Database Id: {0}; Rid: {1}",
database.Id, database.ResourceId);
Console.WriteLine("******** Database Created *******");
}
private static void GetDatabases(DocumentClient client) {
Console.WriteLine();
Console.WriteLine();
Console.WriteLine("******** Get Databases List ********");
var databases = client.CreateDatabaseQuery().ToList();
foreach (var database in databases) {
Console.WriteLine(" Database Id: {0}; Rid: {1}", database.Id,
database.ResourceId);
}
Console.WriteLine();
Console.WriteLine("Total databases: {0}", databases.Count);
}
private async static Task DeleteDatabase(DocumentClient client) {
Console.WriteLine();
Console.WriteLine("******** Delete Database ********");
Database database = client
.CreateDatabaseQuery("SELECT * FROM c WHERE c.id = 'tempdb1'")
.AsEnumerable()
.First();
await client.DeleteDatabaseAsync(database.SelfLink);
}
}
}
위의 코드가 컴파일되고 실행되면 세 데이터베이스의 데이터베이스 및 리소스 ID와 총 데이터베이스 수를 포함하는 다음 출력이 표시됩니다.
******** Get Databases List ********
Database Id: myfirstdb; Rid: Ic8LAA==
Database Id: mynewdb; Rid: ltpJAA==
Database Id: tempdb1; Rid: 06JjAA==
Total databases: 3
******** Delete Database ********
******** Get Databases List ********
Database Id: myfirstdb; Rid: Ic8LAA==
Database Id: mynewdb; Rid: ltpJAA==
Total databases: 2
데이터베이스를 삭제하면 마지막에 DocumentDB 계정에 두 개의 데이터베이스 만 남는 것을 볼 수 있습니다.