빅데이터, 데이터 엔지니어에 대해 검색하다보면 Data Warehouse(데이터 웨어하우스), Data Lake(데이터 레이크)등의 용어를 볼 수 있습니다. 둘 다 빅데이터를 위한 데이터 스토리지 리포지토리라는 공통점이 있습니다. 하지만 이 둘은 동일하지 않으며 그 목적도 다릅니다. 많은 기업들이 Data Warehouse와 Data Lake를 모두 사용하여 요구 사항과 목표를 충족합니다. 이 두 용어들에 대해 알아보도록 하겠습니다. ( 간단하게 웨어하우스와 레이크 단어만 비교하자면 웨어하우스는 인공적인 느낌, 레이크는 자연 그대로의 느낌이 납니다 )
Data Lake는 데이터를 정형화나 정규화 등을 하지 않고 있는 그대로의 원시 데이터를 저장합니다. 따라서 정형과 비정형 데이터 모두 데이터 레이크에 속할 수 있습니다. 이렇게 저장된 데이터는 사용자가 원하는대로 가공하여 사용할 수 있습니다. 데이터 레이크에는 Schema(스키마)가 없습니다. 사용자가 분석을 하고싶을때 원하는대로 가공하여 볼 수 있으므로 사용자가 분석 시 스키마가 적용됩니다. 이를 'Schema on read(읽기 스키마)'라고 합니다.
'Schema'란 데이터베이스의 구조와 제약조건에 관한 전반적인 명세를 기술한 것입니다. 개체의 특성을 나타내는 Attribute(속성)과 속성들의 집합인 Entity(개체), 개체 사이의 Relation(관계), 그리고 이들이 유지해야 할 제약조건들을 정의한 것입니다. 쉽게 말하여 DB내에 데이터가 어떤 구조로 저장되는가를 나타내는 것입니다.
Data Lake를 사용하면 모든 정보가 보존되며 저장되기 전에 제거되거나 필터링되지 않습니다. 따라서 저장되는 용량이 매우 증가할 수 있고 제대로 유지관리하지 않으면 데이터 관리가 어려울 수 있습니다. 경우에 따라서 데이터에 접근 불가능한 위험이 있는데, 사용자가 접근할 수 없는 데이터 레이크를 'Data Swamp(데이터 늪)'이라고 합니다.
Data Lake는 스키마가 없는 큰 규모의 구조를 지향하기 때문에 일반적으로 Hadoop과 HDFS를 비롯한 에코시스템을 사용합니다.
'Data Warehouse'란 사용자의 의사 결정에 도움을 주기 위해 기간 시스템의 데이터베이스에 축적된 데이터를 공통의 형식으로 변환해서 관리하는 데이터베이스를 말합니다.
Data Warehouse는 RDB를 비롯한 여러 데이터 소스에서 ETL(Extract Transform Load)과정을 거쳐 저장을 합니다. 이 때 주로 필터링, 정렬, 데이터 조인, 중복 제거, 데이터 유효성 검사등을 합니다. 데이터 웨어하우스에 적재된 데이터들은 여러 분석을 하기 쉽게 정형데이터로 저장이 되며 대량의 쿼리작업에 최적화되어 있습니다. 기존의 데이터베이스는 작은 규모의 데이터를 조회,삽입,삭제,수정을 빠르게 하기 위해 만들어진 시스템이라서 큰 규모의 데이터 조회를 했을 땐 부하가 발생하게 됩니다.(ex. 두 테이블을 JOIN) 이런 부하를 발생시키지 않고 큰 규모의 데이터 조회 및 분석을 위해 만들어 진 것이 Data Warehouse 입니다.
Data warehouse로 얻을 수 있는 이점은 아래와 같습니다.
기존의 DB에서 큰 규모의 데이터 조회 및 분석을 하기위해 만들어진 것이 Data Warehouse(DW)입니다. DW에서는 ETL과정을 통해 데이터를 처리해야 하므로 일부 데이터가 삭제됩니다. Data Lake는 처리되지 않은 원시 데이터 그 자체를 저장함으로 유실되는 데이터가 없고 추후에 사용자의 마음대로 데이터를 변환할 수 있게 됩니다.
참고 사이트
https://bomwo.cc/posts/Datawarehouse/
https://aws.amazon.com/ko/data-warehouse/
https://www.redhat.com/ko/topics/data-storage/what-is-a-data-lake
https://loustler.io/data_eng/diff-data_lake-data_warehouse/
https://cloud.google.com/learn/what-is-a-data-lake?hl=ko
https://ko.myservername.com/what-is-data-lake-data-warehouse-vs-data-lake
https://www.redhat.com/ko/topics/big-data