

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

# 문서 메타데이터 쿼리
<a name="working.metadata"></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/)을 참조하세요.

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

QLDB는 문서 ID 및 버전 번호 외에도 각 문서에 대해 시스템에서 생성한 다른 메타데이터를 테이블에 저장합니다. 이 메타데이터에는 트랜잭션 정보, 저널 속성 및 문서의 해시 값이 포함됩니다.

시스템에서 할당한 모든 ID는 Base62로 인코딩된 문자열로 각각 표시되는 범용 고유 식별자(UUID)입니다. 자세한 내용은 [Amazon QLDB의 고유 ID](working.unique-id.md)을 참조하세요.

**Topics**
+ [커밋된 뷰](#working.metadata.committed)
+ [커밋된 뷰와 사용자 뷰 조인](#working.metadata.committed-joins)

## 커밋된 뷰
<a name="working.metadata.committed"></a>

*커밋된 뷰*를 쿼리하여 문서 메타데이터에 액세스할 수 있습니다. 이 뷰는 사용자 테이블에 직접 해당하는 시스템 정의 테이블의 문서를 반환합니다. 여기에는 데이터와 시스템에서 생성한 메타데이터의 최신 커밋되고 삭제되지 않은 개정이 포함됩니다. 이 뷰를 쿼리하려면 쿼리의 테이블 이름에 접두사 `_ql_committed_`를 추가합니다. (접두사 `_ql_`는 QLDB에서 시스템 객체용으로 예약되어 있습니다.)

```
SELECT * FROM _ql_committed_VehicleRegistration AS r
WHERE r.data.VIN IN ('1N4AL11D75C109151', 'KM8SRDHF6EU074761')
```

이전에 [인덱스가 포함된 테이블 생성 및 문서 삽입](working.create.md)에 삽입한 데이터를 사용하여 이 쿼리의 출력에는 삭제되지 않은 각 문서의 최신 개정 버전에 대한 시스템 내용이 표시됩니다. 시스템 문서의 메타데이터는 `metadata` 필드에 중첩되어 있고 사용자 데이터는 `data` 필드에 중첩되어 있습니다.

```
{
    blockAddress:{
        strandId:"JdxjkR9bSYB5jMHWcI464T",
        sequenceNo:14
    },
    hash:{{wCsmM6qD4STxz0WYmE+47nZvWtcCz9D6zNtCiM5GoWg=}},
    data:{
        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" }]
        }
    },
    metadata:{
        id:"3Qv67yjXEwB9SjmvkuG6Cp",
        version:0,
        txTime:2019-06-05T20:53:321d-3Z,
        txId:"HgXAkLjAtV0HQ4lNYdzX60"
    }
},
{
    blockAddress:{
        strandId:"JdxjkR9bSYB5jMHWcI464T",
        sequenceNo:14
    },
    hash:{{wPuwH60TtcCvg/23BFp+redRXuCALkbDihkEvCX22Jk=}},
    data:{
        VIN: "KM8SRDHF6EU074761",
        LicensePlateNumber: "CA762X",
        State: "WA",
        City: "Kent",
        PendingPenaltyTicketAmount: 130.75,
        ValidFromDate: 2017-09-14T,
        ValidToDate: 2020-06-25T,
        Owners: {
            PrimaryOwner: { PersonId: "IN7MvYtUjkp1GMZu0F6CG9" },
            SecondaryOwners: []
        }
    },
    metadata:{
        id:"JOzfB3lWqGU727mpPeWyxg",
        version:0,
        txTime:2019-06-05T20:53:321d-3Z,
        txId:"HgXAkLjAtV0HQ4lNYdzX60"
    }
}
```

**커밋된 뷰 필드**
+ `blockAddress` - 문서 개정이 커밋된 원장 저널의 블록 위치입니다. 암호화 검증에 사용할 수 있는 주소에는 다음과 같은 두 개의 필드가 있습니다.
  + `strandId` - 블록을 포함하는 저널 스트랜드의 고유 ID입니다.
  + `sequenceNo` - 스트랜드 내 블록 위치를 지정하는 인덱스 번호입니다.
**참고**  
이 예제의 두 문서는 동일한 `sequenceNo`의 `blockAddress`를 가지고 있습니다. 이러한 문서는 단일 트랜잭션(이 경우에는 단일 명령문) 내에 삽입되었으므로 동일한 블록에서 커밋되었습니다.
+ `hash` - 문서 개정을 고유하게 나타내는 SHA-256 Ion 해시 값입니다. 해시는 개정판의 `data` 및 `metadata` 필드를 포함하며 [암호화 검증](verification.md)에 사용할 수 있습니다.
+ `data` - 문서의 사용자 데이터 속성입니다.

  개정을 수정하면 이 `data` 구조가 `dataHash` 필드로 대체되며 필드의 값은 제거된 `data` 구조의 Ion 해시입니다.
+ `metadata` - 문서의 메타데이터 속성입니다.
  + `id` - 시스템에서 할당한 문서의 고유 ID입니다.
  + `version` - 문서의 버전 번호입니다. 이는 0으로 시작하는 정수로, 문서가 개정될 때마다 증가합니다.
  + `txTime` - 문서 개정이 저널에 커밋된 시점의 타임스탬프입니다.
  + `txId` - 문서 개정을 커밋한 트랜잭션의 고유 ID입니다.

## 커밋된 뷰와 사용자 뷰 조인
<a name="working.metadata.committed-joins"></a>

커밋된 뷰의 테이블을 사용자 뷰의 테이블과 조인하는 쿼리를 작성할 수 있습니다. 예를 들어 한 테이블의 `id` 문서를 다른 테이블의 사용자 정의 필드와 조인하고자 할 수 있습니다.

다음 쿼리는 `PersonId` 및 문서 `id` 필드에서 각각 `DriversLicense` 및 `Person`라는 두 테이블을 조인하며, 후자에 대해 커밋된 뷰를 사용합니다.

```
SELECT * FROM DriversLicense AS d INNER JOIN _ql_committed_Person AS p
ON d.PersonId = p.metadata.id
WHERE p.metadata.id = '1CWScY2qHYI9G88C2SjvtH'
```

기본 사용자 뷰에서 문서 ID 필드를 쿼리하는 방법을 알아보려면 [BY 절을 사용하여 문서 ID 쿼리하기](working.metadata.by-clause.md)을 참조하세요.