이번 포스팅에서는 분산 환경에서의 OLAP, 쿼리 실행 모델 및 그 외 알아두면 괜찮은 것들에 대해 살펴보겠습니다.
OLAP
OLAP란 On-Line Analytical Processing의 약자입니다. OLAP는 OLTP처럼 단순한 CRUD 유형의 작업이 목적이라기보다는 분석 등의 복작한 작업을 수행하는 데 사용됩니다.
Schema
OLAP용 스키마는 fact 테이블과 dimenstion table로 구성됩니다. Fact 테이블은 dimention 테이블의 모든 키와 종합된 데이터를 가지고 있습니다. Dimension 테이블의 경우 fact 테이블의 종합된 데이터를 생성하기 위한 정보를 가지고 있습니다.
Star Schema
별 모양을 닮은 스키마를 의미합니다. 다음에 살펴볼 snowflake schema와 다르게 sub-dimension table 없이 fact table과 dimenstion table로만 구성이 돼있어 비교적 단순한 구조입니다.
Snowflake Schema
Snowflake schema는 star schema에서 정규화를 한번 더 거쳐 sub-dimension 테이블을 사용합니다. 따라서 star schema에 비해 데이터의 중복이 덜 하다는 장점이 있습니다. 하지만 데이터 조회를 위해서는 더 많은 join 쿼리가 필요하고 복잡성이 증가한다는 단점이 있습니다.
Query Execution Model
다음으로는 쿼리가 처리되는 방법에 대해 살펴보겠습니다.
Push Query to Data
이 방법은 데이터를 소유한 노드에 쿼리를 보내서 처리하는 방법입니다. 네트워크로 결과를 전달하기 전에 쿼리를 처리하는 노드에서는 최대한 많은 데이터를 필터링하거나 프로세싱을 수행합니다. 대표적인 예시로는 Redis와 HDFS가 있습니다.
Pull Data to Query
쿼리 수행에 필요한 데이터를 쿼리를 처리할 수 있는 노드로 가져오는 방법입니다. 대표적인 예시로는 전통적인 RDBMS(MySQL, PostgreSQL 등), MongoDB 와 Couchbase 등이 있습니다.
ETC
다음으로는 분산 환경 데이터베이스를 구축할 수 있는 다양한 방법에 대해 살펴보겠습니다.
Cloud System
요즘에는 IaaS, PaaS, SaaS처럼 DBaas(Database as a Service) 유형의 서비스가 제공되기도 합니다.
Managed DBMSs
저희가 클라우드에서 데이터베이스를 사용한다면 주로 사용하는 형태입니다. AWS가 제공하는 RDBMS가 대표적인 예시입니다.
Cloud Native DBMS
클라우드 환경에 운용하기 위해 설계된 DBMS입니다. 주로 shared-disk 아키텍처로 구성돼있습니다. 대표적인 예시로는 Amazon Redshift, Microsoft SQL Azure, Google BigQuery와 snowflake 등이 있습니다.
Serverless Databases
Serverless 데이터베이스는 데이터베이스를 운용하기 위한 infrastructure 또는 resource를 사용자 대신 관리함으로써 사용자가 데이터베이스를 사용하는 것 이외에 신경 쓸 것을 최소화할 수 있습니다. 또한 사용자는 데이터베이스를 사용하는 동안에만 비용을 지불하기 때문에 상황에 따라서 비용을 절약할 수 있습니다. 대표적인 예시로는 Amazon DynamoDB, Google Cloud Firestore과 Azure Cosmos DB가 있습니다.
마무리
이번 포스팅을 마무리로 분산 환경에서의 데이터베이스와 관련된 것들에 대해 살펴봤습니다. 클라우드 환경은 지속적으로 발전하는 분야이기 때문에 꾸준한 관심을 가지고 학습하는 게 중요한 것 같습니다.
'Database > DBA급 개발자로' 카테고리의 다른 글
[Database] DBA급 개발자로 - #0 소개 (2) | 2022.12.18 |
---|---|
[Database] DBA급 개발자로 - #22 Distributed Database 2/3 (2) | 2022.12.10 |
[Database] DBA급 개발자로 - #21 Distributed Database 1/3 (0) | 2022.12.09 |
[Database] DBA급 개발자로 - #20 Database Recovery (0) | 2022.12.05 |
[Database] DBA급 개발자로 - #19 Database Logging (0) | 2022.12.04 |