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

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

데이터 쿼리

중요

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

사용자 뷰는 사용자 데이터의 삭제되지 않은 최신 버전만 반환합니다. Amazon의 기본 보기입니다QLDB. 즉, 데이터만 쿼리하려는 경우에는 특별한 한정자가 필요하지 않습니다.

다음 쿼리 예제의 구문 및 파라미터에 대한 자세한 내용은 Amazon QLDB PartiQL 참조를 참조하십시오SELECT.

기본 쿼리

기본 SELECT 쿼리는 테이블에 삽입한 문서를 반환합니다.

주의

인덱싱된 조회 QLDB 없이 쿼리를 실행하면 전체 테이블 스캔이 호출됩니다. PartiQL은 호환되므로 이러한 쿼리를 지원합니다. SQL 하지만 프로덕션 사용 사례에서는 테이블 스캔을 실행하지 마세요. QLDB 테이블 스캔은 동시성 충돌 및 트랜잭션 시간 초과를 포함하여 대규모 테이블에서 성능 문제를 일으킬 수 있습니다.

인덱싱된 필드 또는 문서 ID(예: WHERE indexedField = 123 또는 WHERE indexedField IN (456, 789))에서 동등 연산자를 사용하여 WHERE 조건자 절이 포함된 문을 실행하는 것이 좋습니다. 자세한 내용은 쿼리 성능 최적화을 참조하세요.

다음 쿼리는 이전에 인덱스가 포함된 테이블 생성 및 문서 삽입에 삽입한 차량 등록 문서에 대한 결과를 보여줍니다. 결과 순서는 구체적이지 않으며 각 SELECT 쿼리마다 다를 수 있습니다. 어떤 QLDB 쿼리에서든 결과 순서에 의존해서는 안 됩니다.

SELECT * FROM VehicleRegistration WHERE LicensePlateNumber IN ('LEWISR261LL', 'CA762X')
{ 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" }] } }, { VIN: "KM8SRDHF6EU074761", LicensePlateNumber: "CA762X", State: "WA", City: "Kent", PendingPenaltyTicketAmount: 130.75, ValidFromDate: 2017-09-14T, ValidToDate: 2020-06-25T, Owners: { PrimaryOwner: { PersonId: "IN7MvYtUjkp1GMZu0F6CG9" }, SecondaryOwners: [] } }
SELECT * FROM Vehicle WHERE VIN IN ('1N4AL11D75C109151', 'KM8SRDHF6EU074761')
{ 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" }
중요

PartiQL에서는 작은따옴표를 사용하여 데이터 조작 언어 DML () 또는 쿼리문의 문자열을 나타냅니다. 하지만 QLDB 콘솔과 QLDB 셸은 Amazon Ion 텍스트 형식으로 쿼리 결과를 반환하므로 문자열이 큰따옴표로 묶여 있습니다.

이 구문을 사용하면 PartiQL 쿼리 언어가 호환성을 유지하고 Amazon Ion 텍스트 형식이 호환성을 SQL 유지할 수 있습니다. JSON

프로젝션 및 필터

프로젝션(대상 SELECT) 및 기타 표준 필터(WHERE 절)를 수행할 수 있습니다. 다음 쿼리는 VehicleRegistration 테이블에 있는 문서 필드의 하위 집합을 반환합니다. 이는 다음 기준에 따라 차량을 필터링합니다.

  • 문자열 필터 - 시애틀에 등록되어 있습니다.

  • 십진수 필터 - 보류 중인 페널티 티켓 금액이 100.0보다 적습니다.

  • 날짜 필터 - 2019년 9월 4일 이후에 유효한 등록일을 갖습니다.

SELECT r.VIN, r.PendingPenaltyTicketAmount, r.Owners FROM VehicleRegistration AS r WHERE r.VIN IN ('1N4AL11D75C109151', 'KM8SRDHF6EU074761') AND r.City = 'Seattle' --string AND r.PendingPenaltyTicketAmount < 100.0 --decimal AND r.ValidToDate >= `2019-09-04T` --timestamp with day precision
{ VIN: "1N4AL11D75C109151", PendingPenaltyTicketAmount: 90.25, Owners: { PrimaryOwner: { PersonId: "294jJ3YUoH1IEEm8GSabOs" }, SecondaryOwners: [{ PersonId: "5Ufgdlnj06gF5CWcOIu64s" }] } }

조인

내부 조인 쿼리를 작성할 수도 있습니다. 다음 예제는 등록된 차량의 속성과 함께 모든 등록 문서를 반환하는 암시적 내부 조인 쿼리를 보여줍니다.

SELECT * FROM VehicleRegistration AS r, Vehicle AS v WHERE r.VIN = v.VIN AND r.VIN IN ('1N4AL11D75C109151', 'KM8SRDHF6EU074761')
{ 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" }] }, Type: "Sedan", Year: 2011, Make: "Audi", Model: "A5", Color: "Silver" }, { VIN: "KM8SRDHF6EU074761", LicensePlateNumber: "CA762X", State: "WA", City: "Kent", PendingPenaltyTicketAmount: 130.75, ValidFromDate: 2017-09-14T, ValidToDate: 2020-06-25T, Owners: { PrimaryOwner: { PersonId: "IN7MvYtUjkp1GMZu0F6CG9" }, SecondaryOwners: [] }, Type: "Sedan", Year: 2015, Make: "Tesla", Model: "Model S", Color: "Blue" }

또는 다음과 같이 명시적 구문으로 동일한 내부 조인 쿼리를 작성할 수 있습니다.

SELECT * FROM VehicleRegistration AS r INNER JOIN Vehicle AS v ON r.VIN = v.VIN WHERE r.VIN IN ('1N4AL11D75C109151', 'KM8SRDHF6EU074761')

중첩된 데이터

PartiQL을 사용하여 문서의 중첩된 QLDB 데이터를 쿼리할 수 있습니다. 다음 예제는 중첩된 데이터를 평면화하는 상관 하위 쿼리를 보여줍니다. 여기서 이 @ 문자는 엄밀히 따지자면 선택 사항입니다. 하지만 이는 Owners이라는 다른 컬렉션(있는 경우)이 아니라 VehicleRegistration 안에 Owners 구조를 적용하고자 한다는 것을 명시적으로 나타냅니다.

SELECT r.VIN, o.SecondaryOwners FROM VehicleRegistration AS r, @r.Owners AS o WHERE r.VIN IN ('1N4AL11D75C109151', 'KM8SRDHF6EU074761')
{ VIN: "1N4AL11D75C109151", SecondaryOwners: [{ PersonId: "5Ufgdlnj06gF5CWcOIu64s" }] }, { VIN: "KM8SRDHF6EU074761", SecondaryOwners: [] }

다음은 내부 조인 외에도 중첩된 데이터를 프로젝션하는 SELECT 목록의 하위 쿼리를 보여줍니다.

SELECT v.Make, v.Model, (SELECT VALUE o.PrimaryOwner.PersonId FROM @r.Owners AS o) AS PrimaryOwner FROM VehicleRegistration AS r, Vehicle AS v WHERE r.VIN = v.VIN AND r.VIN IN ('1N4AL11D75C109151', 'KM8SRDHF6EU074761')
{ Make: "Audi", Model: "A5", PrimaryOwner: ["294jJ3YUoH1IEEm8GSabOs"] }, { Make: "Tesla", Model: "Model S", PrimaryOwner: ["IN7MvYtUjkp1GMZu0F6CG9"] }

다음 쿼리는 VehicleRegistration 문서에 대해 Owners.SecondaryOwners 목록에 있는 각 사람의 PersonId 및 인덱스(서수) 번호를 반환합니다.

SELECT s.PersonId, owner_idx FROM VehicleRegistration AS r, @r.Owners.SecondaryOwners AS s AT owner_idx WHERE r.VIN = '1N4AL11D75C109151'
{
    PersonId: "5Ufgdlnj06gF5CWcOIu64s",
    owner_idx: 0
}

문서 메타데이터를 쿼리하는 방법을 알아보려면 문서 메타데이터 쿼리 섹션으로 이동하세요.