테이블 서비스는 무엇인가요?

정확한 명칭은 테이블 스토리지 서비스이며 데이터 저장소를 제공해주는 서비스 입니다.

테이블에 Entity를 저장하여 여러 서버에 나누어 파티셔닝(Partitioning) 처리를 해 주는 메커니즘을 가지고 있으며

단순 로그 기록, 세션 처리나 사용자 인증 데이터 처리에 적합한 저장소 입니다.

물론 관계 형 데이터의 처리가 필요한 경우에는 조인 처리나 트랜잭션 처리가 가능한 클라우드 RDBMS

SQL Azure 를 이용해야 합니다.

 

6-1.png

 

테이블 구조는 하나의 행(Row)를 가지고 있는 엔터티(Entity)로 구성되어 있고 엔터티는 여러

속성(Properties)를 포함하고 있습니다.

기본적으로 엔터티는 PartitionKey, RowKey, TimeStamp 세 가지의 속성을 가지고 있습니다.

프로퍼티 명(Property Name)

설명

파티션 키(PartitionKey)

테이블 파티션 분할 구분 키 (파티셔닝)

로우 키(RowKey)

엔터티에 고유한 키( 유일값)

타임스태프(Timestamp)

엔터티가 생성된 시각(읽기 전용)

 

해당 속성들은 Entity의 각 기본 속성이며 고정 스키마 이므로 테이블에서 제거 될 수 없습니다.

다음은 프로퍼티 타입의 종류 입니다.

프로퍼티 타입

설명

Int

32비트 정수형

Int64

64비트 정수형

String

UTF-16 인코딩 형식, 최대 크기 64KB

Binary

최대 64KB 크기의 배열

Bool

부울 값 (TRUE/FALSE)

DateTime

64비트 형식의 UTC (Universal Time)

1610 1 1 ~ 9999 12 31일 날짜 범위

Double

64비트 부동 소수점 값

GUID

128비트 unique identifer

Azure SDK 를 설치하면 로컬 스토리지 시뮬레이터가 제공되므로 시뮬레이터를 이용하여 개발

및 테스트를 완료 후 Azure 포털에 스토리지 연결 문자열을 변경하여 배포할 수 있습니다.

 

테이블 서비스의 구조와 추가적인 정보는 아래 링크를 참고하시기 바랍니다.

http://msdn.microsoft.com/ko-kr/library/ee405490.aspx

로컬 스토리지 시뮬레이터와 Azure 스토리지 서비스 차이점

http://msdn.microsoft.com/en-us/library/gg433135.aspx

 

지난 시간에는 간략하게 Azure Storage Explorer 를 이용해서 테이블을 만들어 보았습니다.

 

Azure 에서는 StorageClient 라이브러리를 제공하여 스토리지 기능 구현에 필요한

클래스를 제공해 주고 있습니다.

http://msdn.microsoft.com/en-us/library/ee741723.aspx

 

이번에는 C#으로 코드를 작성하여 테이블을 생성해 보도록 하겠습니다.

만들 Student 테이블의 구조는 다음과 같습니다.

Student 테이블

프로퍼티 명

프로터피 타입

설명

userid

String

학생아이디

name

String

학생이름

telno

String

전화번호

age

int

나이

 

1. 관리자 권한 실행으로 Visual Studio 2008, 2010을 실행합니다.

 

2. Window Azure 프로젝트에서 Web Role 모델 형식의 ASP.NET 웹 역할 프로젝트를 생성합니다.

6-2.png  

 

3. 스토리지 기능에 해당하는 클래스를 사용하기 위해 관련 네임스페이스를 참조합니다.

6-3.png 

 

4. 테이블 엔터티에 해당되는 TableServiceEntry 클래스를 상속 받는 클래스를 생성 합니다.

[StudentServiceContext.cs]

using Microsoft.WindowsAzure.StorageClient;

 

namespace WebRole1

{

    public class StudentModel : TableServiceEntity

    {

        public string userid { get; set; }

        public string name { get; set; }

        public string telno { get; set; }

        public int age { get; set; }

    }

}

 

 

5. ADO.NET Data 서비스를 이용하여 엔터티에 대한 작업을 처리하려면 Context 개체를 생성해야 하며 TableServiceContext 클래스를 상속받는 클래스를 생성 합니다.

[StudentServiceContext.cs]

using System.Linq;

using Microsoft.WindowsAzure;

using Microsoft.WindowsAzure.StorageClient;

 

namespace WebRole1

{

    public class StudentServiceContext : TableServiceContext

    {

        public static readonly string TableName = "Student";

 

        public StudentServiceContext(string baseAddress, StorageCredentials credentials)

            : base(baseAddress, credentials)

        {

        }

 

        public IQueryable<StudentModel> StudentTable

        {

            get

            {

                return this.CreateQuery<StudentModel>(TableName);

            }

        }

    }

}

 

 

6. Default.aspx 에서 간단하게 테이블 생성 버튼을 추가 합니다.

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebRole1.Create" %>

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

 

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

    <title></title>

</head>

<body>

    <form id="form1" runat="server">

    <div>

   

        <asp:Button ID="BtnCreateTable" runat="server" onclick="BtnCreateTable_Click"

            Text="테이블생성" />

   

    </div>

</form>

</body>

</html>

 

 

7. Default.aspx.cs 에서 다음 코드를 구현합니다.

디자인 모드에서 테이블 생성 버튼을 추가한 다음 이벤트 핸들러 에서 처리하는 부분입니다.

using System;

 

namespace WebRole1

{

using System;

using System.Linq;

using Microsoft.WindowsAzure;

using Microsoft.WindowsAzure.ServiceRuntime;

using Microsoft.WindowsAzure.StorageClient;

using System.Data.Services.Client;

 

namespace WebRole1

{

    public partial class Create : System.Web.UI.Page

    {

        private StudentServiceContext ServiceContext = null;

        private CloudStorageAccount StorageAccount = null;

 

        protected void Page_Load(object sender, EventArgs e)

        {

            StorageAccount = CloudStorageAccount.Parse(RoleEnvironment.GetConfigurationSettingValue("DataConnectionString"));

            ServiceContext = new StudentServiceContext(StorageAccount.TableEndpoint.ToString(), StorageAccount.Credentials);

        }

 

        protected void BtnCreateTable_Click(object sender, EventArgs e)

        {

            if (StorageAccount.CreateCloudTableClient().CreateTableIfNotExist(StudentServiceContext.TableName))

            {

                Response.Write("Created Table!");

            }

        }

 }

}

 

 

8. 소스를 컴파일하고 실행한 후 테이블 생성 버튼을 클릭합니다.

6-4.png

 

9. 간단하게 Azure Storage Exploer 에서 확인해 보면 생성 된 테이블이 표시 됩니다.

6-5.png

 

 

 

Azure - 클라우드 컴퓨팅 - 시리즈 강좌 리스트
[Azure강좌] 1. 클라우드와 원도우 애저 소개
[Azure강좌] 2. SDK 설치와 Azure 무료 신청
[Azure강좌] 3. ASP.NET(Web Role) Hello World
[Azure강좌] 4. 프로젝트 패키지 Azure 배포
[Azure강좌] 5. Windows Azure Storage 서비스와 계정 설정
[Azure강좌] 6. 테이블 서비스와 StorageClient 라이브러리 #1
[Azure강좌] 7. SQL Azure 소개와 서버 구성
[Azure강좌] 8. 데이터베이스 생성과 SSMS 사용
[Azure강좌] 9. SQL Azure 마이그레이션 위자드 사용하기
[Azure강좌] 10. SQL Azure 방화벽 설정
[Azure강좌] 11. SQL Azure Manage 툴 사용해 보기
[Azure강좌] 12. 테이블 서비스와 StorageClient 라이브러리 #2
[Azure강좌] 13. SQL Azure ASP.NET GridView 바인딩
[Azure강좌] 14. Blob 서비스와 Container
[Azure강좌] 15. Blob 리스트 조회, 업로드 다운로드 예제
[Azure강좌] 16. 웹사이트 콘텐트 Blob 스토리지 이용
[Azure강좌] 17. Windows Azure CDN 설정
[Azure강좌] 18. Queue 서비스와 생성, 삭제, 메타데이터 추가
[Azure강좌] 19. Queue 의 메시지 피킹 및 가져오기, 추가, 삭제
[Azure강좌] 20. [Tip] SQL Azure 방화벽 룰 설정 예제 애플리케이션

 

 

Azure - 클라우드 컴퓨팅 - 동영상 참고 자료

[Azure 동영상 강좌] 1. 클라우드와 원도우 애저 소개 (애저 포털 둘러보기) 

[Azure 동영상 강좌] 2. SDK 설치와 Azure 무료 신청
[Azure 동영상 강좌] 3. ASP.NET(Web Role) Hello World
[Azure 동영상 강좌] 4. 프로젝트 패키지 Azure 배포
[Azure 동영상 강좌] 5. Windows Azure Storage 서비스와 계정 설정
[Azure 동영상 강좌] 6. 테이블 서비스와 StorageClient 라이브러리 #1
[Azure 동영상 강좌] 7. SQL Azure 소개와 서버 구성
[Azure 동영상 강좌] 8. 데이터베이스 생성과 SSMS 사용
[Azure 동영상 강좌] 9. SQL Azure 마이그레이션 위자드 사용하기
[Azure 동영상 강좌] 10. SQL Azure 방화벽 설정
[Azure 동영상 강좌] 11. SQL Azure Manage 툴 사용해 보기
[Azure 동영상 강좌] 12. 테이블 서비스와 StorageClient 라이브러리 #2
[Azure 동영상 강좌] 13. SQL Azure ASP.NET GridView 바인딩
[Azure 동영상 강좌] 14. Blob 서비스와 Container
[Azure 동영상 강좌] 15. Blob 리스트 조회, 업로드 다운로드 예제
[Azure 동영상 강좌] 16. 웹사이트 콘텐트 Blob 스토리지 이용
[Azure 동영상 강좌] 17. Windows Azure CDN 설정
[Azure 동영상 강좌] 18. Queue 서비스와 생성, 삭제, 메타데이터 추가
[Azure 동영상 강좌] 19. Queue 의 메시지 피킹 및 가져오기, 추가, 삭제
[Azure 동영상 강좌] 20. [Tip] SQL Azure 방화벽 룰 설정 예제 애플리케이션





profile

안녕하세요. 이호엽 입니다!

ASP.NET 프론티어 

블로그: algorizm.tistory.com