Dynamo DB CRUD
테이블 이름과 기본키를 설정한다(기본키는 고유한 값이어야 함)
하지만 파티션 키인 "employee_name"이 중복될 경우(회사 안에 같은 이름을 가진 직원이 존재)가 있으므로 정렬 키를 추가로 사용하여 "name + id"로 고유한 아이디를 만들 수 있다
테이블이 만들어졌으면 "항목"탭에 있는 "항목 만들기"를 클릭한다
테이블 만들기에서 설정했던 기본키(파티션 키 + 정렬 키)가 이미 있는 것을 볼 수 있다. 이 2개의 값은 기본키에 해당하기 때문에 항목을 만들 때 꼭 입력해야 하는 필수 항목이다
employee_name에는 "Tom", employee_id에는 100을 입력하고 저장을 클릭한다
테이블에 항목이 만들어진 것을 확인할 수 있다
이번에는 새로운 속성을 추가하여 항목을 만들어보자
항목 만들기를 클릭하고 들어가서 속성 옆에 있는 +모양을 클릭하면 Append, Insert, Remove 3가지 메뉴가 뜨는데 Append를 클릭한다
새로 만들 속성의 타입을 선택한다(String)
새로운 속성의 이름을 "department"로 입력하고 값("sales")을 입력한다
"department" 속성이 추가된 항목이 만들어진 것을 확인할 수 있다
이번에는 "age" 속성을 추가하여 항목을 만들어보자
위와 같은 방법으로 진행한다
"age"속성이 추가된 것을 확인할 수 있다
여기서 중요한 점은 NoSQL에서는 데이터를 식별하는 기본키 값(employee_name과 employee_id) 외에는 데이터의 형식이 자유로우며, 모든 속성에 값이 있을 필요가 없고 "NULL"로 처리할 필요가 없다는 점이다
Tom의 department 속성에 데이터를 수정하거나 삽입하고 싶다면 Tom을 클릭하여 항목편집에서 department 속성을 추가하고 값을 입력하면 된다
Tom의 department 속성에도 값(accounting)이 추가된 것을 볼 수 있다
NoSQL 쿼리를 해보자
스캔은 조건값이 맞는 데이터를 찾을 때까지 모든 데이터를 탐색하기 때문에 조건값이 없다면 모든 데이터를 찾는다
*age가 20보다 큰 사람을 조회해보자
스캔으로 설정한 다음 [필터 추가]를 클릭하고 필터에 원하는 속성과 속성타입 조건값들을 입력한 뒤 [검색 시작]을 클릭한다
조건에 맞는 레코드가 출력되었다
쿼리는 기본키를 입력하여 데이터를 검색하는 방식으로 필터 추가를 통해 기본키외에도 다른 속성 조건들을 추가해서 검색할 수 있다
인덱스를 생성하는 이유는 기본키(여기서는 employee_name, employee_id)외의 속성(여기서는 department)을 찾기 위해서 스캔을 해야하는데 이 때 전체 데이터를 검색하기 때문에 시간이 많이 걸린다. 인덱스를 생성하면 자주 찾는 속성을 기본키(여기서는 department)로 하는 클론 테이블을 만들어서 쿼리를 이용하면 키-값을 찾아 데이터를 검색하기 때문에 기존 테이블에서 스캔으로 전체 데이터를 검색하는 것보다 처리 용량이 더 적다
파티션 키가 "department"인 인덱스를 생성한다. 인덱스에서 만든 테이블에서는 "department"가 기본키이기 때문에 기존의 테이블에서 "department"가 포함되지 않은 항목들은 가져올 수 없다
기존의 테이블([표] employees: ...)에서 인덱스(department-index)로 변경한다
스캔을 선택하고 [검색 시작]을 누르면 "department" 속성이 없는 Sally 항목은 조회되지 않는 것을 확인할 수 있다
쿼리는 키-값을 찾아 데이터를 검색하는 방법이고 스캔은 모든 데이터를 검색하는 방법이므로, 원 테이블에서 스캔으로 "department"를 찾는 것보다 인덱스에서 쿼리로 찾는 것이 처리 용량이 더 적다