인프런 커뮤니티 질문&답변
데이터베이스와 데이터 웨어하우스의 차이가 궁금합니다
해결된 질문
작성
·
3.4K
·
수정됨
0
안녕하세요 카일님 :)
데이터베이스(DB)와 데이터 웨어하우스(DW)와 관련된 질문드려요.
DB와 DW 간의 차이는 무엇인가요? 평소 막연하게 DW가 더 큰 개념이라고만 알고 있었는데, 데이터 파이프라인 관점에서 어떤 차이가 있는지 궁금합니다!
DB: mysql, postgresql
DW: bigquery
위처럼 구분지을 수 있는 게 맞을까요?서비스 관점에서 DB와 DW가 어떻게 사용되나요?
예를 들어 방문, 결제 등의 로그를 우선 DW에 저장해두고, DB에 관계형으로 이후 저장되는 것일까요?presto, hive와 같은 쿼리 엔진은 데이터 파이프라인에서 어떤 역할을 하는지 궁금합니다!
+) 평소 기술 블로그에서 큰 도움을 받았는데, 이렇게 강의까지 열어주셔서 감사합니다!
답변 1
2
알렌님 안녕하세요! :)
3년차 PM, 이직 1일차 회사 적응기에 간단히 말씀드렸는데, 조금 더 자세히 말씀드릴게요!
DB : Database
- 서비스에서 사용하는 데이터베이스로 웹이나 앱에서 사용하기 위한 목적으로 사용됩니다. 대부분의 서비스가 Database가 꼭 필요하지요. User의 정보, 배달 서비스라고 하면 주문 정보, 가게 정보 등의 데이터가 저장될거에요. 이 데이터는 유저에게 노출되기도 합니다(내 주문 내역에 보면 있는 것들 = DB에 있어서 보여줄거에요)
- 대표적으로 MySQL, Oracle, PostgresQL 등이 있습니다
DW : Data Warehouse
- 데이터 웨어하우스로 데이터를 저장하는 공간입니다. DB도 데이터를 저장하는 공간인데 DW는 무슨 차이가 있는가?라고 생각하면 최근 데이터 인프라 관점에선 데이터 분석은 DW에서 많이 진행합니다.
- DB(MySQL, PostgresQL) 등은 Transaction(거래)에 최적화되어 있고, 분석용으론 적합하지 않습니다. 반면에 DW는 분석에 최적화가 되어 있어요.
- DB와 DW의 큰 차이는 DB는 대부분 Index라는 개념이 존재해요. 그래서 인덱스를 고려해서 쿼리를 작성해야 실행 시간이 빠르고 인덱스를 고려하지 않으면 쿼리가 느려집니다. 또한 Row 기반 데이터베이스로 특정 SELECT를 할 때 내부적으로 Row를 모두 가지고 옵니다. 반면 DW는 대부분 Index라는 개념이 없고, 컬럼 기반 데이터베이스입니다. 컬럼 데이터 기반이라 필요한 컬럼만 SELECT해서 속도가 더 빠릅니다
- 대표적으로 BigQuery, Snowflake, Redshift 등이 있습니다
다만 DB라는 단어가 혼용되어서 데이터를 저장하면 DB라고 부르기도 합니다. 용어가 꽤 여러 관점으로 쓰이기도 해요. 그래서 저는 서비스용 DB와 분석용 DW라고 나눠서 생각하는 것을 추천드리곤 합니다.
데이터 파이프라인 관점은 많은 회사들이 다음과 같은 패턴을 보입니다
- 서비스 DB -> DW로 데이터를 옮김
- GA나 Firebase의 데이터는 클릭 몇번만 하면 자동으로 DW(BigQuery)로 옮겨짐
- Amplitude는 BigQuery로 Export하는 기능이 제공(다른 저장소도 가능)
- 한 곳에서 데이터를 모아서 활용함
활용 기준으론
- 서비스 DB : 웹, 앱 등 서비스에서 사용하기 위한 목적
- DW : 데이터 분석을 위한 목적, 데이터 분석이나 머신러닝 알고리즘 만들 때 데이터를 저장
- 만약 서비스 DB에서 데이터 분석을 위한 쿼리를 실행하고 있다면 아직 데이터 인프라가 충분히 뒷받침되지 못해 일단 서비스 DB에서 쿼리를 실행하고 있을 확률이 큽니다(대부분 DW가 없으면 이런 환경일거에요)
- 데이터 인프라가 발전했으면 대부분 DW에서 데이터 분석을 하고(속도도 빠르고 지원하는 함수도 더 편리하므로) DB 접근 권한을 잘 주지 않을거에요(개발이나 PM, CS 정도에게만 주곤 합니다)
예를 들어 방문, 결제 등의 로그를 우선 DW에 저장해두고, DB에 관계형으로 이후 저장되는 것일까요?
위 관점은 회사에서 데이터를 어떻게 저장하느냐에 따라 다릅니다. 어떤 회사에선 서버에서 바로 DW로 저장할 수도 있고, 어떤 회사에선 서버에서 DB로 저장하고 DE가 그 데이터를 DW로 옮길 수도 있습니다. 그래서 어떤 것을 어디에 저장한다는 회사마다 다르다고 생각해주시면 좋을 것 같습니다
Presto는 SQL 쿼리 엔진으로 쿼리를 실행해주는 엔진이며 Hive는 하둡 생태계에서 사용하는 SQL 쿼리 엔진과 유사하다고 생각해주시면 됩니다(더 정확히는 HiveQL을 내부적으로 맵리듀스 코드로 변환해서 실행) 둘 다 데이터를 처리해주는 쿼리 엔진으로 생각해주시면 됩니다. Presto와 Hive도 데이터 웨어하우스인가?라는 헷갈림이 있을 수 있는데 어떤 곳에선 넓은 의미에선 DW가 맞다라고 하는 경우도 있고, 어떤 경우엔 아니라고 하기도 합니다(에코 시스템이라고 볼 수는 있으나 데이터 웨어하우스까진 아닌..!)
요즘 DW라고 부르는 것은 대부분 클라우드 시스템 위의 환경이 대부분이고 데이터를 이동시키는 것, 데이터 모델링 및 최적화, 그 외에 편리한 기능, 데이터 저장 등을 모두 망라하는 시스템이라고 보시면 됩니다
말씀해주신 내용은 제가 추후에(다다다음 정도) 만들 예정인 데이터 엔지니어링 강의에서 더 자세히 다루게 될 것 같아요! 나오기까진 시간이 걸릴 것 같아 일단 이렇게 답변을 드렸어요. 혹시 궁금하신 내용이 있으시면 언제든 댓글 달아주세요 :)
기술 블로그 잘 봐주셔서 감사합니다!






상세하게 답변 주셔서 감사합니다! 다다다음 강의도 기대하겠습니다 ㅎㅎ