Item은 Attributes 또는 key/value pair의 집합체이다. SQL과 에서 Row로 일단 개념을 잡으면 쉽겠다.
Primary Key는 Partition Key와 Sort Key로 이루어 진다.
위에서 AccountId는 Partition Key DateOfCreation은 Sortkey로 구성하고 이 두가지가 합쳐져 Primary Key가 되는 것이다. Primary Key는 중복되지 않는 유일한 SQL에서 ID같은 개념이 된다.
위에 AccountId와 DateOfCreation이 합쳐져 Primary Key가 됨으로 SQL과 달리 -----> AccountId가 중복이 가능하다는 것이다.
SORT KEY는 참 재미있는데 Range라고 생각하면 된다. 즉 query를 보낼때 Account ID가 1인 10월 부터 12월까지 생성한Data를 쿼리할 때 데이터 테이블 전체를 다 뒤져서 가지고 오는 개념이 아니라 이러한 partition key와 sort key를 이용해서 해당되는 부분만 쏙 빼서 가지고 오는 것이다.그렇기에 DynamoDB로 빠른 Query를 이룰수 있는것이다.
Global Index: 이후에 좀 더 상세히 설명하겠지만 미리 찾을 아이템의 주소를 설정해 놓는것이라 이해하면 좀 더 이해가 쉽겠다. 예를 들어 아래 예시처럼 ProviderInvoiceId-Index를 설정해 놓으면 맨 오른쪽에 Item Count에서 알수 있듯이 이미 AWS가 찾아 놓는것이다. 그렇기에 query를 할때마다 전체 테이블을 미리 뒤질 필요가 없어 빠른 query를 만들수 있는것이다.
중요: 다시 한번 강조하지만 오랫동안 SQL에 습관이 강하게 들었던 사람이라면 시스템을 Architecture을 설계할때 충분히 연습해보고 설계를 하는것이 중요할 듯 하다.