[Bigdata] - 빅데이터 기초 07 : 빅데이터 저장과 분석
in ML on Ml, Bigdata
1. 분산 파일 시스템
분산 파일 시스템
은 저장되는 데이터에 대해 종속적이지 않으므로 스키마가 없는 데이터 저장소
를 지원한다. 복제
를 통해 데이터를 여러 위치에 복사하여 중복성
및 높은 가용성
을 제공한다. 또한 동시성 제어
를 위한 간단한 파일 잠금 메커니즘
을 기반함과 동시에, 빅데이터의 속도 특성이라고 할 수 있는 빠른 읽기/쓰기 기능
을 제공한다.
분산 파일 시스템
은 많은 수의 작은 파일로 구성된 데이터 세트에 이상적이지 않다. 과도한 디스크 탐색을 유발하여 전체 데이터 액세스 속도를 저하시킬 수 있기 때문이다. 이러한 한계로 인해 순차적 방식으로 접근되는, 소수의 사이즈가 큰 파일
을 대상으로 가장 잘 작동한다.
분산 파일 시스템
저장 장치는 원자료의 대량 데이터 세트가 저장되거나 데이터 세트의 아카이브
가 필요할 때 적합하다. 또한 장기간에 걸쳐 온라인 상태로 유지해야 하는 많은 양의 데이터
를 대상으로 저렴한 저장 옵션
을 제공한다.
2. 관계형 데이터 베이스 관리 시스템
관계형 데이터베이스 관리 시스템(RDBMS)
는 임의의 읽기/쓰기 특성을 사용하여 소량의 데이터
가 포함된 트랜잭션
작업부하를 처리하는 데 적합하다. 관계형 데이터베이스 관리 시스템은 ACID
를 준수하며, 이러한 규정을 준수하기 위해 일반적으로 단일 노드
로 제한한다.
이중화(redundancy)
와결함 포용성(fault tolerance)
를 제공하지 않는다.
관계형 데이터베이스
는 주로 응용 프로그램의 로직에 따라 수동으로 샤딩해야 한다. 이것은 응용 프로그램이 필요하는 데이터를 얻기 위해 어떠한 특정 샤드를 쿼리해야 하는지 미리 알아야 한다는 것을 의미한다. 특히 여러 샤드의 데이터가 필요할 때 데이터 처리가 더욱 복잡해진다.
관계형 데이터베이스는 해당 데이터가 관계형 스키마
를 따라야 한다. 비정형 데이터
와 반정형 데이터
는 저장을 지원하지 않는다. 이런 스키마 적합성 체크로 오버헤드
가 발생한다.
3. NoSQL 데이터 베이스
NoSQL
은 확장성 및 결함 포용성이 뛰어난 차세대 비관계형 데이터베이스
를 개발하는 데 사용되는 기술이다.
3-1) 특징
스키마리스
- 데이터는 원형태로 존재할 수 있다.수평확장
- 기존 노드를 더 나은 성능/용량으로 교체하는 것과 달리 더 많은 노드를 추가할 수 있다.고가용성
- 결함 포용성을 제공하는 클러스터 기술을 기반으로 한다.운영 비용 절감
- 오픈소스 플랫폼에서 구축된다. 흔히 범용 하드웨어에 배치될 수 있다.궁극적 일관성
- 여러 노드에서 읽는 데이터는 쓰기 직후에 일관성이 없을 수 있따. 그러나 모든 노드는결국 일관된 상태
가 된다.BASE 선호
-CAP
이론에서AP
또는CP
이다.API 기반 데이터 접근
- 일반적으로RESTful API
를 비롯한API
기반 쿼리를 통해 지원되지만, 일부 구현은SQL
과 유사한 쿼리 기능을 제공할 수도 있다.자동 샤딩 및 복제
-수평확장
과고가용성
을 제공하기 위해자동 샤딩 및 복제
기술을 사용하여 데이트 세트를 수평으로 분할한 후 여러 노드로 복사한다.통합 캐싱
- Memcached와 같은 제3자 분산 캐싱 계층이 필요 없다.분산 쿼리 지원
- 여러 샤드에서 일관된 쿼리 동작을 유지한다.다언어(polyglot) 지속성
- 기존관계형 데이터베이스
시스템을동시에 사용
할 수 있다. 다양한 유형의 스토리지 기술을 사용하여 데이터를 보존하는 방식인다언어(polyglot) 지속성
을 지원한다.비정형/반정형 데이터
가 필요한 시스템을 개발할 때 유용하다.집계 중심(aggregate-focused)
-관계형 데이터베이스
는 완전히정규화된 데이터
에서 가장 효과적이고,NoSQL
에서는정규화되지 않은 집계 데이터
를 저장한다. 그러나그래프 데이터베이스
는 집계 중심이 아니다.
3-2) 이유
빅데이터 세트의 크기
, 속도
및 다양성
에 기인한다.
크기
지속적으로 증가하는 데이터 크기에 대한 요구사항으로 확장성
이 뛰어나고 비용 절감
을 유지하면서 경쟁력을 유지하도록 요구한다. NoSQL은 저가형 범용 서버를 사용하면서 확장 기능을 제공함으로 이 요구사항을 충족한다.
속도
빠른 데이터 유입으로 인해 빠른 액세스 데이터 쓰기
기능이 필요하다. NoSQL은 스키마를 쓰는 것이 아니라 스키마를 읽는 방식을 사용하여 빠른 쓰기
가 가능하다. 또한 가용성
이 높기 때문에 네트워크 에러 등으로 인해 쓰기 대기 시간이 발생하지 않는다.
다양성
다양한 형태의 반정형/비정형 데이터 형식
을 저장할 수 있다. 스키마를 변경하는 기능을 추가하여 스키마가 없는 데이터와 불완전한 데이터를 저장할 수 있다. 즉 NoSQL 데이터베이스는 스키마 진화(schema evolution)
을 지원한다.
3-3) 타입
NoSQL
은 4가지 형태로 나눌 수 있다.
키-값
문서
칼럼-패밀리
그래프
3-3-1) 키-값 NoSQL
데이터를 키-값
쌍으로 저장하고, 해시 테이블
처럼 작동한다. 값은 불투명
하며 일반적으로 BLOB
으로 저장된다.
값 조회는 키를 통해 수행할 수 있다. 저장된 집계 값의 세부사항을 알지 못하기 때문에 부분적인 업데이트는 불가능
하다. 갱신은 삭제 또는 삽입 조작을 통하여 이루어진다.
키-값
저장 장치는 일반적으로 인덱스를 유지하지 않으므로 쓰기가 매우 빠르다
. 간단한 저장 모델을 기반으로 확장성
이 뛰어나다.
저장된 데이터에 구조
를 만들어주기 위해, 대부분의 키-값
저장 장치는 키-값
쌍이 구성될 수 있는 컬렉션
또는 버킷
을 제공한다. 단일 컬랙션은 여러 데이터 형식을 포함할 수 있다. 스토리지 풋프린트
를 줄이기 위해 데이터 값을 압축 저장
하기도 한다. 그러나 리턴되기 전에 먼저 데이터의 압축을 해제해야 하기 때문에 읽기 시간에 지연
이 발생한다.
다음의 경우 사용이 적절하다.
비정형 데이터
저장 장치 필요고성능
의읽기/쓰기
- 키를 통해
완전히 식별
가능한 값들- 값이 종속되지 않는
독립된 개체
단순한 구조
이거나바이너리
- 쿼리 패턴이 간단하며
삽입, 선택 및 삭제
작업만 있을 때 (수정 없음
)- 저장된 값 처리를 응용프로그램에서 할 때
다음의 경우 사용이 적절하지 않다.
- 값의 속성을 사용하여
검색 및 필터링
데이터간 관계
가 존재할 때- 하나의 트랜잭션으로 업데이트해야 할 때
- 여러 키가 한번의 운용으로 조작이 필요할 때
스키마 일관성
이 필요할 때- 개별 속성에 대한
업데이트가
필요할 때
대표적인 키-값 NoSQL
Riak
,Redis
및Amazon Dynamo DB
등
3-3-2) 문서 NoSQL
문서 NoSQL
또한 데이터를 키-값
쌍으로 저장한다. 그러나 키-값
쌍과 달리 데이터베이스에서 쿼리할 수 있는 문서이다. 복잡한 중첩 구조
를 가질 수 있다. 문서는 XML
또는 JSON
과 같은 텍스트 기반 인코딩 체계 혹은 BSON(Binary JSON)
과 같은 2진법 인코딩 체계를 사용한다.
키-값 NoSQL과의 차이
는 다음과 같다.
- 값을 인식할 수 있다.
- 저장된 값은
자체 설명
된다. 스키마는 값의 구조로 추론되거나 스키마의 참조가 값에 포함된다.- 셀렉트 연산은 집계 값
내부의 필드
를참조
할 수 있다.- 셀렉트 연산은 집계 값의 일부를
검색
할 수 있다.부분 업데이트
가 지원된다.- 검색 속도를 높이는
인덱스
가 지원된다.
초기 삽입 후에 추가 필드를 문서에 추가할 수 있으므로 유연한 스키마 지원이 제공된다.
다음의 경우 사용이 적절하다.
- 플랫 혹은 네스티드 스키마를 포함하는
반정형 구조
문서 기반- 문서 구조를 알 수 없거나 변경될 가능성이 있어
스키마의 진화
가 필수적인 경우- 문서로 저장되어 있는 집계의
부분 업데이트
가 필요한 경우검색
이 문서 내 다른 필드에서 수행되어야 하는 경우직렬화된 객체
형식으로 저장하려는 경우삽입
,선택
,업데이트
및삭제
가 쿼리 패턴에 포함된 경우
다음의 경우 사용이 적절하지 않다.
단일 트랜잭션
의 일부로여러 문서 업데이트
- 여러 문서를 조인하거나
정규화된 데이터
저장이 필요한 경우바이너리
데이터를 저장- 저장된 값이 자체적으로 설명되지 않거나 스키마에 대한 참조가 없는 경우
- 쿼리를 재구성해야 하는 연속 쿼리 실행 시, 문서 구조가 변경될 것을 감안하는 일관된 쿼리 디자인의 스키마 적용이 필요한 경우
대표적인 문서 NoSQL
MongoDB
,CouchDB
, 그리고Terrastore
등이 있다.
3-3-3) NewSQL 데이터 베이스
칼럼-패밀리(Column-Family)
는 기존 관계형 데이터베이스 관리 시스템처럼 데이터를 저장하지만, 관련 열을 함께 그륩화하여 칼럼-패밀리
를 생성한다.
관련 열의 모음을 슈퍼 칼럼
이라고도 한다. 각 행은 여러 칼럼-패밀리
로 구성되며 다른 열 집합을 가질 수 있으므로, 플렉시블 스키마 지원을 나타낸다. 각 행은 키로 식별된다. 칼럼-패밀리
는 임의의 읽기/쓰기 기능으로 빠른 데이터 액세스를 제공한다. 별도의 물리적 파일에 서로 다른 칼럼-패밀리
를 저장하고, 탐색 시 필요한 칼럼-패밀리
만 검색되므로 쿼리 응답성이 향상된다.
다음의 경우 사용이 적절하다.
실시간
무작위 읽기/쓰기
기능이 필요하고,임의
로 정의된구조
가 있는 경우표 형식의 구조
를 나타내며, 각 행이 많은 수의 열로 구성되어 상호 연결된 데이터의 네스티드 그룹이 존재- 시스템 중단 없이
칼럼-패밀리
를 추가하거나 제거할 수 있는 스키마 변경 지원이 필요- 특정 필드가 대부분 함께 액세스 될때, 필드 값을 사용하여
검색
을 수행하는 경우- 데이터가
공간이 부족
한 행으로 구성되어 저장 장치의효율
적인 사용이 필수적인 경우- 쿼리 패턴에
삽입
,선택
,업데이트
및삭제
작업이 포함된 경우
다음의 경우 사용이 적절하지 않다.
관계형 데이터 접근
이 필요한 경우 (예 : 조인)ACID
트랜잭션이 필요한 경우- 바이너리 데이터를 저장해야 하는 경우
SQL 호환 쿼리
를 실행해야 하는 경우쿼리 패턴
이 자주변경
되는 경우
대표적인 NewSQL 데이터 베이스
Cassandra
,HBase
, 그리고Amazon SimpleDB
등이 있다.
3-3-4) 그래프
그래프(graph)
는 상호 연결된 개체(entity)
를 지속시키는 데 사용된다. 개체의 구조를 강조하는 다른 NoSQL과 달리 개체 간의 관계를 저장
하는데 중점을 둔다.
개체는 노드
로 저장되며 (클러스터 노드와 혼동하지 않도록 하자), 꼭짓점이
라고도 한다. 개체 간의 연결은 에지(edge)
로 저장된다. RDBMS 용어에서, 각 노드
는 단일 행
으로 간주되고 에지
는 조인
을 나타낸다.
노드
는 여러 에지
를 통해 둘 이상의 링크 유형
을 가질 수 있다. 각 노드는 키-값 쌍 속성의 데이터를 가질 수 있다. 아래 그림이 예시이다.
에지
의 속성을 사용하여 쿼리 결과를 추가적으로 필터링할 수 있다. 에지
가 여러 개인 것은 관계형데이터베이스에서 여러 개의 외래 키를 정의하는 것과 유사하다.
그래프
저장 장치의 일관성은 보통 ACID 준수를 통해 제공된다. 그래프 저장 장치의 유용성은 노드 간 정의된 에지
의 수와 유형에 따라 달라진다. 에지
의 수가 크거나 유형이 다양할수록 처리 가능한 쿼리 역시 다양해진다.
다음의 경우 사용이 적절하다.
상호 연결된 개체
를 저장할 필요가 있는 경우- 개체의 속성이 아닌
관계를 기반
으로 개체 쿼리 작업을 진행해야 하ㅁ는 경우- 상호 연결된
개체들의 집합
을 찾아야 하는 경우- 노드 트랜스버설 거리를 사용하요
개체 간의 거리
를 계산해야 하는 경우패턴
탐색을 위한데이터마이닝
기법을 사용하려는 경우
다음의 경우 사용이 적절하지 않다.
많은 수의
노드 또는 에지를업데이트
해야 하는 경우 (검색으로 비용이 많이 든다)- 개체가
많은 수
의속성
이나네스티드 데이터
를 가지고 있는 경우 (가벼운 개체를 그래프에 저장하고, 나머지 속성은 별도의 저장장치에 저장하는 것이 낫다.)바이너리 저장소
가 필요한 경우- 작업하려는 쿼리가 노드 트랜스버설 쿼리를 지배하는 노드/에지 속성 선택에 기반한 경우
대표적인 NewSQL 데이터 베이스
NeoJ4
,Infinite Graph
, 그리고OrientDB
가 있다.
4. NewSQL 데이터 베이스
NoSQL은 읽기/쓰기 작업에 있어서 확장성, 가용성, 결함 포용성 및 신속성은 뛰어나지만, ACID 기준을 준수하는 RDBMS가 가지는 동일한 트랜잭션 및 일관성을 제공하지 않는다. BASE모델과 같이 NoSQL은 즉각적이 아니라 궁극적 일관성을 제공한다. 이런 이유로 NoSQL은 대규모 트랜잭션 시스템을 구현할 때엔 사용하기에 적합하지 않다.
NewSQL은 RDBMS의 ACID 속성과 NoSQL가 제공하는 확장성과 결함 포용성을 모두 지니는데, 일반적으로 데이터 정의 및 데이터 정제 작업을 위해 SQL 호환 구문을 지원하며 데이터 저장을 위해 논리적 관계형 데이터 모델을 사용한다.
NewSQL은 거래량이 매우 많은 OLTP 시스템(예: 은행시스템)을 개발하는데 사용할 수 있다. 일부 구현은 인메모리 저장을 활용하므로 운영 분석과 같은 실시간 분석에도 사용할 수 있다. NoSQL과 비교할 때, SQL 지원을 통해 RDBMS에서 확장성이 뛰어난 데이터베이스로 쉽게 전환이 가능하다.
대표적인 NewSQL 데이터 베이스
VoltDB
,NuoDB
, 그리고InnoDB
가 있다.
- 출처 [빅데이터 기초 개념,동인,기법]