베하 !
문땅훈과 루피입니다 !!
오늘은 'BigQuery'에 대해 알아보도록 하겠습니다.
BigQuery란?
머신러닝, 지리정보 분석, 비즈니스 인텔리전스와 같은 기본 제공 기능으로 데이터를 관리하고 분석할 수 있게 해주는 Fully managed Enterprise Data Warehouse
오늘 날 많은 조직이 구글 빅쿼리 같은 클라우드 기반 데이터 웨어하우스로 이전하는 주된 이유로 크게 5가지로 정리할 수 있습니다.
(1) 고급 분석에 대한 비즈니스 요구와 더불어 비용 관리, 민첩성, 자체 서비스의 접근 인프라를 관리할 필요없이 기업은 익숙한 SQL을 사용해 의미있는 통찰력을 찾는 데이터 분석에 집중 가능
(2) 연산과 스토리지를 분리하는 서버리스 컴퓨팅 아키텍처 덕분에 아키텍처의 다양한 계층을 독립적으로 실행하고 확장 가능
(3) 디자인과 배포 면에서도 데이터 과학자에게 더욱 높은 유연성을 제공
(4) 머신러닝과 지리공간 분석도 지원
(5) Cloud Pub/Sub, Dataflow, Bigtable, AI 플랫폼을 비롯한 다양한 써드파티 도구와 통합 가능
특징
- 스토리지와 연산 기능의 클러스터 컴퓨팅이 분리되어 있음
- 페타비트급 네트워크
- 열 기반으로 찾아서 속도가 빠름
- 파티션 된 테이블 (where 조건문)
- 빅쿼리에서 머신러닝 작업도 가능
작동 방식
앞서 언급한 특징 중에서 ‘스토리지와 연산 기능의 클러스터 컴퓨팅이 분리’되어 있으므로 필요에 따라 스토리지와 컴퓨팅을 모두 독립적으로 확장할 수 있습니다.
빅쿼리 스토리지의 주요 기능으로는 크게 4가지가 있습니다.
(1) 관리형 : 빅쿼리 스토리지는 완전 관리형 서비스로 시스템에 데이터를 로드할 때 자동으로 스토리지를 할당
(2) 내구성 : 여러 가용성 영역에 걸쳐 데이터를 복제하여 머신 수준 장애 또는 영역 장애로 인한 데이터 손실 방지
(3) 암호화 : 디스크에 기록하기 전에 모든 데이터를 자동으로 암호화
(4) 효율적 : 분석 워크로드에 최적화된 효율적인 인코딩 형식 지원
빅쿼리 리소스 구성
계층 구조를 사용하여 권한, 할당량, 슬롯 예약, 청구 등의 BigQuery 워크로드 측면을 관리할 수 있습니다.
Organization
- 리소스 계층 구조의 루트 노드로 BigQuery 사용에 조직 리소스가 필연적이지는 않지만 만드는게 좋습니다.
Folder
- 프로젝트 위에 있는 추가적인 그룹화 메커니즘
Project
- 모든 Dataset은 프로젝트와 연결되어 있으며, 프로젝트 안에는 여러 Dataset을 포함할 수 있고 위치가 서로 다른 Dataset가 동일한 프로젝트에 존재할 수 있습니다.
- 항상 프로젝트와 연결되지만 데이터를 포함하는 동일한 프로젝트에서 실행될 필요는 없습니다.
Dataset
- 빅쿼리 리소스에 대한 액세스를 구성하고 제어하기 위해 사용되는 논리적 컨테이너로 연관된 데이터를 모아서 특정 규칙에 따라 하나의 묶음으로 만든 데이터의 집합입니다.
- 테이블, 뷰, 함수, 프로시저를 비롯하여 생성되는 대부분의 BigQuery 리소스는 데이터 세트 내에 생성되고, 데이터 세트를 만든 후에는 위치 변경이 불가능합니다.
BigQuery 분석
- 표준 SQL 쿼리
- Looker Studio 사용하는 BI Engine, Looker, Google Sheets, 타사도구(Tableau 및 Power BI 등)를 포함한 비즈니스 인텔리전스 도구 지원
- BigQuery ML은 머신러닝 모델링 및 예측 분석 제공
- 외부 테이블 및 통합 쿼리로 BigQuery 외부 데이터 쿼리
비용
- 주문형 가격 책정(온디맨드) : 쿼리를 실행하는 프로젝트로 쿼리 비용 청구 (즉, 쿼리를 사용한 만큼 비용 청구)
- 정액제 가격 책정 : Slot 예약이 해당 Slot을 구입하는 데 사용된 관리 프로젝트에 청구
- 스토리지 비용 : Dataset가 있는 프로젝트에 청구
BigQuery 분산 처리 기술 - Hadoop MapReduce Framework
Hadoop은 Apache에서 만든 MapReduce 프레임워크 오픈소스로 BigQuery에서 MapReduce는 분산 컴퓨팅 프레임워크인 Apache Hadoop의 핵심 개념 중 하나입니다.
Hadoop 이해에 꼭 필요한 개념은 바로 ‘MapReduce(작업 처리)’ + ‘HDFS(데이터 저장)’입니다.
데이터가 매우 큰 경우 하나의 시스템에서 처리할 수 없기 때문에 시스템을 많이 두고 작업량을 분산시켜서 동시에 병렬 처리하는 방식 택했습니다.
즉, MapReduce는 대량의 데이터를 처리하고 분석하는 데 사용되며, 특히 병렬 처리와 장애 대응 기능을 갖춘 분산 시스템에서 유용합니다.
크게 처리되는 단계를 정리하자면 아래와 같이 정리할 수 있겠습니다.
(1) Map : 분산된 데이터를 키와 값의 리스트로 모으는 단계
(2) Shuffle and Sort : 맵 단계에서 나온 중간 결과를 해당 reduce함수에 정렬해서 전달하는 단계
(3) Reduce : 리스트에서 원하는 데이터를 찾아서 집계하는 단계
추가로 데이터베이스 시스템에서 데이터 처리 및 분석을 위해 사용되는
주요 개념인 OLTP/OLAP 대해서도 알면 좋아요😊
+) OLTP / OLAP
(1) OLTP (Online Transaction Processing)
- 목적 : Data INSERT, UPDATE가 빈번하게 일어나서 DB에 최신 데이터를 유지하는 것 뿐만 아니라 데이터 무결성(데이터가 정확하다는 뜻)을 보장 ⇒ 즉, 현재의 데이터 처리가 얼마나 정확하고 무결한지가 중요
- 간단한 쿼리를 이용해 빠르게 데이터를 처리(INSERT, UPDATE, DELETE)
- Database를 편리하게 관리(운영)하도록 도와줌
(2) OLAP (Online Analytical Processing)
- 목적 : 사용자의 의사결정에 도움을 주는 것 (데이터 분석, 데이터 마이닝에 주로 사용)
- ⇒ 이미 저장된 데이터를 바탕으로 어떤 정보를 제공하는지가 중요
- 데이터를 분석 및 집계 (SUM, COUNT)
- 쿼리는 상대적으로 OLTP보다 복잡, 집계 처리 시간이 오래 걸리는 편
BigQuery의 개념과 어떤식으로 작동되는지 등 다양하게 알아봤는데 어떠신가요 ? ㅎㅎ
데이터에 관심이 있다면 BigQuery는 꼭 알아야 하는 서비스 중 하나인 거 같습니다 !
그럼 다음 시간에 봐요 ~
베빠 !
'Database' 카테고리의 다른 글
일괄 처리(Batch processing) & 스트림 처리(Stream processing) (0) | 2023.06.23 |
---|---|
Airflow 버전별 Web UI 및 기능 활용 (0) | 2023.06.22 |
SQL과 기초 문법 (0) | 2023.06.22 |
Redis를 활용한 Celery Executor 설정 (0) | 2023.06.21 |
Snowflake VS Databricks (0) | 2023.06.21 |
댓글