PostgreSQL
- 오픈소스 RDB(Relational Database)*
- 다양한 플랫폼을 지원, GUI 인스톨러 제공되어 쉽게 컴퓨터 설치 가능
- MySQL 등의 오픈소스 RDB와 비교하면 표준 SQL을 잘 준수하며, 윈도 함수, CTE(WITH 구문) 등 분석에 필수로 사용하는 구문을 모두 구현
- 여기에서 소개되는 미들웨어 중 가장 역사가 오래됨
- 특유의 확장기능도 많이 제공하여 편리하게 사용 가능
*RDB: 관계형 데이터베이스. 엑셀 시트처럼 빈칸에 내용을 차곡차곡 쌓아가는 데이터베이스 방식을 가리킴(A-1, B-2처럼 각각 칸에 번호가 매겨져 있고, 이 번호를 통해 각각의 데이터를 확인)
Apache Hive
PostgreSQL 등의 RDB에서 대량의 데이터를 처리할 때 보틀넥이 발생하는 가장 큰 부분은 어디일까?
수 테라바이트에서 수 페타바이트의 데이터를 저장하는 경우 일반적으로 저렴한 디스크를 사용
BUT 디스크에서 데이터를 읽어들일 때 전송 속도는 일반적으로 CPU에서 처리할 수 있는 속도에 비해 매우 느림
디스크 I/O가 보틀넥이 되는 경우에서 고속으로 데이터를 처리하기 위한 아키텍쳐로 분산 파일 시스템이 고안
이때는 거대 데이터를 작게 분할해서 여러 개 디스크에 분산해서 저장하고 각 디스크에서 동시에 데이터를 읽어 고속으로 대량 데이터 처리 가능
* 보틀넥(bottleneck) : 병목을 가리키는 말로서, 시스템 전체의 효율을 저해시키는 부분
* 디스크 I/O : 정확히 Disk I/O(%)라고 하며, 5초동안의 하드디스크의 사용률
- HDFS(Hadoop File System)라고 부르는 분산 파일 시스템 위의 데이터를 SQL스러운 인터페이스로 간단하게 처리해주는 시스템
- 위의 병목 현상을 해결하더라도 읽어온 데이터들의 순서를 제대로 맞출 수 있다면 의미없음. 이에 분산 파일 시스템 위의 순서를 맞추는 방법으로 MapReduce라는 알고리즘 고안
- 초기 Apache Hadoop은 이러한 HDFS와 MapReduce 아키텍처를 구현한 시스템
- Hive는 이러한 Hadoop 생태계의 일부분으로, HiveQL이라는 SQL스러운 쿼리 언어로 작성한 쿼리를 자동적으로 MapReduce 잡으로 변환해서 간단히 병렬 분산 처리 가능
장점
- 쿼리 실행 때 동적으로 데이터를 정의할 수 있음(EX. 'Korea, Seoul, GangseoGu'라는 데이터를 '국가', '시, '구'처럼 3개의 컬럼으로 다룰 수 있으며, 하나의 문자열로도 다룰 수 있음)
- 즉, '구체적으로 어떻게 사용할지 모르겠지만 데이터를 저장해두고 싶을 때'는 데이터를 HDFS 위에 그냥 축적해두고, 이후 필요한 시점에 동적으로 스키마를 정의할 수 있다는 의미
- 데이터 분석을 위한 풍부한 UDF(User-Defined Function)를 * SQL만으로는 구현이 어려운 문자열 처리 등이 간단히 가능
단점
- PostgreSQL로 대표되는 RDBMS와 비교해서 Hive는 어디까지나 파일 기반의 시스템에 있음
- 따라서 특정 레코드 하나를 변경/제거하기 어렵고 인덱스도 디폴트로 존재하지 않아 쿼리 실행 때 파일 전체를 조작해야 함(데이터를 CSV처럼 특정 기호로 구분해서 하나의 텍스트 파일에 블럭 단위로 저장하므로 데이터 수정하려면 블럭 크기에 해당하는 파일을 열고 저장해야 하는 비효율 발생)
'독서 > 데이터 분석을 위한 SQL 레시피' 카테고리의 다른 글
4. 데이터 (1) | 2024.05.10 |
---|---|
2-2. 엔지니어의 과제 (0) | 2024.04.13 |
2-1. 분석 담당자의 과제 (0) | 2024.04.13 |
2-0. 저장된 데이터에 접근하려면? 미들웨어 부속도구의 사용 (0) | 2024.04.12 |