분산 데이터 저장 기술은 1. 분산파일시스템, 2. 클러스터, 3. 데이터베이스, 4. NoSQL로 구분된다. 각각의 기술 모두 알아야 할 게 많은 덩어리다.
어떤 기술이던간에 분산된 데이터를 저장하는 기술은 대용량의 저장공간, 빠른 처리성능, 확장성, 신뢰성, 가용성을 보장해야 한다.
NoSQL
개념 및 특징
- 빅데이터의 등장과 함께 개발
- 비관계형 DBMS, 스키마 없이 동작
- 구조에 대한 정의 변경 없이 레코드에 필드를 추가할 수 있음
- sql 계열 쿼리 언어를 사용할 수 있음
- 전통적인 DBMS와 달리 join연산을 사용할 수 없음.
- 데이터의 구조에 따라
- key-value 모델
- document 모델 (json또는 xml 데이터 구조 채택)
- graph 모델
- column 모델
1. 구글 빅테이블
개념 및 특징
- 구글이 개발
- 공유 디스크 방식 : 모든 노드가 모든 데이터를 공유함
장애처리
- 특정 노드에 장애가 발생할 경우 빅테이블의 마스터는 장애가 발생한 노드가 담당하던 태블릿을 다른 노드에게 할당함
- 마스터에 장애가 생길 경우를 대비하여 chubby 가 마스터를 계속 모니터링함
- 마스터에 장애가 생기면 다른 노드가 마스터 역할을 수행하도록 함
- 빅테이블의 SPOF는 마스터
** chubby는 fault-tolerance 지원구조이므로 장애가 발생하지 않는다
app engine
- 구글 클라우드 플랫폼의 일부로 빅테이블을 사용함
- 사용자에게 직접 api를 공개하지 않고 추상계층을 둠
- 데이터 모델도 추상화되어있음
- 사용자 테이블 생성 시 빅테이블의 특정 테이블에 대한 한 영역을 차지하게 됨( 빅테이블의 테이블로 생성되는 것 아님)
- 별도의 사용자 정의 인덱스를 제공하지 않음
2. HBase
- HDFS를 기반으로 구현된 칼럼 기반의 분산 데이터베이스
- 관계형 구조가 아님
- SQL을 지원하지 않음
- 비구조화된 데이터에 더 적합하며 대규모 데이터에서 실시간 rw작업에 사용
- 노드를 추가하면 선형으로 확장 가능
- 클러스터를 통한 데이터의 복제 기능 제공
- 수평적으로 확장성 있어 큰 테이블에 적합
- 로우키에 대한 인덱싱만 제공, zookeeper를 통한 고가용성 보장
3. Amazon SimpleDB
- 아마존의 데이터 서비스 플랫폼.
- 웹 애플리케이션에서 사용하는 데이터의 실시간 처리를 지원함
- EC2, S3(아마존 내부 서비스간 네트워크 트래픽)은 무료
- 외부와의 인아웃 트래픽은 유료
- 사용자는 EC2에서 수행되는 웹 서버로 접근, 웹서버에서 데이터베이스의 자료를 조회해 가공 후 사용자에게 제공
- 하나의 데이터에 여러개의 복제본을 유지
- 트랜잭션 종료 후 데이터가 초 단위로 지연동기화되는 eventual consistency 정책을 취함
- RDB, SQL지원하지 않음
- SOAP, REST프로토콜을 이용해 데이터 베이스 이용 가능
- 데이터 모델
- 도메인 : RDB의 테이블.
- 아이템 : RDB의 레코드
- attribute : RDB의 컬럼. 아이템의 특정 속성에는 여러 값을 저장할 수 있음
마이크로소프트 SSDS
- 데이터 모델
- 컨테이너 : 테이블과 유사하지만 여러 종류의 엔티티 저장 가능
- 엔티티 : 레코드와 유사. 여러 개의 속성을 가질 수 있음
- RDB처럼 엔티티를 구분하고 속성을 따로 저장하지 않고 관련 정보를 하나의 컨테이너에 저장함
- 컨테이너는 여러 노드에 분산 관리됨
- 쿼리는 하나의 컨테이너만을 대상으로 함