구글 빅쿼리 (Google Bigquery) 관련 정리

2017. 12. 20. 17:19서버 프로그래밍

1. 장점

- 데이터의 양에 상관 없이 일정한 속도를 유지한다. (평균 1~2초대)

- AWS S3보다 상대적으로 저렴한 비용으로 저장할 수 있다(고 한다).


2. 단점

- 비정형 데이터를 정형 데이터 스키마 형식으로 관리를 해야하기 때문에, 오리지널 비정형 데이터를 수용하기 위해 스키마를 정의하는 것이 복잡하다.

- 한번 만들어진 테이블의 스키마 변경이 불가능하다. --> 데이터 구조의 유연성은 떨어지는 것으로 보인다.

- 한번 저장한 데이터의 삭제가 불가능하다. --> 로그성 데이터의 경우에는 문제가 없기는 한데, 수정 뿐만 아니라 삭제까지 막혀있는 것은 처음 본다.

- 쿼리문을 사용할 수 있다고 하지만 100% 호환은 아닌듯 하다. (Hive처럼 Query문으로 입력 받아서 별도의 로직으로 변환하여 처리하는 듯)

- Node.js용 빅쿼리 API 연동 라이브러리를 이용하여 한번에 insert 할 수 있는 데이터의 크기가 한번에 10메가 정도로 작은 편이다.

- 생각보다 참고할만한 레퍼런스가 아직은 부족하게 보인다.


* 배열 형식의 데이터가 저장된 컬럼에 대한 쿼리 방법

https://stackoverflow.com/questions/25939075/bigquery-not-a-leaf-field-error

https://cloud.google.com/bigquery/docs/reference/legacy-sql#flatten


* 빅쿼리 스트리밍 데이터 로딩하기

http://whitechoi.tistory.com/28

* Node.js용 빅쿼리 라이브러리 샘플 소스

https://github.com/googleapis/nodejs-bigquery/blob/master/samples/tables.js


* 구글 클라우드 연동을 위한 인증 방법

https://cloud.google.com/docs/authentication/getting-started#auth-cloud-implicit-nodejs


* 빅테이블 쿼리 문법, 테이블 관련 참고 자료

https://cloud.google.com/bigquery/docs/reference/standard-sql/query-syntax

https://cloud.google.com/bigquery/docs/tables


* 데이터플로우 프로그래밍 모델

https://cloud.google.com/dataflow/model/programming-model