ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [빅데이터의 축적] 4. 비구조화 데이터의 분산 스토리지
    책/빅데이터를 지탱하는 기술 2022. 4. 2. 13:09
    반응형

    이 글은 빅데이터를 지탱하는 기술을 읽고 정리한 글입니다.


     

     

     

    1. [기본 전략] NoSQL 데이터베이스에 의한 데이터 활용


    빅데이터를 위한 분산 스토리지에는 객체 스토리지가 기본이 되어 사용한다.

    장점

    - 필요에 따라 얼마든지 확장할 수 있는 확장성

    - 데이터를 구조화하지 않아도 저장할 수 있는 유연성

    - 임의의 파일로 저장할 수 있음

    단점

    - 객체 스토리지상의 파일을 교체하려면 통째로 교체해야함

    - 객체 스토리지는 열 지향 스토리지를 만들어서 집계를 하느라 시간이 걸린다.

     

    그래서 데이터를 기록하고 바로 활용을 해야하는 경우에는 실시간 집계와 검색에 적합한 NoSQL 데이터베이스를 사용한다. NoSQL 데이터베이스의 종류는 분산 KVS, 와이드 컬럼 스토어, 도큐먼트 스토어, 검색 엔진이 있다.

    (분산 KVS, 와이드 컬럼 스토어, 도큐먼트 스토어에 대한 간단한 설명 참고)


     

     

     

    2. 분산 KVS


    분산 KVS는 모든 데이터를 고유한 Key를 지정하여 Value를 저장하는 쌍으로 설계된 데이터 저장소이다. 분산 KVS는 고유한 Key값을 부하 분산을 위해 이용하는데, 키가 정해지면 그 값을 클러스터 내의 어느 노드에 배치할지 결정한다. 마스터/슬레이브형 시스템의 경우에는 마스터가 중지되면 모든 데이터를 읽고 쓸 수가 없지만, P2P 형의 시스템에서는 모든 노드가 대등한 관계라 어떤 노드에 연결해도 데이터를 읽고 쓸 수 있다.

     

     

    Amazon Dynamo DB

    Dynamo DB는 항상 안정된 읽기 쓰기 성능을 제공하도록 디자인된 분산형 NoSQL 데이터베이스로 하나 또는 두 개의 키에 연결하는 형태로 임의의 스키마리스 데이터를 저장할 수 있고, JSON과 같이 중첩된 데이터 구조도 취급할 수 있다.

    Dynamo DB는 위에서 언급한 P2P 형의 분산 아키텍처를 가지고 있으며, 데이터의 읽기 및 쓰기에 지연이 발생하면 곤란한 애플리케이션에 유용하다.

     

    DynamoDB를 활용한 데이터 파이프라인

    이 DB를 통해 데이터를 분석하려면 Amazon EMR과 Amazon Redshift등과 결합하여 Hive에 의한 배치 처리를 실행하거나 데이터웨어하우스에 데이터를 전송하도록 한다. 이후 Dynamo DB 고유의 기능인 DynamoDB Streams를 사용하면 데이터 변경을 이벤트로 외부에 전송해 실시간 스트림 처리를 할 수 있다.


     

     

     

    3. 와이드 칼럼 스토어


    분산 KVS를 발전시켜 2개 이상의 임의의 키에 데이터를 저장할 수 있도록 한 것와이드 칼럼 스토어이다. 대표적으로 Google Cloud Bigtable, Apache HBase, Apache Cassandra등이 대표적이다. 여기서 키는 행이고, 값은 열이다.

    와이드 칼럼 스토어는 한 테이블과 키와 값을 얼마든지 추가할 수 있기 때문에 하나의 테이블에 2차원에 데이터를 쓸 수 있도록 한 것이 와이드 칼럼 스토어의 특징이다.

     

    Apache Cassandra

    Cassandra에는 CQL이라는 높은 수준의 쿼리 언어가 구현되어 있어서 SQL과 동일한 감각으로 테이블을 조작할 수 있다.

    Cassandra는 테이블의 스키마를 결정해야해서 구조화 데이터만 취급할 수 있다. 하지만 RDB와는 다르게 동일한 키가 가진 레코드가 있으면 INSERT INTO를 사용할 때 데이터를 덮어쓰게 된다.

    Dynamo DB와 같이 P2P 형의 분산 아키텍처를 가지고 있으며, 지정한 키에 의해 결정한 노드에 해당 키와 관련된 모든 값을 저장한다. 그래서 다수의 독립적인 키가 있을 경우 처리를 잘 분산할 수 있다.

    하지만 와이드 칼럼 스토어도 분산 KVS와 같이 데이터를 집계하는데 적합하지는 않다. 왜냐하면 분산된 모든 노드에 데이터를 모아야 하기 때문인데 데이터를 분석하려면 Hive, Presto, Spark를 사용하여 데이터를 추출해야한다.


     

     

     

    4. 도큐먼트 스토어


    와이드 칼럼 스토어는 성능 향상을 목적으로 한다면, 도큐먼트 스토어는 데이터 처리의 유연성을 목적으로 한다. 그래서 JSON같이 복잡한 스키마리스 데이터를 형태 그대로 저장하고 쿼리를 실행할 수 있다. 이와 같은 이유로 도큐먼트 스토어는 외부에서 들여온 데이터를 저장하는데 적합하다.

     

    Mongo DB

    Mongo DB는 분산형 도큐먼트 스토어로 자바스크립트나 각종 프로그래밍 언어를 사용하여 데이터를 읽고 쓸 수 있다. Mongo DB는 신뢰성을 희생했다는 단점이 있지만 대신 성능이 좋기 때문에 NoSQL 데이터베이스에서 인기가 높다.

    Mongo DB는 여러 노드에 데이터를 분산할 수 있지만, 대량의 데이터를 집계하는데 적합하지 않기 때문에 데이터 분석을 하려면 쿼리 엔진으로부터 접속하여 데이터를 추출해야 한다.


     

     

     

    5. 검색 엔진


     

    검색 엔진은 저장된 데이터를 쿼리로 찾아낸다는 점에서 NoSQL 데이터베이스와 비슷하고, 특히 텍스트와 스키마리스 데이터를 집계하는데 자주 사용된다.

    검색 엔진의 특징은 NoSQL 데이터베이스와 다르게 텍스트 데이터를 전문 검색하기 위해 역 색인을 만드는데, 데이터를 기록하는 시스템 부하와 디스크 소비량은 커지지만 키워드 검색이 매우 빨라진다.

    그래서 검색 엔진은 비정상적인 상태의 감지 및 보안 체크, 고객 서포트처럼 민접성이 요구되는 용도에서 최근 데이터를 보기 위해 사용되고, 데이터를 축적하기보다는 실시간 집계 시스템의 일부로 이용된다.

     

    Elasticsearch

    검색 엔진중 가장 인기가 많은 Elasticsearch는 보통 로그 수집 소프트웨어인 Logstash, 시각화 소프트웨어인 Kibana와 함께 ELK 스택 혹은 Elastic 스택으로 자주이용된다.

    Elasticsearchs는 자체 쿼리 언어에 의한 고급 집계 기능을 제공하고 있기 때문에, 열 지향 스토리지에도 대응을 하고 있어 데이터를 집계하기 위한 기반이 된다. 하지만 표준 쿼리 언어는 너무 복잡해서 Kibana 같은 프론트 엔드를 이용하거나 프로그램 안에서 호출하는 것이 주요한 사용법이다.

     

    Splunk

    상용 검색 엔진인 Splunk는 로그 파일이나 JSON 같은 비정형 데이터를  텍스트 처리를 하여 분석할 수 있는 데이터에 뛰어나다.  그래서 Splunk는 검색 엔진이므로 매일 발생하는 각종 이벤트를 빠르게 찾거나, 보고서를 작성하는 목적으로 이용된다. 이때 검색을 실행할 때마다 텍스트에서 필드가 추출되는데, 이것 때문에 검색할 때마다 데이터가 구조화되게 되어 있어 쿼리를 다시 작성하여 어떤 테이블이라도 유연하게 만들 수 있다.


     

    반응형

    댓글

Designed by Tistory.