상황에 맞는 빅 데이터 플랫폼을 활용한다. 일반적으로 Apache Hive나 Apache Impala의 SQL을 사용해서 복잡한 분석을 수행하고, NoSQL로 데이터를 수집 및 관리한다.
|
다양한 데이터베이스와 빅 데이터 플랫폼
데이터베이스는 Operational Database와 Analytic Database로 구분한다. 각각의 데이터베이스 성격에 따라서 사용하는 빅 데이터 플랫폼을 상이하다.
1) Analytic Database에서는 Apache Hive, Apache Impala가 사용된다. Analytic Database는 복잡한 분석을 위한 쿼리를 효율적으로 지원하는 것이 중요하다. Apache Hive나 Apache Impala는 SQL 기반으로 시스템마다 기능을 더해서 복잡한 분석 처리를 지원한다.
2) Operational Database에서는 NoSQL 기반의 데이터베이스 시스템이 사용되며 Apache HBase, Cassandra, MongoDB, CouchBase가 있다. Operational Database의 특징은 다양한 데이터가 저장된다는 것이다. 이러한 데이터 중에는 구조가 일부만 존재하거나 없는 데이터도 있다. 반구조화된 데이터 혹은 구조가 없는 데이터는 RDBMS에서처럼 테이블 형태의 스키마를 정의할 수 없다. NoSQL은 테이블 형태가 아닌 Key와 Value로 데이터를 관리하므로 다양한 종류의 데이터를 처리할 수 있다.
3) 트랜잭션은 필요하지 않지만 구조화된 빅 데이터를 처리하기 위해서는 Kudu를 사용한다. Kudu는 데이터를 테이블 형태로 관리하지만, RDBMS에서처럼 트랜잭션을 지원하지 않는다. 일반적으로 Kudu는 Operational Database와 Analytic Database에 어느 정도의 성능을 보장하는 시스템이다.
4) OLTP(Online Transaction Process) 시스템에서는 ACID-트랜잭션을 지원해야 한다. 트랜잭션은 지원하기 위해서 Apache Phoenix 프로젝트가 있다. 이는 Apache HBase를 데이터베이스 엔진으로 사용하고, 저장된 데이터에 테이블 구조를 부여하는 방식으로 동작한다.
5) 텍스트 데이터를 검색하기 위해서는 Apache Lucene 인덱싱 기반의 Apache Solr와 Elasticsearch가 사용된다. 색인은 빠른 검색을 위해 필요한 데이터베이스 자료구조이다.
빅 데이터 환경에서 SQL
빅 데이터 환경에서 SQL을 사용하기 위해서는 다음과 같은 과제를 해결해야한다.
1) 구조화되지 않은 다량의 데이터를 처리해야 한다. 이를 위해서 Schema-on-Read 방식을 도입하고 NoSQL과 같은 데이터베이스가 등장한다.
2) 트랜잭션을 처리해야 한다. 빅 데이터 환경에서 분사 저장된 데이터에 대해서 트랜잭션 명령을 처리하는 상황이 발생한다. 하지만 SQL은 트랜잭션 문제에 있어서 사실상 포기하였다.
따라서 빅 데이터 환경에서 SQL은 복잡한 분석을 도와주는 도구이다. 구조화되지 않은 데이터를 결국에는 테이블 형태의 구조를 부여하고 SQL을 통해 분석을 수행한다. 테이블 형태의 구조를 부여하는 과정에서 메타데이터가 사용되면, 이마저도 RDBMS처럼 엄격하게 지켜야 하는 것은 아니다. 데이터 처리의 유연성이 높아졌지만, 이로 인해 RDBMS에서 유지하고 있었던 속성들을 일부 지원하지 않는다.