빅데이터 저장 시스템
- 대용량의 데이터 집합을 저장하고 관리하는 시스템
- 대용량의 공간, 빠른 처리 성능, 확장성, 신뢰성, 가용성 등을 보장해야 함
- 메타데이터를 별도의 전용 서버로 관리하는 비대칭형 클러스터 파일 시스템이 개발되고 있으며, 이 시스템은 메타데이터에 접근하는 경로와 데이터에 접근하는 경로가 분리된 구조를 가짐
1. 빅데이터 저장 제품 검토
빅데이터 저장을 위한 제품을 선택, 검토하기 위해 사용자 요구사항을 분석
단계 | 설명 | 예시 |
1. 요구사항 수집 | - 문서나 인터뷰를 통해 수집하거나 기존 시스템 분석을 통해 요구사항을 수집 | 포커스 그룹 인터뷰 설문, 워크숍 |
2. 요구사항 분석 | - 기능, 비기능 데이터 및 기타 요구사항 분석 | 데이터 유형이나 업데이트 주기 |
3. 요구사항 명세 | - 요구사항을 문서화하여 정리하는과정 - 메타데이터, 변경 이력, 요구사항 목록으로 구성 |
사용자 요구 명세서 |
4. 요구사항 검증 | - 요구사항 명세서를 배포하고 검토 회의를 통해 검증 | 요구사항 리뷰 및 검토 회의 |
1-1. 기존 시스템 기술 검토 절차 수립
기존의 데이터 웨어하우스의 데이터 유형에 따라 기술을 추가로 도입하거나 도입하지 않거나를 결정하는 과정
방안 | 설명 |
용량 산정 | - 저장 시스템의 신뢰성을 확보하기 위해 저장 계획 수립단계에서 용량 산정이 필요 - 조직의 빅데이터 활용 목적에 부합하는, 현재와 향후 증가의 추세를 반영하여 적절한 저장 용량을 산정하는 것은 필수 |
데이터 파악 | - 저장 대상이 되는 데이터의 유형, 크기, 저장 방식 및 기간 등을 파악 |
시스템 구축 방안 | - 프라이빗 클라우드, 퍼블릭 클라우드와 같이 안정성 및 신뢰성을 고려한 시스템 구축 방안을 계획 |
1-2. 유형별 데이터 저장방식 수립
요구사항 분석 단계에서 요구사항에 따른 데이터를 유형별로 분류하고 수집주기 등의 특성을 분석하여 데이터 유형별로 저장 관리하기 용이한 저장 시스템을 선택
고려요소 | 설명 |
고려 요소 설명 | - 데이터 모델이 무엇인지 고려 - 확장성 고려 - 트랜잭션, 일관성이 중요한 분야는 RDBMS 선택 |
분석 방식 및 환경 | - 온라인 상시, 실시간 또는 배치기반 방식 중 고려 - 파일 시스템 형식, NoSQL, 데이터 웨어하우스 등 어떻게 구성할지를 고려 |
분산 대상 데이터 유형 | - 기업 내/외부 데이터 고려 - 데이터의 발생량/속도 고려 |
2. 빅데이터 저장 기술 분류
접근 방식 | 설명 | 제품 |
분산 파일 시스템 | 컴퓨터 네트워크에 공유하는 여러 호스트 컴퓨터의 파일에 접근할 수 있는 파일 시스템 | GFS, HDFS, 러스터 |
데이터베이스 클러스터 | RDBMS 관리 시스템으로 하나의 데이터베이스를 여러 개의 서버상에 구축하는 시스템 | 오라클RAC, IBM DB2 ICE, MSSQL, MYSQL |
NoSQL | 데이터 모델을 단순화 해 RDB모델과 SQL을 사용하지 않는 모든 DBMS 또는 데이터 저장 장치 | 구글 BigTable, HBase, 아마존SimpleDB, 마이클로소프트 SSDS, Cloudata, Cassandra |
병렬 DBMS | 다수의 프로세서를 활용하여 여러 디스크의 질의, 갱신, 입출력 등 DB처리를 동시에 수행하는 시스템 | VoltDB, SAP, HANA, Vertica, Greenplum, Netezza |
네트워크 구성 저장 시스템 | 서로 다른 종류의 데이터 저장 장치를 하나의 서버에 연결하여 총괄적으로 관리하는 시스템 | SAN, NAS |
클라우드 파일 저장 시스템 | 클라우드 컴퓨팅 호나경에서 가상화 기술을 이용한 분산 파일 시스템 | Amazon S3, OpenStack Swift |
2-1. CAP Theorem
이 세가지의 특성에 따라 타깃 데이터베이스를 선택할 수 있음
- Consistency(일관성) : 같은 시점에 모두에게 같은 데이터를 보여줘야 함
- Availability(가용성) : 일부 노드가 다운되어도 시스템은 정상동작 해야 함
- Partition-Tolerance(지속성) : 네트워크 전송 중 일부가 손실되어도 시스템은 정상 동작 해야 함
3. 데이터베이스 클러스터
하나의 데이터베이스를 여러 개의 서버상에 분산하여 구축하는 것
- 데이터베이스 클러스터 : 하나의 데이터베이스를 여러 개의 서버에 구축
- 데이터베이스 파티셔닝 : 데이터베이스를 여러 부분으로 분할하는 것
- 각 파티션은 여러 노드로 분할 배치되어 여러 사용자가 각 노드에서 트랜잭션을 수행함
- 데이터베이스 시스템을 구성하는 형태에 따라 단일 서버 파티셔닝, 다중 서버 파티셔닝으로 구분
파티셔닝의 효과
- 병렬처리 : 파티션 사이의 병렬처리를 통해 빠른 데이터 검색및 처리 성능을 얻음
- 고가용성 : 특정 파티션에 장애가 발생하더라도 서비스가 중단되지 않음.
- 성능 향상 : 성능의 선형적인 증가 효과
3-1. 데이터베이스 클러스터 구성 형태
구분 | 설명 |
공유 디스크 클러스터 | - 높은 수준의 고가용성을 제공하며 클러스터 노드 중 하나만 살아있어도 서비스 가능 - 데이터 파일을 공유하여 모든 데이터에 접근 가능하게 하는 방식 - 데이터 공유를 위해 SAN과 같은 네트워크 장비 필요 - 모든 노드가 데이터를 수정할 수 있어, 동기화 작업을 위한 채널이 필요함 |
무공유 클러스터 | - 무공유 클러스터에서 데이터베이스는 자신이 관리하는 데이터 파일으 자신의 로컬 디스크에 저장하며 이 파일들은 노드간에 공유되지 않음 - 노드 확장에 제한은 없지만, 각 노드에 장애가 발생할 경우를 대비해 별도의 FTA를 구성해야 함 |
3-2. 데이터베이스 클러스터 종류
종류 | 설명 |
Oracle RAC | - Oracle RAC는 공유 클러스터에 해당되므로 클러스터의 모든 노드에서 실행되고 데이터들이 공유 스토리지에 저장됨 - 고가용성과 확장이 쉬움 |
IBM DB2 ICE | - DB2는 CPU, 메모리, 디스크를 독립적으로 운영하는 무공유방식의 클러스터링 지원 - 독립적으로 운영되지만 노드에 장애가 발생하면 복구할 수 있돌록 공유 디스크 방식을 사용해서 가용성도 보장함 |
SQL Server | - SQL Server는 연합 데이터베이스 형태로 여러 노드로 확장할 수 있는 기능을 제공함 - 가용성을 확보할 수 있도록 Failover를 제공하지만 오라클과 같은 Active-Active가 아닌 Active-Standby 방식을 사용함 |
MySQL | - 비공유형으로 메모리 기반 데이터베이스의 클러스터링 지원 - 데이터는 동기화 방식으로 복제되며 이를 위해 데이터 노드간에는 별도의 네트워크를 구성 |
4. NoSQL의 기술적 특성
특성 | 내용 |
스키마가 없음 | - 데이터를 모델링하는 고정된 스키마 없이 키 값을 이용하여 다양한 형태의 데이터 저장 및 접근 가능 - 데이터 저장 방식은 Column, Value, Document, Graph 등의 기반으로 구분 |
탄력성 | - 시스템 일부에 장애가 발생해도 클라이언트가 시스템에 접근이 가능 - 시스템의 다운이 없도록 하는 동시에 대용량 데이터의 생성 및 갱신 가능 - 시스템 규모와 성능 확장이 용이하고 입출력의 부하를 분산시키는데도 용이함 |
질의 | - 수십에서 수천 대 규모로 구성된 시스템에서도 효율적으로 데이터 검색 및 처리를 할 수 있는 질의 언어, 처리 기술, API를 제공 |
캐싱 | - 대규모 질의에도 고성능 응답속도를 제공할 수 있는 메모리 기반 캐싱 기술을 적용 |
5. NoSQL의 유형 분류
데이터 모델 | 설명 | 제품 예 |
key - value 저장 구조 | - 가장 간단한 데이터 모델 - 범위 질의는 사용이 어려움(지원하는 모델도 있음) - 응용 프로그램 모델링이 복잡함 |
아마존 Dynamo DB 아마존 S3 |
문서 저장 구조 | - 문서에 따른 스키마(메타데이터)가 있음 - 레코드 간의 관계 설명이 가능 - 개념적으로 RDBMS와 비슷함 |
SimpleDB CouchDB MongoDB |
열 기반 저장 구조 | - 연관된 데이터 위주로 읽는 데 유리한 구조 - 하나의 레코드를 변경하려면 여러 곳을 수정해야 함 - 동일 도메인의 열 값이 연속되므로 압축 효율이 좋음 - 범위 질의에 유리 |
Cassandra |
그래프 저장 구조 | - 온톨로지와 시맨틱 웹 분야에서 활용되는 그래프로 데이터 표현 | Neo4j 아마존 Neptune |
6. 빅데이터의 주요 저장 및 관리 기술
- Google File System (GFS)
- 구글의 대규모 클러스터 서비스 플랫폼의 기반이 되는 파일 시스템
- 파일을 고정된 크기(64MB)의 청크로 나누어 여러개의 복사본을 분산 저장함 - Amazon S3 (Simple Storage Service)
- 아마존의 인터넷 스토리지 서비스
- 최소 1바이트부터 최대 5TB까지의 데이터가 포함된 객체의 읽기, 쓰기, 삭제가 가능하며 저장 객체 수의 제한이 없음 - Hadoop Distributed File System (HDFS)
- 아파치에서 분산 환경 컴퓨팅을 목표로 시작한 프로젝트
- 저사양 다수의 서버를 이용해 스토리지 구성이 가능하여 비용 관점을로 효율적
- 하나의 마스터(네임 노드)와 여러 개의 슬레이브(데이터 노드)로 클러스터 구성
- 대용량 파일을 마지막 블록을 제외하고 64MB의 블록으로 분산하여 저장 - DynamoDB
- AWS에서 유, 무료로 서비스하며 사용자가 원하는 만큼 데이터베이스를 생성하여 데이터를 저장 가능
- DB자동 분할 기능 지원
- 모든 데이터는 SSD에 저장되며 속성, 항목, 테이블로 구성되고 속성은 Key - Value의 쌍으로 구성됨 - MongoDB
- 신뢰성과 확장성에 기반한 문서 지향 데이터베이스
- 저장의 최소 단위가 문서이며 RDBMS의 테이블과 비슷한 컬렉션이라는 곳에서 수집, 관리함
- 오토 샤딩(데이터 분할, 분산 저장) 가능
- 기존 DBMS의 범위 질의, 보조인덱스, 정렬등의 연산과 맵리듀스 집계 연산 지원
- BSON형태로 저장하며 C++로 작성 - CouchDB
- JavaScript로 구성된 문서 기반의 데이터베이스
- MongoDB보다 질의, 확장성, 버전 관리등에서 성능이 더 우수하지만 Erlang 언어를 이용하여 접근성이 높지 않음 - Cassandra
- Key - Value 구조의 DBMS로 페이스북에서 적용하다가 구글을 이용하여 오픈소슬로 배포함
- 토큰링 키 구간이 설정되어 있어 노드의 추가 및 제거만으로도 전체 저장 공간의 유연한 확장 가능
- 다른 노드에 복제본을 구성하므로 특정 노드에 장애가 발생해도 서비스에 영향을 주지 않음 - HBase (Hadoop dataBase)
- 행, 열 그룹, 열 이름, 타임스탬프를 이용한 테이블 구조
- HDFS 위에 설치되며 노드 관리에는 ZooKeeper를 사용함
- 읽기 및 수정은 즉시, 맵리듀스 연산은 일괄로 처리 - Redis(Remote Dictionary System)
- 메모리 기반의 Key -Value 저장 공간 사용
- 다양한 데이터 구조를 지원, 파일 싱크 기능 제공
- 데이터 구조에는 String, Set, Stored set, Hashes, List 등이 있음 - Riak
- DynamoDB계열에 속하며 Key - Value 저장형식을 취하는데 Value에 JSON문서 자체가 저장되는 방식
- 링 형태의 데이터 분산 저장 구조 - HyperTable
- HBase와 유사하나 C++ 언어로 개발되어 성능이 더 뛰어남
- HQL이라는 SQL과 비슷한 명령어를 제공하여 RDBMS와 기능이 비슷함 - ZooKeeper
- 하둡의 분산 처리 시스템(Hadoop, Chukwa, Pig 등)을 일괄 관리하는 시스템 - Voldemort
- Linkedin에서 개발한 java 기반의 Key - Value 저장 형식 데이터 베이스
- 복잡한 구조의 백엔드, 분산 대형 클러스터 환경에서 동작하며 일관성 있는 해싱으로 키와 관련된 값을 빠르게 조회 가능함
'빅데이터 관련 개념 정리' 카테고리의 다른 글
데이터 전처리 (0) | 2024.04.20 |
---|---|
탐색적 데이터 분석 (1) | 2024.04.20 |
데이터 적재 기술 (0) | 2024.04.19 |
데이터 품질 관리 (0) | 2024.04.19 |
데이터 변환 기술 (1) | 2024.04.19 |