728x90

Database란? 관련된 데이터들이 어떤 형태로 어떻게 구성되어 있는지를 보여주는 것

이러한 database에는 databse management system을 통해 접근할 수 있다.

관계형 데이터 베이스가 중요한 이유

  • 데이터모델의 표준 - 데이터를 가공하고 데이터 베이스에 넣어두면 이후에는 SQL 쿼리 언어로 좀 더 쉽게 데이터에 접근할 수 있다.
  • 테이블을 더하고 수정하는데 유연하다.
  •  Data integrity(보전성) - 데이터 타입에 대해 강하게 관리하고 있으므로, 타입에 맞지 않는 데이터를 모델에 넣으려 할때 충돌이 발생한다. 
  • SQL의 사용
  • 사용의 단순함
  • 직관적인 구조

 

OLAP VS OLTP

 

Normalization(정규성) VS Denomalization(역정규성)

-> 정규화는 데이터의 복사를 최소화 하는 것이다.(*redundancy : 중복성 / integrity: 보존성) 

  : 관계형 데이터베이스의 핵심이다. 각 데이터 간의 의존성을 높이는 것이다. (대표적으로 외래키 사용)

-> 반대로 역정규화는 읽기 작업의 효율성을 위해서 복사된 데이터를 늘린 형태로 데이터를 구조화한 것이다.

 

Nomal Form(데이터 정규화 하기)

정규화의 목적(NoSQL의 사용목적과 반대된다)

  • 데이터 수정시에 불필요한 중복작업을 안하기 위해서
    -> 하나의 데이터를 삭제할때 그것과 외래키로 연결된 다른 테이블의 모든 데이터가 삭제되거나 수정되기를 원한다. 각각의 테이블에서 일일이 데이터를 삭제하는 불필요한 작업을 하지 않기 위해서
  • 데이터 베이스에서 새로운 타입의 데이터가 추가될때 일일이 재작업을 하지 않고 외래키로 관련된 키만 연결해주기 위해서
  • 관계형 데이터베이스에서는 정규화를 통해 사용자에게 더 많은 정보를 제공한다.
  • 특정 쿼리에 맞춰서 테이블을 디자인하는 경우를 없애고, 최대한 쿼리 연산에 중립적인 데이터베이스를 구축하기 위해서

 

6단계까지 있지만 일반적으로 3단계까지

 

 

 

 

 

 

 

 

 

-> 정규화한 관계형 데이터베이스에서의 핵심은 join의 활용이다. 

 

Denormalization(역정규화)

관계형 데이터베이스에서 매우 중요한 개념 중 하나이다.

-> join 작업은 엄청난 유연성을 제공하지만, 매우 느리다. 

-> 역정규화란 정규화의 반대로, 정규화가 데이터의 중복성을 최대한 줄이고, 각 데이터에 외래키로 관계를 정의해서 조인을 통해 데이터를 조회한다면/ 역정규화란 이러한 조인 과정에서의 느린 속도를 해결하기 위해(즉 읽기 작업의 효율성에 좀 더 집중하여) 각 테이블에 같은 내용의 데이터를 배치하는 것이다. 

역정규화를 한다면, 쓰기 작업을 할 때 같은 데이터이더라도 2,3번의 중복 쓰기 작업이 발생해서 쓰기에서는 비효율이 발생하나 읽을때는 하나의 테이블에서 굳이 조인없이 바로 데이터를 읽을 수 있어서 읽기 작업이 효율적이다.

 

Fact table & Dimension table

 

-> 즉 어떤 특별한 방식으로 다르게 만들어지는 테이블 형식이 아니라 테이블이 구조화 되어있는 어떠한 방식을 의미한다.

-> 테이블들이 이루어진 하나의 구조인 스키마 중에서, star schema와 snowflake schema와 관련된 개념이다.

-> 이 두개의 스키마는 실제로 data warehouse의 데이터를 모델링하는데 중요한 개념이다.

 

Fact table

데이터들의 집계/ 말그대로 그 현상들의 데이터를 모아둔 것이다.

 

Dimension table

각 데이터들의 세부적인 정보가 담겨있다.

 

- 데이터 중심 어플리케이션 설계 ch.03에 언급된 개념이다 (참고)

fact table의 칼럼들은 하나의 이벤트들을 나타내는데 이러한 이벤트들에 대한 속성(언제, 어떻게 등)은 dimension table에 저장되어 있어서 fact table과 외래키로 엮여있다. 즉 fact table은 연관된 이벤트들의 외래키로 구성되어 있고 그 주변에 해당 데이터의 속성이 담긴 dimension table

 

Star Schema

star schema는 fact table과 dimension table로 이루어져 있는데 fact table 을 중심으로 여러 dimension table이 연결되어 모인 형태다. 즉 fact table 그 주변에 해당 데이터의 속성이 담긴 dimension table이 둘러싸고 있는 모습이 별모양 같아서 star schema라고 한다. 이러한 스키마에서 좀 더 정규화가 진행된다면 snowflake schema가된다. 

 

Star schema의 이점

  • 역정규화의 특성
  • 이로 인해 데이터 조회 시 쿼리가 간단함.
  • 각 데이터 관계성을 기반으로 fact table 중심으로 관련된 테이블들이 모여있어서 데이터 집계가 빠르다

Start schema의 단점

  • 역정규화의 단점을 다 가진다.(쓰기 작업 시의 비효율성)
  • 중복된 데이터의 존재
  • 쿼리의 유연성이 준다.
  • m to m 관계 데이터를 표현하기 힘들다

 

snowflake schema

-> 각 테이블들이 구조를 이루는 형태가 마치 눈꽃송이처럼 여기저기 퍼져있다는 의미

-> 다양한 dimenshion table로 이루어져 있다.

 

 

728x90

+ Recent posts