앎을 경계하기

Data Science

실무SQL공부 1 - 미들웨어 시스템

양갱맨 2022. 1. 15. 19:07

1. PostgreSQL

  • 오픈소스 RDB
  • 표준 SQL 준수, 분석에 필요한 구문 제공

2. Apache Hive

  • RDB에서 대량의 데이터를 처리할 때 보틀넥이 발생하는 데이터 I/O를 해결
  • 고속으로 데이터를 처리하기 위한 아키텍처로 분산 파일 시스템이 고안됨
    • 분산 파일 시스템
      • 거대한 데이터를 작게 분할해서 여러 개의 디스크에 분산시켜 저장하고 각 디스크에서 동시에 데이터를 읽어 고속으로 대용량 처리가 가능함
  • 하이브는 HDFS 분산파일 시스템 위의 데이터를 SQL스러운 인터페이스로 처리하는 시스템
  • 동시에 처리한 데이터에 대한 순서를 맞춰주는 것이 중요한데, 이 방법이 MapReduce
  • Hive → Hadoop 생태계의 일부, HiveQL로 MapReduce 잡으로 변환하여 병렬 분산 처리 수행
  • 파일 기반 시스템이라서 특정 레코드 변경, 제거가 어려움
  • 인덱스도 존재하지 않아 쿼리 실행 시, 파일 전체를 조작해야함
  • 쿼리 실행 시, 동적으로 데이터 정의가 가능하다는 장점이 있다.
    • ‘Korea, Seoul, GangseoGU’라는 데이터 1개가 있을 때, 국가/시/구처럼 3개의 컬럼으로 사용하는 것도 가능하고 통으로 하나의 문자열로 사용도 가능하다.
    • 데이터 사용에 대한 구체적인 방법은 모르지만 어쨌든 필요한 데이터라면 그냥 저장해두고, 필요한 시점에 동적으로 스키마를 정의할 수 있다.
  • JAVA - Hive
  • 간단한 쿼리 결과를 Hive에서 얻고자 한다면 오버헤드가 커질 수 있다.
  • 최근에는 MapReduce말고 Spark, Tez로 사용하거나 데이터형식을 최적화해서 리액턴시를 낮출 수 있다.
    • 전문성 요구, 진입 장벽 높음

Amazon Redshift

  • AWS에서 제공하는 분산 병렬 RDB
  • Hive와 비슷하게 분산 환경에서 병렬 처리를 하지만 Redshift는 그냥 RDB임
  • PostgreSQL과 호환성을 가지므로 PostgreSQL 전용 ODBC/JDBC 드라이버나 psql 클라이언트에서 RedShift 접속 가능함
  • RedShift는 비용이 발생하기 때문에 개인보다는 상업 목적으로 사용함
  • 성능 튜닝을 하거나 비용을 줄이려면 최적의 노드 수와 스펙을 예측해서 인스턴스 실행과 종료를 관리해야 한다.
    • 전문 지식 필요
  • Redshift는 column 기반 스토리지를 사용한다.
    • 분석에 적합한 아키텍처

Google BigQuery

  • 빅데이터 분석을 위해 구글이 제공하는 클라우드 서비스
  • Redshift와 거의 비슷하지만 직접 노드 인스턴스 관리가 필요없다.
  • 다루는 데이터의 양으로 비용이 발생하기 때문에, 데이터 양이 적으면 적은 비용으로 운용이 가능함
  • 유료 구글 애널리틱스를 사용하면 쉽게 연동이 가능함
  • 기존에 사용하는 legacy SQL은 표준 SQL과 다르게 동작하는 부분이 많음
    • 그래서 standard SQL 제공

SparkSQL

  • MapReduce를 사용한 분산 처리 프레임워크인 Apache Spark의 기능 중 SQL 관련 기능을 나타내는 말
  • 머신러닝, 그래프 처리, 실시간 스트리밍 등 다양한 처리르 쉽게 분산 처리할 수 있는 기능을 제공
  • 빅데이터 활용과 관련된 대부분의 처리를 한 번에 구현할 수 있다.