[TIL] W2D1

stella·2021년 8월 9일
0

[DAY 6]

오늘은 RDBMS에 대해 전체적인 개념을 배웠다.
이번 강의를 통해 지금까지 일반적으로 알고 있었던 관계형 데이터 베이스는 프로덕션 관계형 데이터 베이스에 속하는 사실을 알게 되었다..
또한 데이터 엔지니어,데이터 과학자, 데이터 분석가 직무의 차이점에 대해 알게 되었고 백엔드 개발자 관점에서 데이터 베이스를 바라봐야하는 시각(?)을 알게 되었다.

RDBMS

구조화 된 테이블들로 나누어 저장하여 it 서비스를 운영할 수 있도록 해준다
보통 RDBMS에는 프로덕션 관계형 데이터베이스와 데이터 웨어 하우스 관계형 베이스로 나눌 수 있다.

RDBMS vs NoSQL
RDBMS는 구조화 데이터에 최적화 되어있다. 따라서 구조화 되었지만 데이터의 크기가 크거나 비구조화 된 데이터(비디오, 이미지, 텍스트)들을 비관계형 데이터 베이스를 이용하여 보완한다.

(1) 프로덕션 관계형 데이터 베이스(OLTP)

웹서비스나 앱 운영에 필요한 정보를 저장하는 역할을 하며 보통 IT 서비스에서 고객 정보등과 같은 데이터들을 다룬다. 그렇기 때문에 빠른 처리속도가 중요하다.

느려지는 경우 -> 보통 테이블의 최적화문제등 뒷단의 관계형 데이터베이스 이슈이다

대표적으로 mysql과 Postgre SQL가 있다.

(2) 데이터웨어 하우스 관계형 데이터 베이스 (OLAP)

회사 내부에서 직원들이 사용하는 데이터들이 저장되어 있으며 보통 회사관련 데이터들을 모두 저장한다. 회사의 데이터들을 저장하기 때문에 빠른 처리속도 보다는 얼마나 큰 데이터를 처리할 수 있는지가 더 중요하다!!
대표적으로는

데이터처리 과정

(1) 웹/앱에서 생성되는 다양한 데이터들을 프로덕션 데이터베이스에 저장한다.

(2) 서비스에서 생성되는 데이터, 외부 데이터(이메일과 마케팅 등등)들을 추출해서 데이터 웨어하우스에 저장한다

데이터 엔지니어가 추출할 코드를 작성하여 (2)과정을 수행한다.

(3-1) 데이터 웨어 하우스에 저장된 데이터들을 시각화 하여 회사의 방향성, 중요지표등을 알 수 있다,

데이터 분석가가 (3-1)과정을 수행한다.

(3-2) 데이터 웨어 하우스에 있는 것을 바탕으로 개인화를 통해 개인 맞춤 서비스를 제공해 주거나 사용자 경험을 개선해준다.

ex) 쇼핑몰에서 내가 봤던 상품들과 비슷한 것들이 추천 서비스에 올라오는 것

데이터 과학자가가 머신러닝, 인공지능으로 (3-2)과정을 수행한다.

백엔드 개발자 관점

백엔드 관점에서는 프로덕션 관계형 베이스가 더 중요하다!!

프리젠테이션 티어(클라이언트,프론트)- 애플리케이션 티어(미들웨어, 백엔드)- 데이터 티어(프로덕션 데이터 베이스)

백엔드에서는 사용자의 요구에 따라 비지니스 로직을 수행하고 (비지니스 레이어) 서비스가 만들어낸 데이터들을 데이터 베이스에 저장하고 저장되어 있는 데이터를 조회하는 역할을 한다 (persistence 레이어)

persistence레이어는 데이터레이어와 함께 데이터 티어로도 생각해도 무방하다

백엔드 개발자는 데이터 모델을 잘 만들어야 한다-> 테이블을 어떻게 표현할 것인지

star 스키마 vs Denormalized 스키마

보통 star 스키마는 프로덕션 데이터베이스에서 사용되며 정보를 중복해서 적지 않고 pk만 가져다가 쓴다 또한 필요할때 조인해서 정보를 알 수 있다.
이 과정을 통해 스토리지 낭비가 덜하고, 업데이트시 하나의 테이블만 바꾸어도 되기 때문에 업데이트가 쉽다.
하지만 조인연산에서 리소스와 시간이 사용되어 속도의 저하를 가져올 수도 있다.

반면, Denormalized 스키마는 데이터 웨어 하우스, nosql에서 사용되며
데이터 웨어 하우스에서는크기의 제약을 받지 않기 때문에 스토리지를 낭비해도 상관이 없어서
조인연산없이한번에 모든 데이터들을 저장한다. 조인연산이 필요 없기 때문에 빠른계산을 가능하여 속도가 빠르다.

DDL

예전부터 DDL문법들이 헷갈렸다

  • DROP TABLE IF EXISTS table_name;
    (DELETE FROM 은 레코드 삭제)

  • 컬럼추가:ALTER TABLE 테이블이름 ADD COLUMN 필드이름 필드타입;

  • 컬럼 이름변경:ALTER TABLE 테이블이름 RENAME 현재필드이름 to 새필드이름

  • 기존 컬럼 제거: ALTER TABLE 테이블이름 DROP COLUMN 필드이름;

  • 테이블 이름 변경:ALTER TABLE 현재테이블이름 RENAME to 새테이블이름;

profile
뚠뚠뚠..

0개의 댓글