SQL Workbench
Workbench는 DynamoDB 테이블 전반에 진짜 JOIN, GROUP BY, 집계 쿼리를 실행하는
SQL 작성 탭입니다 — PartiQL이 할 수 없는 일들이죠. 이것은
DynamoDB의 액세스 패턴 규칙 안에서 동작하는 SQL입니다. 여러분이 SELECT 하나를
작성하면 컴파일러가 모든 조인이 실제 키나 인덱스를 통해 읽는지 확인하고, 조인된 행을
구체화한 뒤, 그 위에서 나머지 문 — 필터, 집계, GROUP BY, ORDER BY — 을
실행합니다.
사이드바 오른쪽 클릭 메뉴(New Workbench), ⌘⌥B 단축키, 또는 File → New Workbench로 열 수 있습니다. SQL을 작성하고 ⌘↩를 눌러 실행하세요.
편집기는 테이블 이름과, 커서 위치의 SQL 문맥에 맞는 인덱싱된 필드·값을 제안합니다. 로컬 인덱스에 무엇이 들어 있고 어떻게 새로 고치는지는 테이블 통계를 참고하세요.
SELECT c.email, COUNT(*) AS orders, SUM(o.total) AS revenue
FROM orders o
JOIN customers c ON o.customerId = c.id
GROUP BY c.email
ORDER BY revenue DESC
지원하는 것
다음을 포함하는 단일 SELECT 문입니다.
JOIN ... ON ...— 테이블 간INNER및LEFT조인.- 집계 —
COUNT,SUM,AVG,MIN,MAX, 그리고GROUP BY와HAVING. WHERE,DISTINCT,CASE,CAST,ORDER BY.
집계 쿼리가 아직 스트리밍 중일 때는 해당 컬럼에 partial 배지가 표시됩니다 — 페이지가
더 도착할수록 숫자가 정밀해집니다.
액세스 패턴 규칙
DynamoDB에는 서버 측 조인이 없습니다. Workbench 컴파일러는 DynamoDB가 할 수 있는
일만 허용합니다. 각 JOIN의 대상 쪽 속성은 대상 테이블의 파티션 키 또는
파티션 키여야 하며, 그래야 모든 조회가 실제 쿼리가 되고 행마다 숨겨진
전체 테이블 이 일어나지 않습니다.
조인이 키가 아닌 속성을 가리키면 편집기가 밑줄을 긋고 이유를 설명합니다. 다른 컴파일러 거부 사유도 정확한 검증 물결선으로 표시됩니다. Workbench는 빠른 수정을 제공하지 않습니다.
RIGHT/FULL OUTER/CROSS조인과 콤마 조인(INNER/LEFT만 가능).- 서브쿼리, CTE(
WITH),UNION/INTERSECT/EXCEPT. - 윈도 함수(
OVER), 여러 개의 문,SELECT가 아닌 모든 것.
읽기 전용
Workbench는 항상 읽기 전용입니다. 편집도, 스테이징도, 일괄 삭제도 없습니다 — 분석용 화면입니다. 쿼리를 실행해도 테이블에 쓰는 일은 절대 없습니다.
식별자는 표준 SQL 대소문자 규칙을 따릅니다. 따옴표 없는 이름은 대소문자를 구분하지
않고 일치하며(WHERE PLATFORM이 platform을 찾습니다), 대소문자를 정확히
맞추려면 이름을 따옴표나 백틱으로 감싸세요.
쿼리 비용 미리보기
계획을 사용할 수 있는 경우 미리보기가 Scan인지 Query인지와 사용된 인덱스를 알려
줍니다. RCU 추정치는 테이블 메타데이터가 뒷받침할 때만 표시됩니다.
이 상태 표시줄은 Workbench와 PartiQL에 나타나며, 비주얼 필터 행에는 나타나지 않습니다. 빈 SQL, 컴파일 실패, DML, 파싱할 수 없는 PartiQL에는 계획이 없으므로 비용 표시줄도 나타나지 않습니다.
일반적인 파티션 Query는 "cost depends on matched items"를 표시하고 RCU는 보여 주지
않습니다. 포인트 읽기와 크기를 알 수 있는 Scan 역시 뒷받침하는 DescribeTable
메타데이터가 없으면 RCU를 내지 않습니다.
포인트 읽기는 그래도 "≈1 item"을 표시합니다. 항목 수를 아는 Scan은 테이블 추정치를
보여 줄 수 있지만, RCU를 계산하려면 테이블 크기가 바이트 단위로 필요합니다. 둘 중
하나라도 없으면 Scan은 "size unknown"이라고 표시합니다.
Scan 추정치는 실시간 값이 아니라 DynamoDB가 주기적으로 갱신하는 테이블 수치를
사용합니다. 포인트 읽기 분기는 강력한 일관성 기준으로 가격을 매기고, Scan 분기는
최종적 일관성 기준으로 가격을 매깁니다.
Workbench와 PartiQL은 둘 다 최종적 일관성 읽기를 실행합니다. 따라서 포인트 읽기 추정치는 실제 요청 비용의 두 배일 수 있습니다. 모든 수치는 청구서가 아니라 실행 전 힌트로 받아들이세요.
실행, 템플릿, 기록
- Run — 편집기에서 ⌘↩, Run 버튼, 또는 다시 실행하려면 ⌘R. Workbench 탭은 열릴 때 자동으로 실행되지 않습니다. 실행은 언제나 의도적인 행동입니다.
- Run to end — ⌘⇧↩를 누르거나 Run 버튼의 분할 메뉴에서 고르면 한 페이지가 아니라 조인된 전체 결과를 스트리밍합니다. 페이지 상한이 풀리고 쿼리가 소진될 때까지 페이지가 계속 도착합니다. 브레이크는 Stop뿐입니다. 한 번에 끝내고 싶은 대규모 집계에 유용합니다.
- 템플릿 & 저장된 쿼리 — Queries 메뉴에는 시작용 템플릿(전체 선택, 키로 필터링, 그룹별 집계 — Tab으로 이동하는 빈칸 포함)과 Save로 보관한 쿼리가 들어 있습니다. 이름을 붙인 여러분만의 쿼리를 어떤 테이블에서든 재사용할 수 있습니다. 하나를 고르면 편집기 내용이 대체되므로 저장한 그대로 실행됩니다.
- 기록 — 모든 실행이 저장되고(PartiQL의 기록과는 별개입니다), 검색하고 복원할 수 있습니다 — 실패한 실행도 포함되므로 고쳐서 다시 시도할 수 있습니다.
Workbench 탭은 저장되는 스펙입니다 — 이름을 붙이고, ⌘K로 다시 열 수 있으며, 다시 불러와도 살아남습니다. 조인된 결과를 내보낼 수도 있습니다.
Workbench vs Smart Table
둘은 같은 조인 엔진을 사용합니다. 같은 것을 만드는 두 가지 방식입니다.
- Workbench는 SQL 레인입니다 — 쿼리를 입력하면 집계와 해석된 속성을 얻습니다.
- Smart Table은 비주얼 레인입니다 — 캔버스에 조인을 그리고 조인된 행을 일반 테이블처럼 탐색합니다.


