

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

# Amazon QLDB 콘솔 시작하기
<a name="getting-started"></a>

**중요**  
지원 종료 알림: 기존 고객은 07/31/2025에 지원이 종료될 때까지 Amazon QLDB를 사용할 수 있습니다. 자세한 내용은 [Amazon QLDB 원장을 Amazon Aurora PostgreSQL로 마이그레이션](https://aws.amazon.com/blogs/database/migrate-an-amazon-qldb-ledger-to-amazon-aurora-postgresql/)을 참조하세요.

이 자습서는 첫 번째 Amazon QLDB 원장을 생성하고 테이블과 샘플 데이터로 채우는 단계를 안내합니다. 이 시나리오에서 생성하는 샘플 원장은 차량 등록에 대한 전체 기록 정보를 추적하는 자동차 부서(DMV) 애플리케이션용 데이터베이스입니다.

자산 기록은 원장 데이터베이스의 유용성을 강조하는 다양한 시나리오와 작업을 포함하기 때문에 QLDB의 일반적인 사용 사례입니다. QLDB를 사용하면 SQL과 유사한 쿼리 기능을 지원하는 문서 지향 데이터베이스에서 데이터에 대한 전체 변경 기록을 직접 액세스하고 쿼리하고 확인할 수 있습니다.

이 자습서를 진행하면서 다음 항목에서는 차량 등록을 추가하고 수정하고 해당 등록에 대한 변경 기록을 보는 방법을 설명합니다. 또한 이 안내서는 등록 문서를 암호화하여 검증하는 방법을 보여주고, 리소스를 정리하고 샘플 원장을 삭제하는 것으로 마무리합니다.

자습서의 각 단계에는 AWS Management Console사용 지침이 있습니다.

**Topics**
+ [자습서 사전 조건 및 고려 사항](getting-started.prereqs.md)
+ [1단계: 새 원장 생성](getting-started-step-1.md)
+ [2단계: 원장에 테이블, 인덱스 및 샘플 데이터 생성](getting-started-step-2.md)
+ [3단계: 원장에서 테이블 쿼리](getting-started-step-3.md)
+ [4단계: 원장의 문서 수정](getting-started-step-4.md)
+ [5단계: 문서의 개정 기록 보기](getting-started-step-5.md)
+ [6단계: 원장에 있는 문서 검증](getting-started-step-6.md)
+ [7단계(선택 사항): 리소스 정리](getting-started-step-7.md)
+ [Amazon QLDB 시작하기: 다음 단계](getting-started-next-steps.md)

# 자습서 사전 조건 및 고려 사항
<a name="getting-started.prereqs"></a>

**중요**  
지원 종료 알림: 기존 고객은 07/31/2025에 지원이 종료될 때까지 Amazon QLDB를 사용할 수 있습니다. 자세한 내용은 [Amazon QLDB 원장을 Amazon Aurora PostgreSQL로 마이그레이션](https://aws.amazon.com/blogs/database/migrate-an-amazon-qldb-ledger-to-amazon-aurora-postgresql/)을 참조하세요.

이 Amazon QLDB 자습서를 시작하기 전에 다음 사전 조건을 완료했는지 확인하세요.

1. 아직 설정하지 않은 경우 [Amazon QLDB 액세스](accessing.md)의 AWS 설정 지침을 따릅니다. 이러한 단계에는 관리 사용자 가입 AWS 및 생성이 포함됩니다.

1. [권한 설정](#getting-started.prereqs.permissions)의 지침에 따라 QLDB 리소스에 대한 IAM 권한을 설정합니다. 이 자습서의 모든 단계를 완료하려면 AWS Management Console을 통해 원장 리소스에 대한 전체 관리자 액세스 권한이 필요합니다.
**참고**  
이미 전체 AWS 관리 권한이 있는 사용자로 로그인한 경우이 단계를 건너뛸 수 있습니다.

1. (선택 사항) QLDB는 AWS Key Management Service ()의 키를 사용하여 저장 데이터를 암호화합니다AWS KMS. 다음 AWS KMS keys유형 중 하나를 선택할 수 있습니다.
   + **AWS 소유 KMS 키** - AWS 사용자를 대신하여가 소유하고 관리하는 KMS 키를 사용합니다. 이는 기본 옵션이며 추가 설정이 필요하지 않습니다.
   + **고객 관리형 KMS 키** - 귀하가 생성, 소유 및 관리하는 계정에서 대칭 암호화 KMS 키를 사용하세요. QLDB는 [비대칭 키](https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html)는 지원하지 않습니다.

     이 옵션을 사용하려면 KMS 키를 만들거나 계정의 기존 키를 사용해야 합니다. 고객 관리형 키 생성에 대한 지침은 *AWS Key Management Service 개발자 가이드*에서 [대칭 암호화 KMS 키 생성](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk)을 참조하세요.

     ID, 별칭 또는 Amazon 리소스 이름(ARN)을 사용하여 고객 관리형 KMS 키를 지정할 수 있습니다. 자세한 설명은 *AWS Key Management Service 개발자 가이드*에서 [키 식별자(KeyId)](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-id)를 참조하세요.
**참고**  
교차 리전 키는 지원되지 않습니다. 지정된 KMS 키는 원장과 동일한 AWS 리전 에 있어야 합니다.

## 권한 설정
<a name="getting-started.prereqs.permissions"></a>

이 단계에서는 AWS 계정의 모든 QLDB 리소스에 대해 콘솔을 통해 전체 액세스 권한을 설정합니다. 이러한 권한을 신속하게 부여하려면 AWS 관리형 정책 [AmazonQLDBConsoleFullAccess](security-iam-awsmanpol.md#security-iam-awsmanpol-AmazonQLDBConsoleFullAccess)를 사용하세요.

액세스 권한을 제공하려면 사용자, 그룹 또는 역할에 권한을 추가하세요:
+ 의 사용자 및 그룹 AWS IAM Identity Center:

  권한 세트를 생성합니다. *AWS IAM Identity Center 사용 설명서*의 [권한 세트 생성](https://docs.aws.amazon.com/singlesignon/latest/userguide/howtocreatepermissionset.html)의 지침을 따릅니다.
+ 보안 인증 공급자를 통해 IAM에서 관리되는 사용자:

  ID 페더레이션을 위한 역할을 생성합니다. *IAM 사용 설명서*의 [Create a role for a third-party identity provider (federation)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-idp.html)의 지침을 따릅니다.
+ IAM 사용자:
  + 사용자가 맡을 수 있는 역할을 생성합니다. *IAM 사용 설명서*에서 [Create a role for an IAM user](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html)의 지침을 따릅니다.
  + (권장되지 않음)정책을 사용자에게 직접 연결하거나 사용자를 사용자 그룹에 추가합니다. *IAM 사용 설명서*에서 [사용자(콘솔)에 권한 추가](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_change-permissions.html#users_change_permissions-add-console)의 지침을 따르세요.

**중요**  
이 자습서의 목적에 따라 모든 QLDB 리소스에 대한 전체 관리 액세스 권한을 자신에게 부여합니다. 그러나 프로덕션 사용 사례의 경우 [최소 권한을 부여](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege)하거나 작업을 수행하는 데 필요한 권한만 부여하는 보안 모범 사례를 따르세요. 예를 보려면 [Amazon QLDB의 자격 증명 기반 정책 예](security_iam_id-based-policy-examples.md)을 참조하세요.

`vehicle-registration`라는 이름의 원장을 생성하려면 [1단계: 새 원장 생성](getting-started-step-1.md)로 진행하세요.

# 1단계: 새 원장 생성
<a name="getting-started-step-1"></a>

**중요**  
지원 종료 알림: 기존 고객은 07/31/2025에 지원이 종료될 때까지 Amazon QLDB를 사용할 수 있습니다. 자세한 내용은 [Amazon QLDB 원장을 Amazon Aurora PostgreSQL로 마이그레이션](https://aws.amazon.com/blogs/database/migrate-an-amazon-qldb-ledger-to-amazon-aurora-postgresql/)을 참조하세요.

이 단계에서는 `vehicle-registration`라는 이름의 새 Amazon QLDB 원장을 생성합니다. 그런 다음 원장 상태가 **활성**인지 확인합니다. 원장에 추가한 모든 태그를 확인할 수도 있습니다.

원장을 생성할 때 기본적으로 *삭제 방지*가 활성화됩니다. 삭제 방지는 사용자가 원장을 삭제하는 것을 방지하는 QLDB의 기능입니다. QLDB API 또는 AWS Command Line Interface ()를 사용하여 원장을 생성할 때 삭제 방지를 비활성화할 수 있습니다AWS CLI.

**새 원장을 생성하려면**

1. 에 로그인 AWS Management Console하고 [https://console.aws.amazon.com/qldb](https://console.aws.amazon.com/qldb) Amazon QLDB 콘솔을 엽니다.

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

1. **첫 번째 원장 생성** 카드에서 **원장 생성**을 선택합니다.

1. **원장 생성** 페이지에서 다음을 수행합니다.
   + **원장 정보** - **원장 이름**은 **vehicle-registration**으로 미리 채워져 있어야 합니다.
   + **권한 모드** - 원장에 할당할 권한 모드입니다. 다음 옵션 중 하나를 선택하세요:
     + **모두 허용** - 원장에 대한 API 수준 세분화로 액세스 제어를 가능하게 하는 레거시 권한 모드입니다

       이 모드를 사용하면 이 원장에 대한 `SendCommand` API 권한이 있는 사용자가 지정된 원장의 모든 표에서 모든 PartiQL 명령(따라서 `ALLOW_ALL`)을 실행할 수 있습니다. 이 모드는 원장에 대해 생성하는 모든 표 수준 또는 명령 수준 IAM 권한 정책을 무시합니다.
     + **표준** - (*권장*) 원장, 테이블 및 PartiQL 명령에 대해 보다 세분화된 액세스 제어를 가능하게 하는 권한 모드입니다.. 원장 데이터의 보안을 극대화하기 위해 이 권한 모드를 사용하는 것을 강력 권장합니다.

       기본적으로 이 모드는 이 원장의 모든 테이블에서 PartiQL 명령을 실행하려는 모든 요청을 거부합니다. PartiQL 명령을 허용하려면 원장에 대한 `SendCommand` API 권한 외에도 특정 테이블 리소스 및 PartiQL 작업에 대한 IAM 권한 정책을 생성해야 합니다. 자세한 내용은 [Amazon QLDB에서 표준 권한 모드로 시작하기](getting-started-standard-mode.md)을 참조하세요.
   + **저장 데이터 암호화** - 저장 데이터 암호화에 사용할 AWS Key Management Service (AWS KMS)의 키입니다. 다음 옵션 중 하나를 선택하세요.
     + ** AWS 소유 KMS 키 사용** - AWS 사용자를 대신하여에서 소유하고 관리하는 KMS 키를 사용합니다. 이는 기본 옵션이며 추가 설정이 필요하지 않습니다.
     + **다른 AWS KMS 키 선택** - 생성, 소유 및 관리하는 계정에서 대칭 암호화 KMS 키를 사용합니다.

        AWS KMS 콘솔을 사용하여 새 키를 생성하려면 ** AWS KMS 키 생성을** 선택합니다. 자세한 내용은 *AWS Key Management Service 개발자 안내서*의 [대칭 암호화 KMS 키 생성](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk)을 참조하세요.

       기존 KMS 키를 사용하려면 드롭다운 목록에서 하나를 선택하거나 KMS 키 ARN을 지정합니다.
   + **태그** - (선택 사항) 태그를 키-값 쌍으로 연결하여 메타데이터를 원장에 추가합니다. 원장에 태그를 추가함으로써 쉽게 원장을 조직화하고 식별할 수 있습니다. 자세한 내용은 [Amazon QLDB 리소스 태그 지정](tagging.md)을 참조하세요.

     **태그 추가**를 선택한 다음 키-값 쌍을 적절히 입력합니다.

1. 원하는 대로 설정되었으면 **원장 생성**을 선택합니다.
**참고**  
QLDB 원장 상태가 **활성** 상태가 되면 해당 원장에 액세스할 수 있습니다. 몇 분 정도 걸릴 수 있습니다.

1. **원장** 목록에서 `vehicle-registration`을 찾아 원장 상태가 **활성** 상태인지 확인합니다.

1. (선택 사항) `vehicle-registration` 원장 이름을 선택합니다. **차량 등록** 원장 세부 정보 페이지에서 원장에 추가한 모든 태그가 **태그** 카드에 표시되는지 확인합니다. 이 콘솔 페이지를 사용하여 원장 태그를 편집할 수도 있습니다.

`vehicle-registration` 원장에 테이블을 생성하려면 [2단계: 원장에 테이블, 인덱스 및 샘플 데이터 생성](getting-started-step-2.md)로 진행하세요.

# 2단계: 원장에 테이블, 인덱스 및 샘플 데이터 생성
<a name="getting-started-step-2"></a>

**중요**  
지원 종료 알림: 기존 고객은 07/31/2025에 지원이 종료될 때까지 Amazon QLDB를 사용할 수 있습니다. 자세한 내용은 [Amazon QLDB 원장을 Amazon Aurora PostgreSQL로 마이그레이션](https://aws.amazon.com/blogs/database/migrate-an-amazon-qldb-ledger-to-amazon-aurora-postgresql/)을 참조하세요.

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

이 단계에서는 `vehicle-registration` 원장에 4개의 테이블을 생성합니다.
+ `VehicleRegistration`
+ `Vehicle`
+ `Person`
+ `DriversLicense`

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


****  

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

QLDB 콘솔을 사용하여 인덱스가 있는 이러한 테이블을 자동으로 생성하고 샘플 데이터를 로드할 수 있습니다. 또는 콘솔의 **PartiQL 편집기**를 사용하여 각 [PartiQL](ql-reference.md) 문을 단계별로 수동으로 실행할 수 있습니다.

## 자동 옵션
<a name="getting-started-step-2.con-auto"></a>

**테이블, 인덱스 및 샘플 데이터를 생성하려면**

1. [https://console.aws.amazon.com/qldb](https://console.aws.amazon.com/qldb)에서 Amazon QLDB 콘솔을 엽니다.

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

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

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

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

   이 스크립트는 단일 트랜잭션에서 모든 명령문을 실행합니다. 트랜잭션의 일부가 실패하면 모든 명령문이 롤백되고 적절한 오류 메시지가 표시됩니다. 문제를 해결한 후 작업을 재시도할 수 있습니다.
**참고**  
트랜잭션 실패의 한 가지 가능한 원인은 중복 테이블을 만들려고 시도하는 것입니다. 원장에 `VehicleRegistration`, `Vehicle`, `Person`, `DriversLicense` 등의 테이블 이름이 이미 있는 경우 샘플 데이터 로드 요청이 실패합니다.  
대신 이 샘플 데이터를 빈 원장에 로드해 보세요.
이 스크립트는 파라미터화된 `INSERT` 문을 실행합니다. 따라서 이러한 PartiQL 문은 리터럴 데이터 대신 바인드 파라미터를 사용하여 저널 블록에 기록됩니다. 예를 들어, 저널 블록에서 다음 명령문을 볼 수 있는데, 여기서 물음표(`?`)는 문서 콘텐츠의 변수 자리 표시자입니다.  

     ```
     INSERT INTO Vehicle ?
     ```

## 수동 옵션
<a name="getting-started-step-2.con"></a>

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

**작은 정보**  
가장 좋은 방법은 이 문서 `id` 메타데이터 필드를 외부 키로 사용하는 것입니다. 자세한 내용은 [문서 메타데이터 쿼리](working.metadata.md)을 참조하세요.

**테이블, 인덱스 및 샘플 데이터를 생성하려면**

1. [https://console.aws.amazon.com/qldb](https://console.aws.amazon.com/qldb)에서 Amazon QLDB 콘솔을 엽니다.

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

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

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

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

   ```
   CREATE TABLE VehicleRegistration
   ```

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

   ```
   CREATE TABLE Vehicle
   ```

   ```
   CREATE TABLE Person
   ```

   ```
   CREATE TABLE DriversLicense
   ```

1. 그런 다음 각 테이블의 쿼리 성능을 최적화하는 인덱스를 생성합니다.
**중요**  
QLDB는 문서를 효율적으로 조회하기 위한 인덱스가 필요합니다. 인덱스가 없으면 QLDB는 문서를 읽을 때 전체 테이블 스캔을 수행해야 합니다. 이로 인해 동시성 충돌 및 트랜잭션 시간 초과를 포함하여 대규모 테이블에서 성능 문제가 발생할 수 있습니다.  
인덱싱된 필드 또는 문서 ID(예: `=` 또는 `IN`)에서 동등 *연산자*를 사용하여 `WHERE` 조건자 절이 포함된 문을 실행하는 것이 좋습니다. 자세한 내용은 [쿼리 성능 최적화](working.optimize.md)을 참조하세요.

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

   ```
   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)
   ```

1. 인덱스를 생성한 후 테이블에 데이터 로드를 시작할 수 있습니다. 이 단계에서는 원장이 추적하는 차량 소유자에 대한 개인 정보가 포함된 문서를 `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'
   } >>
   ```

1. 그런 다음 각 차량 소유자의 운전 면허 정보가 포함된 문서로 `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' : ''
   } >>
   ```

1. 이제 `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' : []
       }
   } >>
   ```

1. 마지막으로 원장에 등록된 차량을 설명하는 문서로 `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단계: 원장에서 테이블 쿼리](getting-started-step-3.md)로 이동합니다.

# 3단계: 원장에서 테이블 쿼리
<a name="getting-started-step-3"></a>

**중요**  
지원 종료 알림: 기존 고객은 07/31/2025에 지원이 종료될 때까지 Amazon QLDB를 사용할 수 있습니다. 자세한 내용은 [Amazon QLDB 원장을 Amazon Aurora PostgreSQL로 마이그레이션](https://aws.amazon.com/blogs/database/migrate-an-amazon-qldb-ledger-to-amazon-aurora-postgresql/)을 참조하세요.

Amazon QLDB 원장에 테이블을 생성하고 데이터를 로드한 후 쿼리를 실행하여 방금 삽입한 차량 등록 데이터를 검토할 수 있습니다. QLDB는 PartiQL을 쿼리 언어로 사용하고 Amazon Ion을 문서 지향 데이터 모델로 사용합니다.

PartiQL은 Ion과 함께 작동하도록 확장된 오픈 소스 SQL 호환 쿼리 언어입니다. PartiQL을 사용하면 익숙한 SQL 연산자를 사용하여 데이터를 삽입, 쿼리 및 관리할 수 있습니다. Amazon Ion은 JSON의 상위 집합입니다. Ion은 정형, 반정형 및 중첩 데이터를 저장하고 처리할 수 있는 유연성을 제공하는 오픈 소스 문서 기반 데이터 형식입니다.

이 단계에서는 `SELECT` 명령문을 사용하여 `vehicle-registration` 원장의 테이블에서 데이터를 읽습니다.

**주의**  
인덱싱된 조회 없이 QLDB에서 쿼리를 실행하면 전체 테이블 스캔이 호출됩니다. PartiQL은 SQL과 호환되므로 이러한 쿼리를 지원합니다. 하지만 QLDB의 프로덕션 사용 사례에 대해서는 테이블 스캔을 실행하지 *마세요.*. 테이블 스캔은 동시성 충돌 및 트랜잭션 시간 초과를 포함하여 대규모 테이블에서 성능 문제를 일으킬 수 있습니다.  
인덱싱된 필드 또는 문서 ID(예: `WHERE indexedField = 123` 또는 `WHERE indexedField IN (456, 789)`)에서 동등 *연산자*를 사용하여 `WHERE` 조건자 절이 포함된 문을 실행하는 것이 좋습니다. 자세한 내용은 [쿼리 성능 최적화](working.optimize.md)을 참조하세요.

**테이블을 쿼리하려면**

1. [https://console.aws.amazon.com/qldb](https://console.aws.amazon.com/qldb)에서 Amazon QLDB 콘솔을 엽니다.

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

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

1. 쿼리 편집기 창에서 다음 문을 입력하여 원장에 추가한 특정 차량 식별 번호(VIN)에 대해 `Vehicle` 테이블을 쿼리한 후 **실행**을 선택합니다.

   명령문을 실행하려면 키보드 단축키(Windows의 경우 Ctrl\$1Enter, macOS의 경우 Cmd\$1Return)를 사용할 수도 있습니다. 키보드 단축키에 대한 자세한 내용은 [PartiQL 편집기 키보드 바로 가기](console_QLDB.md#console_QLDB.partiql-editor-shortcuts) 섹션을 참조하세요.

   ```
   SELECT * FROM Vehicle AS v
   WHERE v.VIN = '1N4AL11D75C109151'
   ```

1. 내부 조인 쿼리를 작성할 수 있습니다. 이 쿼리 예제에서는 `Vehicle`를 `VehicleRegistration`와 조인하고 지정된 `VIN`에 대해 등록된 차량의 속성과 함께 등록 정보를 반환합니다.

   다음 문을 입력한 다음 **실행**을 선택합니다.

   ```
   SELECT v.VIN, r.LicensePlateNumber, r.State, r.City, r.Owners
   FROM Vehicle AS v, VehicleRegistration AS r
   WHERE v.VIN = '1N4AL11D75C109151'
   AND v.VIN = r.VIN
   ```

   `Person` 및 `DriversLicense` 테이블을 조인하여 원장에 추가된 드라이버와 관련된 속성을 볼 수도 있습니다.

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

   ```
   SELECT * FROM Person AS p, DriversLicense AS l
   WHERE p.GovId = l.LicensePlateNumber
   ```

`vehicle-registration` 원장의 테이블에 있는 문서를 수정하는 방법에 대한 자세한 내용은 [4단계: 원장의 문서 수정](getting-started-step-4.md)을 참조하세요.

# 4단계: 원장의 문서 수정
<a name="getting-started-step-4"></a>

**중요**  
지원 종료 알림: 기존 고객은 07/31/2025에 지원이 종료될 때까지 Amazon QLDB를 사용할 수 있습니다. 자세한 내용은 [Amazon QLDB 원장을 Amazon Aurora PostgreSQL로 마이그레이션](https://aws.amazon.com/blogs/database/migrate-an-amazon-qldb-ledger-to-amazon-aurora-postgresql/)을 참조하세요.

이제 작업할 데이터가 있으므로 Amazon QLDB에서 `vehicle-registration` 원장에 있는 문서를 변경할 수 있습니다. VIN `1N4AL11D75C109151`를 갖는 Audi A5를 예로 들어 보겠습니다. 이 차는 처음에 워싱턴 주 시애틀에 있는 라울 루이스라는 운전자가 소유하고 있습니다.

라울이 워싱턴 주 에버렛에 사는 브렌트 로건이라는 주민에게 차를 판다고 가정해 보겠습니다. 그러던 중 브렌트와 알렉시스 페나는 결혼하기로 결정합니다. 브렌트는 등기부 상에 알렉시스를 보조 소유자로 추가하고자 합니다. 이 단계에서는 다음과 같은 데이터 조작 언어(DML) 문을 통해 이러한 이벤트를 반영하기 위해 원장을 적절히 변경하는 방법을 설명합니다.

**작은 정보**  
가장 좋은 방법은 문서의 시스템 할당 `id`를 외래 키로 사용하는 것입니다. 고유 식별자(예: 차량의 VIN)로 사용되는 필드를 정의할 수 있지만 문서의 실제  고유 식별자는 `id`입니다. 이 필드는 문서의 메타데이터에 포함되며 *커밋된 뷰*(테이블의 시스텀 정의 뷰)에서 쿼리할 수 있습니다.  
QLDB 뷰에 대한 자세한 내용은 [핵심 개념](ledger-structure.md) 섹션을 참조하세요. 메타데이터에 대해 자세히 알아보려면 [문서 메타데이터 쿼리](working.metadata.md) 섹션을 참조하세요.

**문서를 수정하려면**

1. [https://console.aws.amazon.com/qldb](https://console.aws.amazon.com/qldb)에서 Amazon QLDB 콘솔을 엽니다.

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

1. `vehicle-registration` 원장을 선택합니다.
**참고**  
콘솔의 자동 **샘플 데이터 로드** 기능을 사용하여 원장을 설정하는 경우 6단계로 넘어가세요.

1. `INSERT` 문을 수동으로 실행하여 샘플 데이터를 로드하는 경우 다음 단계를 계속하세요.

   처음에 라울을 이 차량의 소유주로 등록하려면 `Person` 테이블에서 Raul의 시스템 할당 문서 `id`를 찾는 것부터 시작합니다. 이 필드는 문서의 메타데이터에 포함되어 있으며, *커밋된 보기*라고 하는 테이블의 시스템 정의 뷰에서 쿼리할 수 있습니다.

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

   ```
   SELECT metadata.id FROM _ql_committed_Person AS p
   WHERE p.data.FirstName = 'Raul' and p.data.LastName = 'Lewis'
   ```

   접두사 `_ql_committed_`는 `Person` 테이블의 커밋된 뷰를 쿼리하려는 것을 나타내는 예약된 접두사입니다. 이 뷰에서는 데이터가 `data` 필드에 중첩되고 메타데이터는 `metadata` 필드에 중첩됩니다.

1. 이제 이 `id`를 `UPDATE` 문에 사용하여 `VehicleRegistration` 테이블의 해당 문서를 수정하세요. 다음 문을 입력한 다음 **실행**을 선택합니다.

   ```
   UPDATE VehicleRegistration AS r
   SET r.Owners.PrimaryOwner.PersonId = '294jJ3YUoH1IEEm8GSabOs' --replace with your id
   WHERE r.VIN = '1N4AL11D75C109151'
   ```

   이 문을 실행하여 `Owners` 필드를 수정했는지 확인하세요.

   ```
   SELECT r.Owners FROM VehicleRegistration AS r
   WHERE r.VIN = '1N4AL11D75C109151'
   ```

1. 차량 소유권을 에버렛에 있는 브렌트에게 이전하려면 먼저 다음 문을 사용하여 `Person` 테이블에서 그의 `id`을 찾으세요.

   ```
   SELECT metadata.id FROM _ql_committed_Person AS p
   WHERE p.data.FirstName = 'Brent' and p.data.LastName = 'Logan'
   ```

   그런 다음, 이 `id`를 사용하여 `VehicleRegistration` 테이블의 `PrimaryOwner` 및 `City`를 업데이트하세요.

   ```
   UPDATE VehicleRegistration AS r
   SET r.Owners.PrimaryOwner.PersonId = '7NmE8YLPbXc0IqesJy1rpR', --replace with your id
       r.City = 'Everett'
   WHERE r.VIN = '1N4AL11D75C109151'
   ```

   다음 문을 실행하여 `PrimaryOwner` 및 `City` 필드를 수정했는지 확인하세요.

   ```
   SELECT r.Owners.PrimaryOwner, r.City
   FROM VehicleRegistration AS r
   WHERE r.VIN = '1N4AL11D75C109151'
   ```

1. 알렉시스를 차량의 보조 소유자로 추가하려면 그녀의 `Person id`를 찾으세요.

   ```
   SELECT metadata.id FROM _ql_committed_Person AS p
   WHERE p.data.FirstName = 'Alexis' and p.data.LastName = 'Pena'
   ```

   그런 다음, 다음 [FROM-INSERT](ql-reference.from.md) DML 문을 사용하여 이 `id`을 `SecondaryOwners` 목록에 삽입합니다.

   ```
   FROM VehicleRegistration AS r 
   WHERE r.VIN = '1N4AL11D75C109151'
   INSERT INTO r.Owners.SecondaryOwners
       VALUE { 'PersonId' : '5Ufgdlnj06gF5CWcOIu64s' } --replace with your id
   ```

   이 문을 실행하여 `SecondaryOwners`를 수정했는지 확인하세요.

   ```
   SELECT r.Owners.SecondaryOwners FROM VehicleRegistration AS r
   WHERE r.VIN = '1N4AL11D75C109151'
   ```

`vehicle-registration` 원장의 이러한 변경 사항을 검토하려면 [5단계: 문서의 개정 기록 보기](getting-started-step-5.md)을 참조하세요.

# 5단계: 문서의 개정 기록 보기
<a name="getting-started-step-5"></a>

**중요**  
지원 종료 알림: 기존 고객은 07/31/2025에 지원이 종료될 때까지 Amazon QLDB를 사용할 수 있습니다. 자세한 내용은 [Amazon QLDB 원장을 Amazon Aurora PostgreSQL로 마이그레이션](https://aws.amazon.com/blogs/database/migrate-an-amazon-qldb-ledger-to-amazon-aurora-postgresql/)을 참조하세요.

VIN이 ` 1N4AL11D75C109151`인 차량의 등록 데이터를 수정한 후, 등록된 모든 소유자의 기록과 기타 업데이트된 필드를 쿼리할 수 있습니다. 내장 [기록 함수](working.history.md#working.history.function)를 쿼리하여 삽입, 업데이트 및 삭제한 문서의 모든 개정 사항을 볼 수 있습니다.

기록 함수는 애플리케이션 데이터와 관련 메타데이터를 모두 포함하는 테이블의 *커밋된 보기*에서 개정 사항을 반환합니다. 메타데이터는 각 개정이 이루어진 시점, 순서, 어떤 트랜잭션이 이 개정을 수행했는지를 정확하게 보여줍니다.

이 단계에서는 `vehicle-registration` 원장의 `VehicleRegistration` 테이블에 있는 문서의 개정 기록을 쿼리합니다.

**개정 기록을 보려면**

1. [https://console.aws.amazon.com/qldb](https://console.aws.amazon.com/qldb)에서 Amazon QLDB 콘솔을 엽니다.

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

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

1. 문서 기록을 조회하려면 먼저 고유한 `id`를 찾아야 합니다. 커밋된 보기를 쿼리하는 것 외에도 문서 `id`를 가져오는 또 다른 방법은 테이블의 기본 사용자 뷰에서 `BY` 키워드를 사용하는 것입니다. 자세한 내용은 [BY 절을 사용하여 문서 ID 쿼리하기](working.metadata.by-clause.md) 섹션을 참조하세요.

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

   ```
   SELECT r_id FROM VehicleRegistration AS r BY r_id
   WHERE r.VIN = '1N4AL11D75C109151'
   ```

1. 그런 다음 이 `id` 값을 사용하여 기록 함수를 쿼리할 수 있습니다. 다음 문을 입력한 다음 **실행**을 선택합니다. 필요에 따라 `id` 값을 고유한 문서 ID로 교체합니다.

   ```
   SELECT h.data.VIN, h.data.City, h.data.Owners
   FROM history(VehicleRegistration) AS h
   WHERE h.metadata.id = 'ADR2LQq48kB9neZDupQrMm' --replace with your id
   ```
**참고**  
이 자습서의 목적을 위해 이 기록 쿼리는 문서 ID `ADR2LQq48kB9neZDupQrMm`의 모든 개정 내용을 반환합니다. 그러나 가장 좋은 방법은 문서 ID와 날짜 범위(시작 시간 및 종료 시간)를 모두 사용하여 기록 쿼리를 한정하는 것입니다.  
QLDB에서는 모든 `SELECT` 쿼리가 트랜잭션에서 처리되며 [트랜잭션 시간 초과 제한](limits.md#limits.fixed)이 적용됩니다. 시작 시간과 종료 시간을 포함하는 기록 쿼리는 날짜 범위 한정이라는 이점을 갖습니다. 자세한 내용은 [기록 함수](working.history.md#working.history.function)을 참조하세요.

   기록 함수는 커밋된 보기와 동일한 스키마의 문서를 반환합니다. 이 예제에서는 수정된 차량 등록 데이터를 프로젝션합니다. 출력은 다음과 유사합니다.  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/qldb/latest/developerguide/getting-started-step-5.html)
**참고**  
기록 쿼리가 문서 개정 내용을 항상 순차적으로 반환하지 않을 수도 있습니다.

   출력을 검토하고 변경 사항이 [4단계: 원장의 문서 수정](getting-started-step-4.md)에서 수행한 내용을 반영하는지 확인합니다.

1. 그런 다음 각 개정의 문서 메타데이터를 검사할 수 있습니다. 다음 문을 입력한 다음 **실행**을 선택합니다. 이번에도 `id` 값을 자신의 문서 ID로 적절하게 교체하세요.

   ```
   SELECT VALUE h.metadata
   FROM history(VehicleRegistration) AS h
   WHERE h.metadata.id = 'ADR2LQq48kB9neZDupQrMm' --replace with your id
   ```

    출력은 다음과 유사합니다.  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/qldb/latest/developerguide/getting-started-step-5.html)

   이 메타데이터 필드는 각 항목이 언제 수정되었는지, 어떤 트랜잭션을 통해 수정되었는지에 대한 세부 정보를 제공합니다. 이 데이터에서 다음을 추론할 수 있습니다.
   + 이 문서는 시스템이 할당한 `id`인 `ADR2LQq48kB9neZDupQrMm`로 고유하게 식별됩니다 이는 Base62로 인코딩된 문자열로 표시되는 범용 고유 식별자(UUID)입니다.
   + `txTime`는 문서(버전 `0`)의 초기 개정이 `2019-05-23T19:20:360d-3Z`에 작성되었음을 보여줍니다.
   + 이후의 각 트랜잭션은 동일한 문서 `id`, 증분된 버전 번호, 업데이트된 `txId` 및 `txTime`를 사용하여 새 개정을 생성합니다.

`vehicle-registration` 원장에서 암호화된 방식으로 문서 개정을 검증하려면 [6단계: 원장에 있는 문서 검증](getting-started-step-6.md)로 이동하세요.

# 6단계: 원장에 있는 문서 검증
<a name="getting-started-step-6"></a>

**중요**  
지원 종료 알림: 기존 고객은 07/31/2025에 지원이 종료될 때까지 Amazon QLDB를 사용할 수 있습니다. 자세한 내용은 [Amazon QLDB 원장을 Amazon Aurora PostgreSQL로 마이그레이션](https://aws.amazon.com/blogs/database/migrate-an-amazon-qldb-ledger-to-amazon-aurora-postgresql/)을 참조하세요.

Amazon QLDB를 사용하면 SHA-256 암호화 해싱을 사용하여 원장 저널에 있는 문서의 무결성을 효율적으로 검증할 수 있습니다. 이 예에서 알렉시스와 브렌트는 자동차 대리점에서 VIN이 `1N4AL11D75C109151`인 차량을 트레이드하여 새 모델로 업그레이드하기로 결정합니다. 딜러는 등록 사무소를 통해 차량 소유권을 확인하는 것으로 절차를 시작합니다.

QLDB에서 검증 및 암호화 해싱이 작동하는 방식에 대한 자세한 내용은 [Amazon QLDB에서의 데이터 확인](verification.md)을 참조하세요.

이 단계에서는 `vehicle-registration` 원장의 문서 개정을 확인합니다. 먼저 다이제스트를 요청합니다. 다이제스트는 출력 파일로 반환되며 원장의 전체 변경 내역에 대한 서명 역할을 합니다. 그런 다음 해당 다이제스트와 관련된 개정 증거를 요청합니다. 이 증거를 사용하면 모든 유효성 검사를 통과한 경우 개정 내용의 무결성을 확인할 수 있습니다.

## 다이제스트를 요청하려면
<a name="getting-started-step-6.digest"></a>

1. [https://console.aws.amazon.com/qldb](https://console.aws.amazon.com/qldb)에서 Amazon QLDB 콘솔을 엽니다.

1. 탐색 창에서 **원장**을 선택합니다.

1. 원장 목록에서 `vehicle-registration`을 선택합니다.

1. **다이제스트 가져오기**를 선택합니다. **다이제스트 가져오기** 대화 상자에는 다음과 같은 다이제스트 세부 정보가 표시됩니다.
   + **다이제스트** - 요청한 다이제스트의 SHA-256 해시 값.
   + **다이제스트 팁 주소** - 요청한 다이제스트에 포함된 저널의 최신 [블록](verification.md#verification.structure) 위치. 주소에는 다음과 같은 두 가지 필드가 있습니다.
     + `strandId` - 블록을 포함하는 저널 스트랜드의 고유 ID입니다.
     + `sequenceNo` - 스트랜드 내 블록의 위치를 지정하는 인덱스 번호.
   + **원장** - 다이제스트를 요청한 원장 이름.
   + **날짜** - 다이제스트를 요청한 시점의 타임스탬프.

1. 다이제스트 정보를 검토합니다. 그런 다음 **저장**을 선택합니다. 기본 파일 이름을 유지하거나 새 이름을 입력할 수 있습니다.

   이 단계는 콘텐츠가 포함된 일반 텍스트 파일을 [Amazon Ion](ion.md) 형식으로 저장합니다. 파일의 파일 이름 확장자는 `.ion.txt`이며 이전 대화 상자에 나열된 모든 다이제스트 정보를 포함합니다. 다음은 다이제스트 파일의 내용을 보여주는 예제입니다. 필드 순서는 브라우저에 따라 다를 수 있습니다.

   ```
   {
     "digest": "42zaJOfV8iGutVGNaIuzQWhD5Xb/5B9lScHnvxPXm9E=",
     "digestTipAddress": "{strandId:\"BlFTjlSXze9BIh1KOszcE3\",sequenceNo:73}",
     "ledger": "vehicle-registration",
     "date": "2019-04-17T16:57:26.749Z"
   }
   ```

1. 나중에 액세스할 수 있는 위치에 이 파일을 저장하세요. 다음 단계에서는 이 파일을 사용하여 문서 개정을 검증합니다.

원장 다이제스트를 저장한 후 해당 다이제스트를 기준으로 문서 개정을 확인하는 프로세스를 시작할 수 있습니다.

**참고**  
검증을 위한 프로덕션 사용 사례에서는 두 작업을 연속해서 수행하는 대신 이전에 저장한 다이제스트를 사용합니다. 가장 좋은 방법은 나중에 확인하려는 개정 내용이 저널에 기록되는 즉시 다이제스트를 요청하여 저장하는 것입니다.

## 문서 개정을 검증하려면
<a name="getting-started-step-6.verify"></a>

1. 먼저 검증하려는 문서 개정의 `id` 및 `blockAddress`를 원장에서 쿼리하세요. 이 필드는 문서의 메타데이터에 포함되며 커밋된 뷰에서 쿼리할 수 있습니다.

   문서 `id`는 시스템에서 할당한 고유 ID 문자열입니다. `blockAddress`는 개정이 커밋된 블록 위치를 지정하는 Ion 구조입니다.

   QLDB 콘솔의 탐색 창에서 **PartiQL 편집기**를 선택합니다.

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

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

   ```
   SELECT r.metadata.id, r.blockAddress
   FROM _ql_committed_VehicleRegistration AS r 
   WHERE r.data.VIN = '1N4AL11D75C109151'
   ```

1. 쿼리가 반환하는 `id` 및 `blockAddress` 값을 복사하여 저장합니다. `id` 필드의 큰따옴표는 반드시 생략하세요. Amazon Ion에서 문자열 데이터 유형이 큰따옴표로 구분됩니다.

1. 이제 문서 수정본을 선택했으니 확인 프로세스를 시작할 수 있습니다.

   탐색 창에서 **검증**을 선택합니다.

1. **문서 검증** 양식의 **검증하려는 문서 지정**에 다음 입력 파라미터를 입력합니다.
   + **원장** - `vehicle-registration`를 선택합니다.
   + **블록 주소** - 3단계에서 쿼리를 통해 반환된 `blockAddress` 값.
   + **문서 ID** - 3단계에서 쿼리를 통해 반환된 `id` 값.

1. **확인에 사용할 다이제스트 지정**에서 **다이제스트 선택**을 선택하여 이전에 저장한 다이제스트를 선택합니다. 파일이 유효하면 콘솔의 모든 다이제스트 필드가 자동으로 채워집니다. 또는 다이제스트 파일에서 직접 다음 값을 수동으로 복사하여 붙여넣을 수 있습니다.
   + **다이제스트** - 다이제스트 파일의 `digest` 값.
   + **다이제스트 팁 주소** - 다이제스트 파일의 `digestTipAddress` 값.

1. 문서 및 다이제스트 입력 파라미터를 검토한 다음 **검증**을 선택합니다.

   콘솔은 다음 두 단계를 자동화합니다.

   1. 지정된 문서에 대한 증거를 QLDB에 요청합니다.

   1. QLDB에서 반환한 증거를 사용하여 제공된 다이제스트에 대해 문서 개정을 검증하는 클라이언트 측 API를 호출합니다.

   콘솔은 **검증 결과** 카드에 요청 결과를 표시합니다. 자세한 내용은 [확인 결과](verification.results.md)을 참조하세요.

1. 확인 로직을 테스트하려면 **문서 개정 확인하기**에서 6\$18단계를 반복하되, **다이제스트** 입력 문자열에서 한 글자만 변경합니다. 그러면 **검증** 요청이 실패하고 적절한 오류 메시지가 표시됩니다.

`vehicle-registration` 원장을 더 이상 사용할 필요가 없는 경우 [7단계(선택 사항): 리소스 정리](getting-started-step-7.md)로 진행하세요.

# 7단계(선택 사항): 리소스 정리
<a name="getting-started-step-7"></a>

**중요**  
지원 종료 알림: 기존 고객은 07/31/2025에 지원이 종료될 때까지 Amazon QLDB를 사용할 수 있습니다. 자세한 내용은 [Amazon QLDB 원장을 Amazon Aurora PostgreSQL로 마이그레이션](https://aws.amazon.com/blogs/database/migrate-an-amazon-qldb-ledger-to-amazon-aurora-postgresql/)을 참조하세요.

`vehicle-registration` 원장을 계속 사용할 수 있습니다. 그러나 더 이상 필요하지 않은 경우 삭제해야 합니다.

원장에 대해 삭제 방지가 활성화된 경우 먼저 비활성화해야 QLDB API, AWS Command Line Interface (AWS CLI) 또는 QLDB 콘솔을 사용하여 원장을 삭제할 수 있습니다.

**원장을 삭제하려면**

1. [https://console.aws.amazon.com/qldb](https://console.aws.amazon.com/qldb)에서 Amazon QLDB 콘솔을 엽니다.

1. 탐색 창에서 **원장**을 선택합니다.

1. 이 원장에 대해 삭제 방지가 활성화된 경우 먼저 이를 비활성화해야 합니다.

   원장 목록에서 `vehicle-registration`을 선택한 다음 **원장 편집**을 선택합니다.

1. **원장 편집** 페이지에서 **삭제 방지**를 해제한 다음 **변경 사항 확인**을 선택합니다.

1. 원장 목록에서 `vehicle-registration`을 다시 선택한 다음 **삭제**를 선택합니다.

1. 제공된 필드에 **delete vehicle-registration**을 입력하여 이를 확인합니다.

QLDB에서의 원장 작업에 대한 자세한 내용은 [Amazon QLDB 시작하기: 다음 단계](getting-started-next-steps.md)을 참조하세요.

# Amazon QLDB 시작하기: 다음 단계
<a name="getting-started-next-steps"></a>

**중요**  
지원 종료 알림: 기존 고객은 07/31/2025에 지원이 종료될 때까지 Amazon QLDB를 사용할 수 있습니다. 자세한 내용은 [Amazon QLDB 원장을 Amazon Aurora PostgreSQL로 마이그레이션](https://aws.amazon.com/blogs/database/migrate-an-amazon-qldb-ledger-to-amazon-aurora-postgresql/)을 참조하세요.

Amazon QLDB 사용에 대한 자세한 내용은 다음 주제를 참조하세요.
+ [Amazon QLDB에서 데이터 및 기록 작업](working-with-data.md)
+ [Amazon QLDB 드라이버 시작하기](getting-started-driver.md)
+ [Amazon QLDB 동시성 모델](concurrency.md)
+ [Amazon QLDB에서 저널 데이터 내보내기](export-journal.md)
+ [Amazon QLDB에서 저널 데이터 스트리밍](streams.md)
+ [Amazon QLDB에서의 데이터 확인](verification.md)
+ [Amazon QLDB PartiQL 참조](ql-reference.md)