BigQuery 빅쿼리란?
BigQuery 빅쿼리란?
빅쿼리는 구글에서 만든 클라우드용 데이터웨어하우스(DW)로, 빅데이터에 최적회된 저장 및 분석용 클라우드 서비스이다.
빅쿼리의 구조는 관계형이 아닌 NoSQL기반의 데이터 저장소이나, 일반적으로 사용하는 관계형 RDB처럼 쓸 수 있도록 SQL을 제공한다.
머신러닝, 지리정보분석, 비즈니스 인텔리전스와 같은 기능을 기본 제공하여 데이터를 분석/관리할수 있다.
여러 프로그램과 연동 가능하며, 특히 구글 애널리틱스와 연동하여 수집한 데이터를 새롭게 가공할 수 있다.
빅쿼리 특징
클라우드 서비스로 설치 및 운영이 필요 없음(NoOps)
로컬이나 서버 등에 설치해서 사용하는 서비스가 아닌 언제 어디서나 사용가능한 클라우드 서비스를 제공한다.
인터넷이 가능한 어디서나 클릭 몇번으로 사용이 가능하고, 별도의 설정이나 운영환경 세팅이 필요없어 편리하며 비용 또한 저렴하다.
SQL 사용 가능
빅쿼리는 NoSQL기반이지만 구글에서 RDB에서 사용하는 SQL사용환경을 제공한다.
단, 우리에게 익숙한 RDB의 데이터 구조와 완전히 동일하지는 않다. 자주보기 힘든 배열 ARRAY, 구조체 STRUCT, UNNEST 등의 문법을 사용하기 때문이다. 예를 들어 우리에게 익숙한 RDB의 데이터 구조가 다음과 같다면,
ARRAY, STRUCT, UNNEST 문법이 사용된 데이터 구조는 다음과 같다.
위와 같이 하나의 행에 데이터 타입이 동일한 여러값이 저장되는 형태가 배열 ARRAY ,
필드에서 . 으로 이루어진 (event_params.key , event_params.string_value) 형태가 구조체 STRUCT 이다.
현재 예시에서는 구조체 형태의 필드에 배열이 들어간 형태이다.
이러한 구조에서 기존의 익숙한 1:1 구조로 평면화(Flatten)시켜주기 위한 함수가 UNNEST 즉, NEST(끼워넣다)한 데이터를 UNNEST하게 만들어 주는 함수이다. UNNEST함수는 ARRAY를 입력받아 ARRAY의 각 요소에 대한 행이 한개씩 포함된 테이블을 return해준다.
(사용법에 대해선 별도 포스팅 참고)
대용량 지원과 빠른 성능
페타바이트급 데이터 웨어하우스라고도 불리우는데, 빅쿼리의 확장가능한 분산형 분석엔진을 통해 페타바이트급의 데이터를 저장할 수 있으며 몇분만에 쿼리할 수 있다.
타DBMS와 비교했을때 매우 빠른 속도를 자랑한다. 8800개의 CPU와 3600개의 디스크를 사용하는 대규모 인프라를 활용하여
약 1000억개의 레코드에 대한 질의를 30초정도에 수행한다고 한다.
데이터 복제를 통한 안정성
3개의 데이터 복제본이 서로 다른 3개의 데이터 센터에 분산되어 저장된다.
데이터 유실 위험이 적다고 볼 수 있다.
배치와 스트리밍 모두 지원
한꺼번에 데이터를 로딩하는 배치 외에도 REST API등을 통해 실시간으로 데이터를 입력할 수 있는 스트리밍 기능을 제공한다.
스트리밍시에는 초당 100,000개의 행데이터를 입력할 수 있다.