기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
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.
테이블, 인덱스 및 샘플 데이터를 생성하려면
-
https://console.aws.amazon.com/qldb
에서 Amazon QLDB 콘솔을 엽니다. -
탐색 창에서 시작하기를 선택합니다.
-
샘플 애플리케이션 데이터 카드의 자동 옵션 아래 원장 목록에서
vehicle-registration
을 선택합니다. -
샘플 데이터 로드를 선택합니다.
작업이 성공적으로 완료되면 콘솔에 샘플 데이터가 로드되었다는 메시지가 표시됩니다.
이 스크립트는 단일 트랜잭션에서 모든 명령문을 실행합니다. 트랜잭션의 일부가 실패하면 모든 명령문이 롤백되고 적절한 오류 메시지가 표시됩니다. 문제를 해결한 후 작업을 재시도할 수 있습니다.
참고
-
트랜잭션 실패의 한 가지 가능한 원인은 중복 테이블을 만들려고 시도하는 것입니다. 원장에
VehicleRegistration
,Vehicle
,Person
,DriversLicense
등의 테이블 이름이 이미 있는 경우 샘플 데이터 로드 요청이 실패합니다.대신 이 샘플 데이터를 빈 원장에 로드해 보세요.
-
이 스크립트는 파라미터화된
INSERT
문을 실행합니다. 따라서 이러한 PartiQL 문은 리터럴 데이터 대신 바인드 파라미터를 사용하여 저널 블록에 기록됩니다. 예를 들어, 저널 블록에서 다음 명령문을 볼 수 있는데, 여기서 물음표(?
)는 문서 콘텐츠의 변수 자리 표시자입니다.INSERT INTO Vehicle ?
-
PrimaryOwner
필드가 비어 있는 VehicleRegistration
에 문서를 삽입하고, PersonId
필드가 비어 있는 DriversLicense
에 문서를 삽입합니다. 나중에 이 필드를 Person
테이블의 시스템 할당 문서 id
로 채웁니다.
작은 정보
가장 좋은 방법은 이 문서 id
메타데이터 필드를 외부 키로 사용하는 것입니다. 자세한 내용은 문서 메타데이터 쿼리을 참조하세요.
테이블, 인덱스 및 샘플 데이터를 생성하려면
-
https://console.aws.amazon.com/qldb
에서 Amazon QLDB 콘솔을 엽니다. -
탐색 창에서 PartiQL 편집기를 선택합니다.
-
vehicle-registration
원장을 선택합니다. -
먼저 테이블 네 개를 생성합니다. QLDB 는 열려 있는 콘텐츠를 지원하며 스키마를 적용하지 않으므로 속성 또는 데이터 유형을 지정하지 않습니다.
쿼리 편집기 창에서 다음 문을 입력한 후 실행을 선택합니다. 명령문을 실행하려면 키보드 단축키(Windows의 경우 Ctrl+Enter, macOS의 경우 Cmd+Return)를 사용할 수도 있습니다. 키보드 단축키에 대한 자세한 내용은 PartiQL 편집기 키보드 바로 가기 섹션을 참조하세요.
CREATE TABLE VehicleRegistration
다음 각 작업에 대해 이 단계를 반복합니다.
CREATE TABLE Vehicle
CREATE TABLE Person
CREATE TABLE DriversLicense
-
그런 다음 각 테이블의 쿼리 성능을 최적화하는 인덱스를 생성합니다.
중요
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)
-
인덱스를 생성한 후 테이블에 데이터 로드를 시작할 수 있습니다. 이 단계에서는 원장이 추적하는 차량 소유자에 대한 개인 정보가 포함된 문서를
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' } >>
-
그런 다음 각 차량 소유자의 운전 면허 정보가 포함된 문서로
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' : '' } >>
-
이제
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' : [] } } >>
-
마지막으로 원장에 등록된 차량을 설명하는 문서로
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단계: 원장에서 테이블 쿼리로 이동합니다.