데이터 베이스 Database

yojuyoon·2020년 7월 9일
0

TIL👌

목록 보기
14/23

Database 란?

  • 데이터를 저장 및 보존하는 시스템
  • 데이터베이스를 사용하는 이유는 데이터에 접근 및 관리가 편리하기 때문이다.
  • 하나의 셀 안에 하나의 데이터만

Database의 종류

RDBMS(관계형),NoSQL(비관계형)

관계형 데이터 베이스 RDBMS

  • 모든 데이터들은 테이블로 구성. 마치 엑셀과 비슷
  • 컬럼(행)과 로우(각 항목의 실제 값,열)로 구성
  • 각 로우에는 고유 키가 있다. primary key를 이용해서 해당 로우를 찾거나 인용하게 된다.

One to One

  • 테이블 A의 로우와 테이블 B의 로우가 정확히 일대일 매칭이 되는 관계
  • 한명의 유저는 하나의 프로파일 관계만 가질 수 있음.

One To Many

  • 테이블 A의 로우가 테이블 B의 여러 로우와 연결이 되는 관계
  • 이 예시는 고객이 여러번의 주문을 할 수 있듯이, 주문은 여러번 생성되지만 주문을 한 고객은 한 명 뿐인 경우에 빗대어 설명할 수 있다. 하나의 주체가 여러 개의 상태값을 가질 수 있는 상태 또한 하나의 카테고리에 여러 제품이 들어가 있는 관계

Many To Many

  • 테이블 A의 여러 로우가 테이블 B의 여러 로우와 연결이 되는 관계
  • 하나의 책에 여러명의 저자가 있는 경우, 작가들은 여러 책을 쓸 수 있는 경우로 빗대어 설명

테이블을 연결하는 방법

  • 테이블과 테이블의 관계를 지을 수 있는게 외래 키(Foreign Key)

테이블을 연결하는 이유

  • NoSQL은 연결 안해도 된다.
  • 하나의 테이블에 모든 정보를 넣으면 동일한 정보들이 불필요하게 저장됨 이럴 경우 더 많은 디스크를 사용하고 잘못된 정보를 저장할 가능성이 높아진다.
  • 이는 디스크를 더 효율적으로 사용하기 위함이다.
  • 정규화 nomalization : 데이터를 중복해서 저장하지 않고 연관된 속성들을 적절한 엔터리에 배치하기 위해서 데이터 베이스의 테이블을 분할하는 것

트랜잭션

  • 일련의 작업들을 한번의 하나의 unit으로 실행하는 것
  • 작업 수행의 논리적 단위 - 초당 트랜잭션 실행수로 측정
    예 ) 친구에게 만원을 송금한다. 내 계좌에서 만원이 빠져나가고 친구의 계좌에 만원이 들어오지 않을 경우 만원은 공중으로 증발된다. 이럴 경우를 대비하여 실행이 중간에 오류가 발생하면 수행은 중단되고 다시 처음부터 실행하도록 하는 것이다.
  • commit & rollback

ACID

  • 원자성, 일관성, 고립성, 지속성
    원자성 Atomicity : 트랜잭션과 관련된 작업들이 부분적으로 실행되다가 중단되지 않는 것
    일관성 Consistency : 데이터의 타입이나 상태가 중간과정에서 변질되지 않는 것을 의미
    고립성 Isolation : 트랜잭션 수행 시 다른 트랜잭션 작업이 끼어들지 못하도록 보장하는 것을 의미.
    지속성 Durability : 성공한 트랜잭션은 영원히 반영되어야 함을 의미

비관계형 데이터베이스 NoSQL 데이터베이스

  • 비관계형 타입의 데이터를 저장할 때 주로 사용되는 데이터베이스 시스템
  • 관계형과는 다르게 데이터를 저장하기 전에 정의할 필요가 없다.
  • 빠른 속도로 사용하기 위해 비관계형 데이터베이스를 사용함
  • MongoDB, Redis, Cassandra ...

SQL(RDBMS) vs NoSQL

SQL
장점

  • 관계형 데이터 베이스는 데이터를 더 효율적이고 체계적으로 저장, 관리할 수 있다.
  • 미리 저장하는 테이블들의 구조를 정의함으로서 데이터의 완전성이 보장된다.
  • 트랜잭션

단점

  • 테이블 구조 변화에 덜 유연하다.
  • 확장성이 어렵다.(구조가 미리 정의 되어 있기 때문..서버를 늘려서 분산 저장하는 것도 어려움)
  • 정형화된 데이터들, 데이터의 완전성이 중요한 데이터들을 저장하는데 유리하다 예)전자상거래 정보, 은행계좌정보, 거래정보...

NoSQL
장점

  • 데이터 구조를 미리 정의하지 않아도 됨으로 데이터 구조 변화에 유연하다
  • 확장하기 쉽다. 서버수를 늘리면 됨(scale out)
  • 확장이 쉽고 구조도 유연하다 보니 방대한 양의 데이터를 저장하는데 유용하다.

단점

  • 데이터의 완전성이 덜 보장된다
  • 트랜잭션이 안되거나 불안정
  • 주로 비정형화 데이터, 완전성이 상대적으로 덜 유리한 데이터를 저장하는데 유리하다 예)로그 데이터(누가 어디서 어느 사이트에 언제 어떤 루트를 통해 접속하고 어떤 행위를 하였는지가 남는 기록)
profile
하고싶은게 많은 사람. Front-end Developer

0개의 댓글