인덱스가 포함된 테이블 생성 및 문서 삽입 - Amazon Quantum Ledger Database(QLDB)

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

인덱스가 포함된 테이블 생성 및 문서 삽입

Amazon QLDB 원장을 생성한 후 첫 번째 단계는 기본 CREATE TABLE 명령문이 포함된 테이블을 생성하는 것입니다. 테이블은 Amazon Ion struct의 데이터 세트인 QLDB 문서로 구성됩니다.

테이블 및 인덱스 생성

테이블은 네임스페이스 없이 대소문자를 구분하는 간단한 이름을 사용합니다. QLDB는 개방형 콘텐츠를 지원하며 스키마를 적용하지 않으므로 테이블을 만들 때 속성이나 데이터 유형을 정의하지 않습니다.

CREATE TABLE VehicleRegistration
CREATE TABLE Vehicle

CREATE TABLE 명령문은 새 테이블의 시스템 할당 ID를 반환합니다. QLDB의 모든 시스템 할당 ID는 Base62로 인코딩된 문자열로 각각 표시되는 범용 고유 식별자(UUID)입니다.

참고

테이블을 생성하는 동안 선택적으로 테이블 리소스의 태그를 정의할 수 있습니다. 자세한 방법은 테이블 생성 시 태그 지정 섹션을 참조하세요.

테이블에 인덱스를 생성하여 쿼리 성능을 최적화할 수도 있습니다.

CREATE INDEX ON VehicleRegistration (VIN)
CREATE INDEX ON VehicleRegistration (LicensePlateNumber)
CREATE INDEX ON Vehicle (VIN)
중요

QLDB는 문서를 효율적으로 조회하기 위한 인덱스가 필요합니다. 인덱스가 없으면 QLDB는 문서를 읽을 때 전체 테이블 스캔을 수행해야 합니다. 이로 인해 동시성 충돌 및 트랜잭션 시간 초과를 포함하여 대규모 테이블에서 성능 문제가 발생할 수 있습니다.

인덱싱된 필드 또는 문서 ID(예: = 또는 IN)에서 동등 연산자를 사용하여 WHERE 조건자 절이 포함된 문을 실행하는 것이 좋습니다. 자세한 내용은 쿼리 성능 최적화을 참조하십시오.

인덱스를 생성할 때는 다음 제약 조건에 유의하세요.

  • 인덱스는 단일 최상위 필드에만 생성할 수 있습니다. 복합, 중첩, 고유 및 함수 기반 인덱스는 지원되지 않습니다.

  • liststruct를 비롯한 모든 Ion 데이터 유형에 대해 인덱스를 생성할 수 있습니다. 그러나 Ion 유형에 관계없이 전체 Ion 값이 같아야만 인덱스 조회를 수행할 수 있습니다. 예를 들어 list 형식을 인덱스로 사용하는 경우 목록 내에서 한 항목씩 인덱스 검색을 수행할 수 없습니다.

  • 동등 조건자(예: WHERE indexedField = 123 또는 WHERE indexedField IN (456, 789))를 사용할 때만 쿼리 성능이 향상됩니다.

    QLDB는 쿼리 조건자의 부등을 인정하지 않습니다. 따라서 범위 필터링된 스캔은 구현되지 않습니다.

  • 인덱싱된 필드 이름은 대소문자를 구분하며 최대 128자입니다.

  • QLDB에서의 인덱스 생성은 비동기적으로 이루어집니다. 비어 있지 않은 테이블에서 인덱스 빌드를 완료하는 데 걸리는 시간은 테이블 크기에 따라 다릅니다. 자세한 내용은 인덱스 관리을 참조하십시오.

문서 삽입하기

그러면 테이블에 문서를 삽입할 수 있습니다. QLDB 문서는 Amazon Ion 형식으로 저장됩니다. 다음 PartiQL INSERT 명령문에는 Amazon QLDB 콘솔 시작하기에서 사용된 차량 등록 샘플 데이터의 하위 집합이 포함됩니다.

INSERT INTO VehicleRegistration << { 'VIN' : '1N4AL11D75C109151', 'LicensePlateNumber' : 'LEWISR261LL', 'State' : 'WA', 'City' : 'Seattle', 'PendingPenaltyTicketAmount' : 90.25, 'ValidFromDate' : `2017-08-21T`, 'ValidToDate' : `2020-05-11T`, 'Owners' : { 'PrimaryOwner' : { 'PersonId' : '294jJ3YUoH1IEEm8GSabOs' }, 'SecondaryOwners' : [ { 'PersonId' : '5Ufgdlnj06gF5CWcOIu64s' } ] } }, { 'VIN' : 'KM8SRDHF6EU074761', 'LicensePlateNumber' : 'CA762X', 'State' : 'WA', 'City' : 'Kent', 'PendingPenaltyTicketAmount' : 130.75, 'ValidFromDate' : `2017-09-14T`, 'ValidToDate' : `2020-06-25T`, 'Owners' : { 'PrimaryOwner' : { 'PersonId': 'IN7MvYtUjkp1GMZu0F6CG9' }, 'SecondaryOwners' : [] } } >>
INSERT INTO Vehicle << { 'VIN' : '1N4AL11D75C109151', 'Type' : 'Sedan', 'Year' : 2011, 'Make' : 'Audi', 'Model' : 'A5', 'Color' : 'Silver' } , { 'VIN' : 'KM8SRDHF6EU074761', 'Type' : 'Sedan', 'Year' : 2015, 'Make' : 'Tesla', 'Model' : 'Model S', 'Color' : 'Blue' } >>
PartiQL 구문 및 시맨틱
  • 필드 이름은 작은 따옴표로 묶습니다('...').

  • 문자열 값도 작은 따옴표로 묶습니다('...').

  • 타임스탬프는 백틱으로 묶습니다(`...`). 백틱은 모든 Ion 리터럴을 나타내는 데 사용할 수 있습니다.

  • 정수와 소수는 표시할 필요가 없는 리터럴 값입니다.

PartiQL의 구문 및 시맨틱에 대한 자세한 내용은 Amazon QLDB에서 PartiQL을 사용한 Ion 쿼리 섹션을 참조하세요.

INSERT 명령문은 버전 번호가 0인 문서의 초기 개정을 생성합니다. 각 문서를 고유하게 식별하기 위해 QLDB는 문서 ID를 메타데이터의 일부로 할당합니다. Insert 문은 삽입된 각 문서의 ID를 반환합니다.

중요

QLDB는 스키마를 적용하지 않으므로 동일한 문서를 테이블에 여러 번 삽입할 수 있습니다. 각 Insert 명령문은 저널에 별도의 문서 항목을 커밋하고 QLDB는 각 문서에 고유한 ID를 할당합니다.

테이블에 삽입한 문서를 쿼리하는 방법을 알아보려면 데이터 쿼리로 이동합니다.