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 계정에 두 개의 데이터베이스 만 남는 것을 볼 수 있습니다.