Title : 빅데이터를 위한 데이터베이스
1. AWS 데이터베이스
AWS의 데이터베이스 서비스는 '완전 관리형' 이다.
· Amazon RDS : 관계형 데이터베이스
MS-SQL, PostgreSQL, MySQL, Oracle 등
· Amazon DynamoDB : NoSQL(Non-SQL) 데이터베이스
SQL을 사용하지 않고, 관계가 맺어져있지 않음, (ex. MangoDB, FireBase 등 NoSQL의 종류들)
· Amazon ElasticCache : 인-메모리 데이터베이스
메모리 안에서 동작함, 속도가 매우 빠른 서비스 이용 시 사용(비쌈)
· Amazon Redshift : 데이터 웨어하우스
의사 결정을 도와주기 위해 데이터 분석을 함
- 데이터베이스 운영 방식
ㄴ 직접 운영 : 하드웨어, 운영체제, 보안, 업데이트, 백업, 복제 등을 관리, but 모든 것을 직접 컨트롤 가능
ㄴ EC2에 설치/운영 : DB와 관련된 업데이트, 패치, 복제, 백업 등을 관리, but 하드웨어, 운영체제 등은 AWS에서 관리
ㄴ AWS 관리형 데이터베이스 : AWS에서 하드웨어부터 DB 운영/관리까지 모두 제공, 백업, 복제 등의 기능을 서비스로 제공, 패치, 업데이트 적용 등 자동으로 제공
2. Amazon RDS
- 관계형 데이터베이스, 완전 관리형 서비스, 빠르고 예측 가능한 성능, 단순하고 빠른 확장
- 낮은 비용 구조, 사용한 만큼 지불, 고가용성을 위한 Multi-AZ 지원, 손쉬운 백업 기능 지원, 사용한 만큼 비용 지불
3. DynamoDB
- 구성요소 : 테이블, 항목, 속성, 기본 키
- 기본 키가 반드시 있어야 함
글로벌 보조 인덱스
- 테이블을 만든 후 추가 가능(PK가 필요함)
- 현재 테이블과 동기화되는 똑 같은 테이블을 만들어 원하는 속성을 기본 키로 설정함
- 인덱싱하기 때문에 개별적인 읽기 용량과 쓰기 용량 필요
쿼리와 스캔 (데이터 탐색 방법)
- 쿼리 : 삽입된 기본키를 기준으로 데이터를 찾음
- 스캔 : 조건 값과 맞는 데이터를 찾을 때까지 데이터를 찾음
[ 실습1 : DynamoDB CRUD ]
CRUD : Create, Read, Update, Delete 권한
[실습1] DynamoDB 실습 (항목 추가 및 수정)
[실습1] DynamoDB 실습 (항목 추가 및 수정)
- 서비스 창에서 데이터베이스에 있는 DynamoDB를 클릭하여 이동한다.
1. 데이터베이스 생성하기
- 서비스 페이지를 가면, 아래와 같은 화면이 뜬다.

- 좌측의 테이블을 클릭하여 들어간다.

- [테이블 생성]을 클릭한다.
- 파티션 키는 기본 키(PK)를 주는 곳이다.
아래와 같이 채워 넣고 테이블을 생성한다. (다른 설정은 아직 필요하지 않으므로 넘어간다.)

- 생성이 완료되면 다음과 같은 화면을 보게 된다.

- 테이블명을 클릭하면 데이터를 넣을 수 있는 화면을 보게 된다.

- 위 화면의 [항목보기] 클릭 시 항목을 볼 수 있는 화면을 보게 된다.
이 페이지에서 항목 생성이 가능하다.

- [항목 생성]을 눌러 항목을 생성한다.
- 앞에서 테이블 생성 시 입력했던 파티션 키와 정렬 키, 키의 데이터 타입이 적혀 있다.

- 다음과 같이 입력 후 항목을 생성한다.

- 그럼 항목 페이지에서 추가한 데이터 확인이 가능하다.
ㄴ 홍길동이라는 하나의 레코드가 들어가 있다.

ㅇ 만약 추가 한 레코드의 값을 수정하고 싶다면??
- 해당 레코드의 이름을 클릭한다.
- 추가하고 싶은 항목이 있다면 [새 속성 추가] 버튼을 눌러 추가할 수 있다.
- 수정 후 [변경 사항 저장] 을 누르면 된다.

- 앞에서 변경한 내용이 적용되어 있다.

- 항목 생성 시 앞에서 추가 한 major 항목은 또 다시 별도로 추가해야 한다.


- 실습을 위해 항목을 더 추가했다.

- 지금까지의 환경은 이렇다.

- 스캔과 쿼리의 차이를 비교하면 다음과 같다.
[스캔] : 조건 없이 검색이 가능
[쿼리] : 파티션 키 값이 필요함 (일치하는 값)
[스캔]


[쿼리]

=> 쿼리는 기본 키 값이 꼭 필요하므로, 검색 필터링에 제한이 있어 주로 스캔을 사용한다.
[실습2] DynamoDB 실습 (글로벌 보조 인덱스 생성)
[실습1-2] DynamoDB 실습 (글로벌 보조 인덱스 생성)
2. 인덱스 생성하기
- [테이블 항목] - [해당 테이블] - [인센스 항목] 선택한다.

- [인덱스 생성] 버튼을 클릭한다.
- 아래 화면은 글로벌 보조 인덱스 생성 페이지이며, 기존 키는 사라지지 않고, 보조 키를 생성하는 것이다.

- 다음과 같이 입력 후, 인덱스를 생성했다.
ㄴ 보조 키로 major(major-index)를 추가했다.

- 생성 후에는 다음과 같은 화면을 볼 수 있다.

- 생성한 글로벌 보조 인덱스는 항목보기의 [스캔]에서 볼 수 있다.

- [테이블 또는 인덱스]에서 생성한 보조 키(major-index)를 선택하고 실행을 해보면, major항목의 값을 가지고 있는 사용자 데이터만 뜬다.
