Table service 데이터 모델 이해Understanding the Table service data model

테이블 서비스는 테이블 형식으로 구조적 저장소를 제공합니다.The Table service offers structured storage in the form of tables. 다음 섹션에서는 테이블 서비스 데이터 모델을 개괄적으로 설명합니다.The following sections outline the Table service data model.

스토리지 계정Storage Account

저장소 계정은 저장소 시스템 내에 있는 전역적으로 고유한 엔터티입니다.A storage account is a globally unique entity within the storage system. 저장소 계정은 Table service에 대 한 부모 네임 스페이스 이며 권한 부여의 기반이 됩니다.The storage account is the parent namespace for the Table service, and is the basis for authorization. 각 테이블에 고유한 이름을 지정하는 한 특정 저장소 계정 내에 테이블을 원하는 수만큼 만들 수 있습니다.You can create any number of tables within a given storage account, as long as each table is uniquely named.

저장소 계정을 항상 요청 URI에 지정해야 합니다.The storage account must always be specified in the request URI. 테이블 서비스에 액세스하기 위한 기본 URI는 다음과 같습니다.The base URI for accessing the Table service is as follows:

https://myaccount.table.core.windows.net  

테이블, 엔터티 및 속성Tables, Entities, and Properties

테이블에는 데이터가 엔터티 모음으로 저장됩니다.Tables store data as collections of entities. 엔터티는 행과 비슷합니다.Entities are similar to rows. 엔터티에는 기본 키와 속성 집합이 있습니다.An entity has a primary key and a set of properties. 속성은 이름-형식화된 값 쌍으로, 열과 비슷합니다.A property is a name, typed-value pair, similar to a column.

테이블 서비스는 테이블에 스키마를 적용하지 않으므로 동일한 테이블에 있는 두 엔터티의 속성 집합이 서로 다를 수 있습니다.The Table service does not enforce any schema for tables, so two entities in the same table may have different sets of properties. 개발자는 클라이언트 쪽에서 스키마를 적용할 수 있습니다.Developers may choose to enforce a schema on the client side. 테이블에는 엔터티를 원하는 수만큼 포함할 수 있습니다.A table may contain any number of entities.

테이블 이름Table Names

테이블 이름은 다음 규칙을 따라야 합니다.Table names must conform to these rules:

  • 테이블 이름은 계정 내에서 고유해야 합니다.Table names must be unique within an account.

  • 테이블 이름에는 영숫자 문자만 포함할 수 있습니다.Table names may contain only alphanumeric characters.

  • 테이블 이름은 숫자 문자로 시작할 수 없습니다.Table names cannot begin with a numeric character.

  • 테이블 이름은 대/소문자를 구분하지 않습니다.Table names are case-insensitive.

  • 테이블 이름은 3에서 63자여야 합니다.Table names must be from 3 to 63 characters long.

  • "tables"를 비롯한 일부 테이블 이름은 예약되어 있습니다.Some table names are reserved, including "tables". 예약된 테이블 이름을 사용하여 테이블을 만들려고 하면 오류 코드 404(잘못된 요청)가 반환됩니다.Attempting to create a table with a reserved table name returns error code 404 (Bad Request).

이러한 규칙은 정규식 "^ [A-Za-z] [a-za-z0-9] $"에도 설명 되어 있습니다 {2,62} .These rules are also described by the regular expression "^[A-Za-z][A-Za-z0-9]{2,62}$".

테이블 이름의 대/소문자는 만들어진 상태로 유지되지만 사용 시에는 대/소문자가 구분되지 않습니다.Table names preserve the case with which they were created, but are case-insensitive when used.

속성 이름Property Names

속성 이름은 대/소문자를 구분하며 255자까지 허용됩니다.Property names are case-sensitive strings up to 255 characters in size. 속성 이름은 c # 식별자에 대 한 명명 규칙을 따라야 합니다.Property names should follow naming rules for C# identifiers.

참고

일부 c # 식별자는 XML 사양에 따라 유효 하지 않습니다.Some C# identifiers are not valid according to the XML specification. 속성 이름은 테이블 서비스에 대한 요청에서 XML 페이로드를 통해 전송되기 때문에 이러한 식별자를 속성 이름에 사용하면 안 됩니다.These identifiers may not be used in property names, because property names are sent via an XML payload in a request against the Table service.

중요

속성 이름은 URL을 통해 테이블 서비스로 전달됩니다.Property names are passed to the Table service within a URL. 특정 문자는 UTF-8(기본) 또는 MBCS를 사용하여 퍼센트 인코딩되어야 URL에 표시될 수 있습니다.Certain characters must be percent-encoded to appear in a URL, using UTF-8 (preferred) or MBCS. 이 인코딩은 Azure Storage 클라이언트 라이브러리를 사용 하는 경우 자동으로 발생 합니다.This encoding occurs automatically when you use the Azure Storage client libraries. 그러나 인코딩해도 URL 경로에 적합하지 않은 문자가 있습니다.However, there are certain characters that are not valid in URL paths even when encoded. 이러한 문자는 속성 이름에 표시될 수 없습니다.These characters cannot appear in property names. \uE000과 같은 코드 포인트는 NTFS 파일 이름에는 적합하지만 유효한 유니코드 문자가 아니므로 사용할 수 없습니다.Code points like \uE000, while valid in NTFS filenames, are not valid Unicode characters, so they cannot be used. 제어 문자(0x00-0x1F, \u0081 등)와 같은 일부 ASCII 또는 유니코드 문자도 허용되지 않습니다.In addition, some ASCII or Unicode characters, like control characters (0x00 to 0x1F, \u0081, etc.), are also not allowed. HTTP/1.1에서 유니코드 문자열에 적용되는 규칙은 다음을 참조하세요.For rules governing Unicode strings in HTTP/1.1 see:

참고

2009-04-14 버전부터 테이블 서비스에서 속성 이름에 더 이상 대시(-) 문자를 포함할 수 없습니다.Beginning with version 2009-04-14, the Table service no longer supports including the dash (-) character in property names.

속성 제한 사항Property Limitations

다음 섹션에 설명된 3개의 시스템 속성을 포함하여 최대 255개의 속성을 엔터티에 포함할 수 있습니다.An entity can have up to 255 properties, including 3 system properties described in the following section. 따라서 사용자는 3개의 시스템 속성을 제외하고 252개의 사용자 지정 속성을 포함할 수 있습니다.Therefore, the user may include up to 252 custom properties, in addition to the 3 system properties. 엔터티의 속성에 있는 모든 데이터의 결합 된 크기는 1 MiB를 초과할 수 없습니다.The combined size of all data in an entity's properties cannot exceed 1 MiB.

시스템 속성System Properties

엔터티에는 항상 다음 시스템 속성이 있습니다.An entity always has the following system properties:

  • PartitionKey 속성PartitionKey property

  • RowKey 속성RowKey property

  • Timestamp 속성Timestamp property

이러한 시스템 속성은 테이블의 모든 엔터티에 자동으로 포함됩니다.These system properties are automatically included for every entity in a table. 이러한 속성의 이름은 예약되어 있으며 변경할 수 없습니다.The names of these properties are reserved and cannot be changed. PartitionKeyRowKey의 값은 개발자가 삽입하고 업데이트해야 하며,The developer is responsible for inserting and updating the values of PartitionKey and RowKey. 수정할 수 없는 Timestamp의 값은 서버에서 관리됩니다.The server manages the value of Timestamp, which cannot be modified.

키 필드에서 허용되지 않는 문자Characters Disallowed in Key Fields

다음 문자는 PartitionKeyRowKey 속성의 값에 사용할 수 없습니다.The following characters are not allowed in values for the PartitionKey and RowKey properties:

  • 슬래시(/) 문자The forward slash (/) character

  • 백슬래시 ( \ ) 문자The backslash (\) character

  • 숫자 기호(#) 문자The number sign (#) character

  • 물음표(?) 문자The question mark (?) character

  • 다음을 포함한 U+0000에서 U+001F까지의 제어 문자:Control characters from U+0000 to U+001F, including:

    • 가로 탭(\t) 문자The horizontal tab (\t) character
    • 줄 바꿈(\n) 문자The linefeed (\n) character
    • 캐리지 리턴(\r) 문자The carriage return (\r) character
  • U+007F에서 U+009F까지의 제어 문자Control characters from U+007F to U+009F

PartitionKey 속성PartitionKey Property

테이블은 저장소 노드에서 부하 분산을 지원하기 위해 분할으로 분할됩니다.Tables are partitioned to support load balancing across storage nodes. 테이블의 엔터티는 분할별로 구성됩니다.A table's entities are organized by partition. 분할은 동일한 분할 키 값을 가지는 일련의 엔터티입니다.A partition is a consecutive range of entities possessing the same partition key value. 분할 키는 PartitionKey 속성으로 지정되며, 특정 테이블 내에서 분할에 대한 고유 식별자로 사용됩니다.The partition key is a unique identifier for the partition within a given table, specified by the PartitionKey property. 분할 키는 엔터티 기본 키의 첫 번째 부분을 구성합니다.The partition key forms the first part of an entity's primary key. 파티션 키는 최대 1 KiB 크기의 문자열 값일 수 있습니다.The partition key may be a string value up to 1 KiB in size.

모든 삽입, 업데이트 및 삭제 작업에 PartitionKey 속성이 포함되어야 합니다.You must include the PartitionKey property in every insert, update, and delete operation.

RowKey 속성RowKey Property

기본 키의 두 번째 부분은 RowKey 속성으로 지정되는 행 키입니다.The second part of the primary key is the row key, specified by the RowKey property. 행 키는 주어진 파티션 내 엔터티의 고유 식별자입니다.The row key is a unique identifier for an entity within a given partition. PartitionKeyRowKey는 함께 테이블 내의 모든 엔터티를 고유하게 식별합니다.Together the PartitionKey and RowKey uniquely identify every entity within a table.

행 키는 크기가 최대 1 KiB 수 있는 문자열 값입니다.The row key is a string value that may be up to 1 KiB in size.

모든 삽입, 업데이트 및 삭제 작업에 RowKey 속성이 포함되어야 합니다.You must include the RowKey property in every insert, update, and delete operation.

Timestamp 속성Timestamp Property

Timestamp 속성은 엔터티가 마지막으로 수정된 시간을 기록하기 위해 서버 쪽에서 유지 관리되는 DateTime 값입니다.The Timestamp property is a DateTime value that is maintained on the server side to record the time an entity was last modified. 테이블 서비스는 Timestamp 속성을 사용하여 내부적으로 낙관적 동시성을 제공합니다.The Table service uses the Timestamp property internally to provide optimistic concurrency. 엔터티에 Timestamp 대 한 속성 값은 엔터티가 수정 될 때마다 이동 합니다.The value of the Timestamp property for an entity advances each time the entity is modified. 이 속성은 삽입 또는 업데이트 작업에 대해서는 설정되지 않아야 합니다. 값이 무시됩니다.This property should not be set on insert or update operations (the value will be ignored).

Timestamp속성은 허용 되는 ISO 8601 UTC 형식 중 하나로 표시 되어야 합니다.The Timestamp property must be expressed in one of the accepted ISO 8601 UTC formats. 허용 되는 UTC 형식에 대 한 자세한 내용은 DateTime 값 서식 지정을 참조 하세요.For more information about accepted UTC formats, see Formatting DateTime values.

속성 형식Property Types

Table service는 OData 프로토콜 사양에 정의 된 데이터 형식의 하위 집합을 지원 합니다.The Table service supports a subset of data types defined by the OData Protocol Specification. 다음 표에서는 테이블 서비스에 대해 지원되는 속성 유형을 보여 줍니다.The following table shows the supported property types for the Table service:

OData 데이터 형식OData Data Type 공용 언어 런타임 유형Common Language Runtime type 세부 정보Details
Edm.Binary byte[] 크기가 64 KiB 바이트 배열입니다.An array of bytes up to 64 KiB in size.
Edm.Boolean bool 부울 값입니다.A Boolean value.
Edm.DateTime DateTime UTC(협정 세계시)로 표현되는 64비트 값입니다.A 64-bit value expressed as Coordinated Universal Time (UTC). 지원되는 DateTime 범위는 서기 1601년 1월 1일 자정(UTC)에The supported DateTime range begins from 12:00 midnight, January 1, 1601 A.D. (서기), UTC입니다.(C.E.), UTC. 범위는 9999년 12월 31일에 끝납니다.The range ends at December 31, 9999. 자세한 내용은 DateTime 값 서식 지정을 참조 하세요.For more information, see Formatting DateTime values.
Edm.Double double 64비트 부동 소수점 값입니다.A 64-bit floating point value.
Edm.Guid Guid 전역적으로 고유한 128 비트 식별자입니다.A 128-bit globally unique identifier.
Edm.Int32 Int32 또는 intInt32 or int 32비트 정수입니다.A 32-bit integer.
Edm.Int64 Int64 또는 longInt64 or long 64비트 정수입니다.A 64-bit integer.
Edm.String String UTF-16으로 인코딩된 값입니다.A UTF-16-encoded value. 문자열 값의 최대 크기는 64 KiB 수 있습니다.String values may be up to 64 KiB in size. 지원 되는 최대 문자 수는 약 32 K이 하입니다.Note that the maximum number of characters supported is about 32 K or less.

유형을 지정하지 않으면 기본적으로 속성이 String 유형으로 만들어집니다.By default a property is created as type String, unless you specify a different type. 속성을 명시적으로 입력 하려면 엔터티 삽입 또는 엔터티 업데이트 작업에 적절 한 OData 데이터 형식을 사용 하 여 해당 데이터 형식을 지정 합니다.To explicitly type a property, specify its data type by using the appropriate OData data type for an Insert Entity or Update Entity operation. 자세한 내용은 엔터티 삽입 및 업데이트를 참조 하세요.For more information, see Inserting and Updating Entities.

Table service는 null 속성 값을 유지 하지 않습니다.The Table service does not persist null values for properties. 엔터티를 쿼리 하는 경우 위의 속성 형식은 모두 null을 허용 하지 않습니다.When querying entities, the above property types are all non-nullable. 엔터티를 작성할 때 위의 속성 형식은 모두 null을 허용 하며, 값이 인 모든 속성 null 은 페이로드에 해당 속성이 포함 되지 않은 것 처럼 처리 됩니다.When writing entities, the above property types are all nullable, and any property with a null value is handled as if the payload did not contain that property.

쿼리 요청 URI에서 다양 한 속성 유형을 필터링 하는 방법을 보여 주는 예제는 테이블 및 엔터티 쿼리를 참조 하세요.For examples that show how to filter on the various property types in a query request URI, see Querying Tables and Entities.

참고 항목See Also