2단계: 원장에 테이블, 인덱스 및 샘플 데이터 생성 - Amazon Quantum 원장 데이터베이스(Amazon QLDB)

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

2단계: 원장에 테이블, 인덱스 및 샘플 데이터 생성

중요

지원 종료 알림: 기존 고객은 07/31/2025에 지원이 종료될 QLDB 때까지 Amazon을 사용할 수 있습니다. 자세한 내용은 Amazon QLDB 원장을 Amazon Aurora Postgre로 마이그레이션을SQL 참조하세요.

Amazon QLDB 원장이 활성화되면 차량, 차량 소유자 및 차량 등록 정보에 대한 데이터 테이블 생성을 시작할 수 있습니다. 테이블과 인덱스를 생성한 후 데이터를 로드할 수 있습니다.

이 단계에서는 vehicle-registration 원장에 4개의 테이블을 생성합니다.

  • VehicleRegistration

  • Vehicle

  • Person

  • DriversLicense

또한 다음과 같은 인덱스를 생성합니다.

테이블 이름 필드
VehicleRegistration VIN
VehicleRegistration LicensePlateNumber
Vehicle VIN
Person GovId
DriversLicense LicensePlateNumber
DriversLicense PersonId

QLDB 콘솔을 사용하여 인덱스를 사용하여 이러한 테이블을 자동으로 생성하고 샘플 데이터와 함께 로드할 수 있습니다. 또는 콘솔의 PartiQL 편집기를 사용하여 각 PartiQL 문을 수동으로 실행할 수 있습니다 step-by-step.

테이블, 인덱스 및 샘플 데이터를 생성하려면
  1. https://console.aws.amazon.com/qldb 에서 Amazon QLDB 콘솔을 엽니다.

  2. 탐색 창에서 시작하기를 선택합니다.

  3. 샘플 애플리케이션 데이터 카드의 자동 옵션 아래 원장 목록에서 vehicle-registration을 선택합니다.

  4. 샘플 데이터 로드를 선택합니다.

    작업이 성공적으로 완료되면 콘솔에 샘플 데이터가 로드되었다는 메시지가 표시됩니다.

    이 스크립트는 단일 트랜잭션에서 모든 명령문을 실행합니다. 트랜잭션의 일부가 실패하면 모든 명령문이 롤백되고 적절한 오류 메시지가 표시됩니다. 문제를 해결한 후 작업을 재시도할 수 있습니다.

    참고
    • 트랜잭션 실패의 한 가지 가능한 원인은 중복 테이블을 만들려고 시도하는 것입니다. 원장에 VehicleRegistration, Vehicle, Person, DriversLicense 등의 테이블 이름이 이미 있는 경우 샘플 데이터 로드 요청이 실패합니다.

      대신 이 샘플 데이터를 빈 원장에 로드해 보세요.

    • 이 스크립트는 파라미터화된 INSERT 문을 실행합니다. 따라서 이러한 PartiQL 문은 리터럴 데이터 대신 바인드 파라미터를 사용하여 저널 블록에 기록됩니다. 예를 들어, 저널 블록에서 다음 명령문을 볼 수 있는데, 여기서 물음표(?)는 문서 콘텐츠의 변수 자리 표시자입니다.

      INSERT INTO Vehicle ?

PrimaryOwner 필드가 비어 있는 VehicleRegistration에 문서를 삽입하고, PersonId 필드가 비어 있는 DriversLicense에 문서를 삽입합니다. 나중에 이 필드를 Person 테이블의 시스템 할당 문서 id로 채웁니다.

작은 정보

가장 좋은 방법은 이 문서 id 메타데이터 필드를 외부 키로 사용하는 것입니다. 자세한 내용은 문서 메타데이터 쿼리을 참조하세요.

테이블, 인덱스 및 샘플 데이터를 생성하려면
  1. https://console.aws.amazon.com/qldb 에서 Amazon QLDB 콘솔을 엽니다.

  2. 탐색 창에서 PartiQL 편집기를 선택합니다.

  3. vehicle-registration 원장을 선택합니다.

  4. 먼저 테이블 네 개를 생성합니다. QLDB 는 열려 있는 콘텐츠를 지원하며 스키마를 적용하지 않으므로 속성 또는 데이터 유형을 지정하지 않습니다.

    쿼리 편집기 창에서 다음 문을 입력한 후 실행을 선택합니다. 명령문을 실행하려면 키보드 단축키(Windows의 경우 Ctrl+Enter, macOS의 경우 Cmd+Return)를 사용할 수도 있습니다. 키보드 단축키에 대한 자세한 내용은 PartiQL 편집기 키보드 바로 가기 섹션을 참조하세요.

    CREATE TABLE VehicleRegistration

    다음 각 작업에 대해 이 단계를 반복합니다.

    CREATE TABLE Vehicle
    CREATE TABLE Person
    CREATE TABLE DriversLicense
  5. 그런 다음 각 테이블의 쿼리 성능을 최적화하는 인덱스를 생성합니다.

    중요

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

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

    쿼리 편집기 창에서 다음 문을 입력한 후 실행을 선택합니다.

    CREATE INDEX ON VehicleRegistration (VIN)

    다음에 대해 이 단계를 반복합니다.

    CREATE INDEX ON VehicleRegistration (LicensePlateNumber)
    CREATE INDEX ON Vehicle (VIN)
    CREATE INDEX ON Person (GovId)
    CREATE INDEX ON DriversLicense (LicensePlateNumber)
    CREATE INDEX ON DriversLicense (PersonId)
  6. 인덱스를 생성한 후 테이블에 데이터 로드를 시작할 수 있습니다. 이 단계에서는 원장이 추적하는 차량 소유자에 대한 개인 정보가 포함된 문서를 Person 테이블에 삽입합니다.

    쿼리 편집기 창에서 다음 문을 입력한 후 실행을 선택합니다.

    INSERT INTO Person << { 'FirstName' : 'Raul', 'LastName' : 'Lewis', 'DOB' : `1963-08-19T`, 'GovId' : 'LEWISR261LL', 'GovIdType' : 'Driver License', 'Address' : '1719 University Street, Seattle, WA, 98109' }, { 'FirstName' : 'Brent', 'LastName' : 'Logan', 'DOB' : `1967-07-03T`, 'GovId' : 'LOGANB486CG', 'GovIdType' : 'Driver License', 'Address' : '43 Stockert Hollow Road, Everett, WA, 98203' }, { 'FirstName' : 'Alexis', 'LastName' : 'Pena', 'DOB' : `1974-02-10T`, 'GovId' : '744 849 301', 'GovIdType' : 'SSN', 'Address' : '4058 Melrose Street, Spokane Valley, WA, 99206' }, { 'FirstName' : 'Melvin', 'LastName' : 'Parker', 'DOB' : `1976-05-22T`, 'GovId' : 'P626-168-229-765', 'GovIdType' : 'Passport', 'Address' : '4362 Ryder Avenue, Seattle, WA, 98101' }, { 'FirstName' : 'Salvatore', 'LastName' : 'Spencer', 'DOB' : `1997-11-15T`, 'GovId' : 'S152-780-97-415-0', 'GovIdType' : 'Passport', 'Address' : '4450 Honeysuckle Lane, Seattle, WA, 98101' } >>
  7. 그런 다음 각 차량 소유자의 운전 면허 정보가 포함된 문서로 DriversLicense 테이블을 채우세요.

    쿼리 편집기 창에서 다음 문을 입력한 후 실행을 선택합니다.

    INSERT INTO DriversLicense << { 'LicensePlateNumber' : 'LEWISR261LL', 'LicenseType' : 'Learner', 'ValidFromDate' : `2016-12-20T`, 'ValidToDate' : `2020-11-15T`, 'PersonId' : '' }, { 'LicensePlateNumber' : 'LOGANB486CG', 'LicenseType' : 'Probationary', 'ValidFromDate' : `2016-04-06T`, 'ValidToDate' : `2020-11-15T`, 'PersonId' : '' }, { 'LicensePlateNumber' : '744 849 301', 'LicenseType' : 'Full', 'ValidFromDate' : `2017-12-06T`, 'ValidToDate' : `2022-10-15T`, 'PersonId' : '' }, { 'LicensePlateNumber' : 'P626-168-229-765', 'LicenseType' : 'Learner', 'ValidFromDate' : `2017-08-16T`, 'ValidToDate' : `2021-11-15T`, 'PersonId' : '' }, { 'LicensePlateNumber' : 'S152-780-97-415-0', 'LicenseType' : 'Probationary', 'ValidFromDate' : `2015-08-15T`, 'ValidToDate' : `2021-08-21T`, 'PersonId' : '' } >>
  8. 이제 VehicleRegistration 테이블을 차량 등록 문서로 채우세요. 이러한 문서에는 기본 소유자와 보조 소유자를 저장하는 중첩된 Owners 구조가 포함되어 있습니다.

    쿼리 편집기 창에서 다음 문을 입력한 후 실행을 선택합니다.

    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': '' }, 'SecondaryOwners' : [] } }, { 'VIN' : 'KM8SRDHF6EU074761', 'LicensePlateNumber' : 'CA762X', 'State' : 'WA', 'City' : 'Kent', 'PendingPenaltyTicketAmount' : 130.75, 'ValidFromDate' : `2017-09-14T`, 'ValidToDate' : `2020-06-25T`, 'Owners' : { 'PrimaryOwner' : { 'PersonId': '' }, 'SecondaryOwners' : [] } }, { 'VIN' : '3HGGK5G53FM761765', 'LicensePlateNumber' : 'CD820Z', 'State' : 'WA', 'City' : 'Everett', 'PendingPenaltyTicketAmount' : 442.30, 'ValidFromDate' : `2011-03-17T`, 'ValidToDate' : `2021-03-24T`, 'Owners' : { 'PrimaryOwner' : { 'PersonId': '' }, 'SecondaryOwners' : [] } }, { 'VIN' : '1HVBBAANXWH544237', 'LicensePlateNumber' : 'LS477D', 'State' : 'WA', 'City' : 'Tacoma', 'PendingPenaltyTicketAmount' : 42.20, 'ValidFromDate' : `2011-10-26T`, 'ValidToDate' : `2023-09-25T`, 'Owners' : { 'PrimaryOwner' : { 'PersonId': '' }, 'SecondaryOwners' : [] } }, { 'VIN' : '1C4RJFAG0FC625797', 'LicensePlateNumber' : 'TH393F', 'State' : 'WA', 'City' : 'Olympia', 'PendingPenaltyTicketAmount' : 30.45, 'ValidFromDate' : `2013-09-02T`, 'ValidToDate' : `2024-03-19T`, 'Owners' : { 'PrimaryOwner' : { 'PersonId': '' }, 'SecondaryOwners' : [] } } >>
  9. 마지막으로 원장에 등록된 차량을 설명하는 문서로 Vehicle 테이블을 채우세요.

    쿼리 편집기 창에서 다음 문을 입력한 후 실행을 선택합니다.

    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' }, { 'VIN' : '3HGGK5G53FM761765', 'Type' : 'Motorcycle', 'Year' : 2011, 'Make' : 'Ducati', 'Model' : 'Monster 1200', 'Color' : 'Yellow' }, { 'VIN' : '1HVBBAANXWH544237', 'Type' : 'Semi', 'Year' : 2009, 'Make' : 'Ford', 'Model' : 'F 150', 'Color' : 'Black' }, { 'VIN' : '1C4RJFAG0FC625797', 'Type' : 'Sedan', 'Year' : 2019, 'Make' : 'Mercedes', 'Model' : 'CLK 350', 'Color' : 'White' } >>

다음으로 SELECT 문을 사용하여 vehicle-registration 원장의 테이블에서 데이터를 읽을 수 있습니다. 3단계: 원장에서 테이블 쿼리로 이동합니다.