개정 기록 쿼리 - Amazon Quantum 원장 데이터베이스(Amazon QLDB)

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

개정 기록 쿼리

중요

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

Amazon은 모든 문서의 전체 기록을 테이블에 QLDB 저장합니다. 내장된 기록 함수를 쿼리하면 문서 업데이트 및 삭제에서 이전에 삽입, 업데이트 및 삭제한 차량 등록 문서의 세 가지 개정본을 모두 볼 수 있습니다.

기록 함수

의 history 함수는 테이블의 시스템 정의 뷰에서 수정 내용을 반환하는 PartiQL QLDB 확장입니다. 따라서 커밋된 뷰와 동일한 스키마에 데이터와 관련 메타데이터가 모두 포함됩니다.

구문

SELECT * FROM history( table_name | 'table_id' [, `start-time` [, `end-time` ] ] ) AS h [ WHERE h.metadata.id = 'id' ]
인수
table_name | 'table_id'

테이블 이름 또는 테이블 ID입니다. 테이블 이름은 큰따옴표로 표시하거나 따옴표 없이 표시할 수 있는 PartiQL 식별자입니다. 테이블 ID는 작은따옴표로 묶여야 하는 문자열 리터럴입니다. 테이블 사용에 대한 자세한 내용은 을 참조하십시오. IDs 비활성 테이블의 기록 쿼리

`start-time`, `end-time`

(선택 사항)모든 개정이 활성화된 시간 범위를 지정합니다. 이러한 파라미터는 개정이 트랜잭션에서 저널에 커밋된 시간 범위를 지정하지 않습니다.

시작 및 종료 시간은 백틱(`...`)으로 표시할 수 있는 Ion 타임스탬프 리터럴입니다. 자세한 내용은 아마존에서 PartiQL을 사용하여 이온 쿼리하기 QLDB 섹션을 참조하세요.

이 시간 파라미터는 다음과 같은 동작을 합니다.

  • 시작 시간종료 시간이 모두 포함됩니다. ISO8601 날짜 및 시간 형식이고 협정 세계시 () 여야 합니다. UTC

  • 시작 시간종료 시간보다 작거나 같아야 하며 임의의 과거 날짜가 될 수 있습니다.

  • 종료 시간은 현재 UTC 날짜 및 시간보다 작거나 같아야 합니다.

  • 시작 시간은 지정하고 종료 시간은 지정하지 않는 경우 쿼리는 종료 시간을 현재 날짜 및 시간으로 기본 설정합니다. 둘 다 지정하지 않으면 쿼리는 전체 기록을 반환합니다.

'id'

(선택 사항)수정 기록을 쿼리하려는 문서 ID로, 작은 따옴표로 표시됩니다.

작은 정보

가장 좋은 방법은 날짜 범위(시작 시간종료 시간)와 문서 ID(metadata.id)를 모두 사용하여 기록 쿼리를 한정하는 것입니다. QLDB에서는 모든 SELECT 쿼리가 트랜잭션에서 처리되며 트랜잭션 제한 시간이 적용됩니다.

기록 쿼리는 테이블에 만든 인덱스를 사용하지 않습니다. QLDB기록은 문서 ID로만 색인되며 지금은 추가 기록 색인을 만들 수 없습니다. 시작 시간과 종료 시간을 포함하는 기록 쿼리는 날짜 범위 한정이라는 이점을 갖습니다.

기록 쿼리 예제

차량 등록 문서의 내역을 쿼리하려면 이전에 문서 업데이트 및 삭제에 저장한 id을 사용하세요. 예를 들어, 다음 기록 쿼리는 2019-06-05T00:00:00Z2019-06-05T23:59:59Z 사이에 ADR2Ll1fGsU4Jr4EqTdnQF 활성화된 문서 ID의 모든 개정 내용을 반환합니다.

참고

시작 및 종료 시간 파라미터는 개정이 트랜잭션에서 저널에 커밋된 시간 범위를 지정하지 않는다는 점을 기억하세요. 예를 들어 2019-06-05T00:00:00Z 이전에 개정이 커밋되었고 해당 시작 시간 이후에도 활성 상태를 유지한 경우 이 예제 쿼리는 결과에 해당 개정 내용을 반환합니다.

id, 시작 시간 및 종료 시간을 적절하게 사용자 고유의 값으로 바꾸세요.

SELECT * FROM history(VehicleRegistration, `2019-06-05T00:00:00Z`, `2019-06-05T23:59:59Z`) AS h WHERE h.metadata.id = 'ADR2Ll1fGsU4Jr4EqTdnQF' --replace with your id

쿼리 결과는 다음과 비슷한 모습이어야 합니다.

{ blockAddress:{ strandId:"JdxjkR9bSYB5jMHWcI464T", sequenceNo:14 }, hash:{{B2wYwrHKOWsmIBmxUgPRrTx9lv36tMlod2xVvWNiTbo=}}, data: { VIN: "1HVBBAANXWH544237", LicensePlateNumber: "LS477D", State: "WA", City: "Tacoma", PendingPenaltyTicketAmount: 42.20, ValidFromDate: 2011-10-26T, ValidToDate: 2023-09-25T, Owners: { PrimaryOwner: { PersonId: "KmA3XPKKFqYCP2zhR3d0Ho" }, SecondaryOwners: [] } }, metadata:{ id:"ADR2Ll1fGsU4Jr4EqTdnQF", version:0, txTime:2019-06-05T20:53:321d-3Z, txId:"HgXAkLjAtV0HQ4lNYdzX60" } }, { blockAddress:{ strandId:"JdxjkR9bSYB5jMHWcI464T", sequenceNo:17 }, hash:{{LGSFZ4iEYWZeMwmAqcxxNyT4wbCtuMOmFCj8pEd6Mp0=}}, data: { VIN: "1HVBBAANXWH544237", LicensePlateNumber: "LS477D", State: "WA", PendingPenaltyTicketAmount: 42.20, ValidFromDate: 2011-10-26T, ValidToDate: 2023-09-25T, Owners: { PrimaryOwner: { PersonId: "KmA3XPKKFqYCP2zhR3d0Ho" }, SecondaryOwners: [] }, City: "Bellevue" }, metadata:{ id:"ADR2Ll1fGsU4Jr4EqTdnQF", version:1, txTime:2019-06-05T21:01:442d-3Z, txId:"9cArhIQV5xf5Tf5vtsPwPq" } }, { blockAddress:{ strandId:"JdxjkR9bSYB5jMHWcI464T", sequenceNo:19 }, hash:{{7bm5DUwpqJFGrmZpb7h9wAxtvggYLPcXq+LAobi9fDg=}}, metadata:{ id:"ADR2Ll1fGsU4Jr4EqTdnQF", version:2, txTime:2019-06-05T21:03:76d-3Z, txId:"9GslbtDtpVHAgYghR5FXbZ" } }

출력에는 각 항목이 수정된 시기와 어떤 트랜잭션에 의해 수정되었는지에 대한 세부 정보를 제공하는 메타데이터 속성이 포함됩니다. 이 데이터에서 다음을 확인할 수 있습니다.

  • 이 문서는 시스템이 할당한 idADR2Ll1fGsU4Jr4EqTdnQF로 고유하게 식별됩니다 이는 UUID Base62로 인코딩된 문자열로 표시됩니다.

  • INSERT 명령문을 사용하면 문서의 초기 개정본(버전 0)이 만들어집니다.

  • 이후 업데이트될 때마다 동일한 문서 id와 증가된 버전 번호를 사용하여 새 개정을 생성합니다.

  • txId 필드는 각 개정을 커밋한 트랜잭션을 나타내며 txTime은 각 개정이 커밋된 시기를 보여줍니다.

  • DELETE 명령문은 문서의 새로운 최종 개정본을 생성합니다. 이 최종 개정본에는 메타데이터만 있습니다.

개정 버전을 영구 삭제하는 방법을 알아보려면 문서 개정본 수정하기으로 이동하세요.