문서 메타데이터 쿼리 - 아마존 퀀텀 레저 데이터베이스 (아마존QLDB)

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

문서 메타데이터 쿼리

중요

지원 종료 알림: 기존 고객은 2025년 7월 31일 지원이 종료될 QLDB 때까지 Amazon을 사용할 수 있습니다. 자세한 내용은 아마존 QLDB 원장을 Amazon Aurora SQL Postgre로 마이그레이션을 참조하십시오.

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

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

시스템에서 IDs 할당되는 모든 식별자는 Base62로 인코딩된 문자열로 표시되는 범용 고유 식별자 (UUID) 입니다. 자세한 내용은 아마존 IDs 유일의 제품 QLDB 단원을 참조하십시오.

커밋된 뷰

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

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

이전에 인덱스가 포함된 테이블 생성 및 문서 삽입에 삽입한 데이터를 사용하여 이 쿼리의 출력에는 삭제되지 않은 각 문서의 최신 개정 버전에 대한 시스템 내용이 표시됩니다. 시스템 문서의 메타데이터는 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 - 스트랜드 내 블록 위치를 지정하는 인덱스 번호입니다.

    참고

    이 예제의 두 문서는 동일한 sequenceNoblockAddress를 가지고 있습니다. 이러한 문서는 단일 트랜잭션(이 경우에는 단일 명령문) 내에 삽입되었으므로 동일한 블록에서 커밋되었습니다.

  • hash— 문서 SHA 개정을 고유하게 나타내는 -256 Ion 해시 값. 해시는 개정판의 datametadata 필드를 포함하며 암호화 검증에 사용할 수 있습니다.

  • data - 문서의 사용자 데이터 속성입니다.

    개정을 수정하면 이 data 구조가 dataHash 필드로 대체되며 필드의 값은 제거된 data 구조의 Ion 해시입니다.

  • metadata - 문서의 메타데이터 속성입니다.

    • id - 시스템에서 할당한 문서의 고유 ID입니다.

    • version - 문서의 버전 번호입니다. 이는 0으로 시작하는 정수로, 문서가 개정될 때마다 증가합니다.

    • txTime - 문서 개정이 저널에 커밋된 시점의 타임스탬프입니다.

    • txId - 문서 개정을 커밋한 트랜잭션의 고유 ID입니다.

커밋된 뷰와 사용자 뷰 조인

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

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

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 쿼리하기을 참조하세요.