회사에서 데이터 파이프라인 고도화 작업에 사용한다고 하여 공부하면서 정리해 볼 예정입니다..
빅쿼리란?(BigQuery)
- 대용량 Dataset(최대 몇 십억 개의 행)를 대화식으로 분석할 수 있는 웹 서비스
- 대규모 데이터 저장 및 분석 플랫폼으로, 일종의 데이터 웨어하우스
- 데이터 웨어하우스 : 축적된 데이터를 모아 관리하는 곳
- 확장 가능하고 사용이 간편한 BigQuery를 통해 개발자와 기업은 필요할 때 강력한 데이터 분석을 수행 할 수 있음
특징
- 클라우드 서비스로 설치/운영이 필요 없다.(NoOps)
간단하게 클릭 몇 번으로 서비스 사용이 가능하고, 별도의 설정이나 운영이 필요 없다(PaaS 겸 IaaS) - SQL 언어 사용
기존 RDBMS에서 사용되는 SQL언어를 그대로 사용한다. 로그인 후 SQL만 수행하면 되므로 상대적으로 쉬움 - 클라우드 스케일의 인프라를 활용한 대용량 지원과 빠른 성능
- 데이터 복제를 통한 안정성
3개의 복제본이 서로 다른 데이터 센터에 분산되어 저장되기 때문에 데이터에 대한 유실 위험이 적다. - 배치와 스트리밍 모두 지원
한꺼번에 데이터를 로딩하는 배치 외에, 실시간으로 데이터를 입력할 수 있는 스트리밍 기능을 제공 - 비용이 저렴하다.
구성
- Project : 데이터를 담는 최상위 개념, 하나의 프로젝트에 여러개의 데이터셋이 들어갈 수 있음
- 사용자와 데이터셋에 대한 권한 제어를 포함한 전반적인 리소스 관리
- Dataset : RDB에서 Database의 개념이며, 하나의 Dataset에 여러개의 테이블이 들어갈 수 있음
- 빅쿼리에서 권한 제어를 할 수 있는 최소 단위
- 데이터셋에 대한 권한부여를 통해 다른 사용자와 데이터 공유 가능
- Table : RDB에서 테이블과 동일한 개념
- 스키마를 가지고 있음
- 행(row) 단위 업데이트는 지원하지 않음
- 테이블에 대한 권한제어는 따로 적용되지 않으며, 해당 테이블을 가지고 있는 부모 데이터셋으로부터 상속받음
- Job : BigQuery에서 내리는 모든 명령
- 쿼리 / 데이터 로딩 / 삭제 / 복사 / 내보내기 등의 명령을 수행하는 비동기식 연산
- Job(잡)의 구성요소
- Reference - job ID : 유니크한 이름
- Configuration - job Task : 수행하는 작업 종류
- Status - job state : 오류와 경고를 포함한 상태
- Statistics - job statistics : 수행 내역을 제공하는 통계
- 잡의 구성요소는 향후 감사(audit)등의 목적을 위해서 로그를 남김
- 실행 도중 취소 가능 , 하지만 취소해도 해당 명령에 대한 프로세싱은 이루어지기 때문에 비용 발생
데이터 타입
- STRING : UTF-8인코딩. 최대 2MB
- BYTES : base64로 인코딩 된 이진 데이터
- INTEGER : 64 bit signed integer
- FLOAT : Double precision, floating-point format
- BOOLEAN : CSV format: true or false (case insensitive), or 1 or 0
JSON format: true or false (case insensitive)
- RECORD : A Collection of one or more field
- 중첩 및 반복을 허용하고 JSON 과 같이 여러 개의 데이터 값을 가질 수 있다.
- 불필요한 반복 및 중첩이 많아지면 쿼리를 포함한 여러 가지 작업들이 어려워지니 가급적 피하기
- TIMESTAMP
데이터 필드의 모드
- REQUIRED : NULL값을 허용하지 않음
- NULLABLE : NULL값을 허용(기본값)
- REPEATED : NULL값을 허용하고 1개 또는 배열 형태로 여러 개의 값을 가질 수 있으며 JSON, Avro포맷에서만 사용 가능
데이터 로딩 포맷
- CSV
- JSON(newline-delimited)
- Avro
- Cloud Datastore backups
- Google sheets
## 스키마에 따라서 CSV, JSON , AVRO 모든 flat data 를 지원하지만,
스키마에 중첩되거나 반복되는 필드를 가진 경우 JSON , Avro 만 지원
## 기본적으로 데이터에 줄바꿈(개행문자) 가 포함되어 있는 경우 JSON, Avro 가 빠름
데이터 로딩 지원도구(Tools)
- Web UI : 웹 브라우저 기반으로 제공하는 빅쿼리 전용 웹 콘솔로 비전문가도 사용하기 쉽다.
- Command-line interface (CLI) : 파이썬 기반의 명령어 도구가 제공된다.
- REST API (POST) : POST요청으로 데이터 로딩을 할 수 있는 REST형태의 API를 제공하며, 재개 가능(Resumable)업로드, 다중 부분(Multipart) 업로드의 두가지 옵션을 제공한다.
- Streaming API : 잡을 사용해서 대규모의 데이터를 로드하는 대신 한번에 하나의 레코드를 삽입할 수 있는 API를 제공한다.
- Third-party ETL tools and connectors : 각종 3party의 ETL(Extract, Transform, Load) 툴 및 시각화, 개발환경 등과의 연동할 수 있도록 커넥터를 제공한다.
SQL의 사용
- BigQuery는 Standard SQL과 legacy SQL을 모두 제공
- Legacy SQL은 초기부터 사용 된 문법이나, 2.0이후에는 Standard SQL이 지원
- Standard SQL을 사용하는것이 필수는 아니지만 추천 됨
'Database Study > BigQuery' 카테고리의 다른 글
[BigQuery]bq - 데이터 로드 (0) | 2020.09.04 |
---|---|
OLTP, OLAP (0) | 2020.08.31 |
[BigQuery]표준 SQL 쿼리 구문 (0) | 2020.06.14 |
[BigQuery] Datetime UTC 를 KST로 (0) | 2020.05.26 |
[BigQuery]BigQuery Dremel (0) | 2020.05.26 |