Data Engineer
RDBMS / NoSQL
RDBMS
장점
- 명확하게 정의된 스키마, 데이터 무결성 보장
- 관계는 각 데이터를 중복 없이 한번만 저장
단점
- 덜 유연하다. 스키마를 사전에 잘 설계하고 만들어야한다. (추후에 수정이 힘듦)
- 시스템이 커질 수록 쿼리가 복잡해지고 성능이 저하되며, 수평적 확장이 어렵다.
NoSQL
장점
- 스키마가 없어서 유연하다. 자유로운 데이터 구조를 가질 수 있다.
- 데이터 분산이 용이하며 성능 향상을 위한 Saclue-up 뿐만이 아닌 Scale-out 또한 가능하다.
- 데이터는 애플리케이션이 필요로 하는 형식으로 저장된다. 데이터를 읽어오는 속도가 빨라진다.
단점
- 데이터가 여러 컬렉션에 중복되어 있기 때문에 수정시 모든 컬렉션에서 수행해야 한다
RDBMS는 데이터 구조가 명확하며 변경 될 여지가 없으며 명확한 스키마가 중요한 경우 사용하는 것이 좋습니다. 또한 중복된 데이터가 없어(데이터 무결성) 변경이 용이하기 때문에 관계를 맺고 있는 데이터가 자주 변경이 이루어지는 시스템에 적합합니다.
NoSQL은 정확한 데이터 구조를 알 수 없고 변경/확장이 될 수 있는 경우에 사용하는 것이 좋습니다. 중복된 데이터가 변경될 시에는 모든 컬렉션에서 수정을 해야 하기 때문에 Update가 많이 이루어지지 않는 시스템이 좋으며 또한 Scale-out이 가능하다는 장점을 활용해 막대한 데이터를 저장해야 해서 Database를 Scale-Out를 해야 되는 시스템에 적합합니다.
데이터 웨어하우스(DW, Data Warehouse)
사용자의 의사 결정에 도움을 주기 위하여, 기간시스템의 데이터베이스에 축적된 데이터를 공통의 형식으로 변환해서 관리하는 데이터베이스
- 데이터를 기반한 의사 결정이 가능
- 여러 소스의 데이터를 통합해서 분석이 가능
- 기존 정보를 활용해 더 나은 정보를 제공한다.
운영 시스템에 쿼리(SELECT, JOIN)를 기간으로 작성하게 된다면 시스템에 부하가 발생하게 되어서 앱이 동작하지 않게 되거나 데이터베이스를 분석하는 동안 사용하지 못하게 됩니다. 시스템의 데이터베이스는 데이터를 작은 규모의 데이터를 조회, 삽입, 삭제, 수정을 빠르게 하기 위해 만들어진 시스템이라서 큰 규모의 데이터 조회를 했을 때에는 부하가 발생하게 됩니다.
따라서 이런 부하를 발생시키지않고 운영 DB를 추출하여 큰 규모의 데이터 조회 및 분석을 위해 만들어 진 것이 데이터 웨어하우스입니다.
Reference: 데이터 웨어하우스(DW) 란 무엇일까 (1)
MapReduce
맵 리듀스는 구글 내부에서 크롤링 된 문서, 로그 등 방대한 양의 raw data를 분석하는 과정에서 느낀 불편함에서 출발했습니다. 프로그램 로직 자체는 단순한데 입력 데이터의 크기가 워낙 방해서서 연산을 하나의 물리 머신에서 수행할 수가 없었습니다. 이 거대한 인풋 데이터를 쪼개어 수많은 머신들에게 분산시켜서 로직을 수행한 다음 결과를 하나로 합치자는 것이 핵심 아이디어 입니다.
다음과 같은 순서로 MapReduce가 진행됩니다.
- 쪼개기(Split): 크기가 큰 인풋 파일을 작은 단위의 청크들로 나누어 분산 파일 시스템(ex. HDFS)에 저장합니다.
- 데이터 처리하기(Map): 잘게 쪼개어진 파일을 인풋으로 받아서 데이터를 분석하는 로직을 수행합니다.
- 처리된 데이터 합치기(Reduce): 처리된 데이터를 다시 합칩니다.
Apache Hadoop
Apache Hadoop은 빅데이터를 저장, 처리, 분석할 수 있는 소프트웨어 프레임워크입니다.
Hadoop은 적당한 성능의 범용 컴퓨터 여러 대를 클러스터화하고, 큰 크기의 데이터를 클러스터에서 병렬로 동시에 처리하여 처리 속도를 높이는 것을 목적으로 하는 분산처리를 위한 오픈소스 프레임워크라고 할 수 있습니다.
장점
- 오픈소스로 라이선스에 대한 비용 부담이 적음
- 시스템을 중단하지 않고, 장비의 추가가 용이(Scale Out)
- 일부 장비에 장애가 발생하더라도 전체 시스템 사용성에 영향이 적음(Fault tolerance)
- 저렴한 구축 비용과 비용대비 빠른 데이터 처리
- 오프라인 배치 프로세싱에 최적화
단점
- HDFS에 저장된 데이터를 변경 불가
- 실시간 데이터 분석 같이 신속하게 처리해야 하는 작업에는 부적합
- 너무 많은 버전과 부실한 서포트
- 설정의 어려움