Database

Junghyun Park·2021년 1월 20일
0

데이터 베이스란?

컴퓨터 시스템에 전자방식으로 저장된 구조화된(체계화된) 데이터의 집합

데이터 베이스가 왜 필요한가?

데이터베이스 또는 데이터베이스 관리시스템(DBMS)을 통해,
안정적이고 영속적으로 데이터를 관리할 수 있으며, 검색 및 가공 등 효율적으로 데이터를 관리할 수 있음

SQL vs NoSQL

SQL(Structured Query Language)은 관계형 데이터베이스에서 사용되는 프로그래밍 언어
NoSQL은 비관계형 데이터베이스에서 사용되는 프로그래밍 언어

관계형 데이터 베이스(RDBMS)

관계형 데이터 모델에 기초를 둔 데이터 베이스 시스템 (마치 엑셀 시트 및 테이블과 같은 형식)

  • 각 테이블은 column과 row로 구성
  • 각 row는 자신만의 고유한 primary key를 가지고 있음/ 이 primary key를 통해 해당 row를 찾거나 reference 가능
  • 테이블끼리의 연결에는 3가지 종류가 있음
  1. one to one: (예시) 네임태그 테이블과 네임태그 소유자 테이블과의 관계
  2. one to many:(예시) 쇼핑몰 사용자 정보 테이블과 해당 사용자의 쇼핑 리스트 테이블과의 관계
  3. many to many: (예시) 책의 서지정보 테이블과 저자 정보 테이블과의 관계

    => Tip. many to many 관계의 경우는 중간 연결 역할을 수행하는 새로운 테이블(저자와 책과의 조합(경우의 수) 관련)이 추가로 존재함
  • 테이블 연결 방법 : Foreign Key를 이용하여 연결 (연결 대상이 되는 서로 다른 테이블 간의 공통적인 key 값으로서, 보통 id 값이고, Foreign Key부터 화살표 출발 표시)
  • 관계형 데이터 베이스 시스템 예시 : MySQL, Postgres, Oracle DB

SQL 장점

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

SQL 단점

  • 테이블을 미리 정의해야 하므로 테이블 구조 변화 등에 덜 유연한다.
  • 확장성이 쉽지 않다.
  • 역시 테이블 구조가 미리 정의 되어 있다보니 단순히 서버를 늘리는것 만으로 확장하기가 쉽지 않고 서버의 성능 자체도 높여야 한다.
  • 서버를 늘려서 분산 저장 하는것도 쉽지 않다.
  • Scale up (서버의 성능을 높이는것)으로 확장성이 됨.

관계형 데이터 베이스에서 왜 테이블을 분리하고 연결하는가?

  • 동일한 정보 저장으로 인한 컴퓨터 자원 낭비를 줄이기 위함
  • 데이터 업데이트 및 수정과 같은 데이터 유지 보수에 효율적임
  • 데이터의 잘못 입력 또는 오류 가능성을 낮출 수 있음
    => 이러한 과정을 정규화(Nomalization)이라함
    https://mr-dan.tistory.com/10

NoSQL 데이터베이스 시스템

비관계형 타입의 데이터를 관리하기 위한 데이터 관리 시스템

  • 비관계형이기 때문에 관계형처럼 사전에 데이터들을 정의할 필요가 없음
  • 비관계형 데이터베이스 시스템 예시 : MongoDB, Redis, Cassandra 등

    장점

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

단점

  • 데이터의 완전성이 덜 보장된다.
  • 트랜잭션이 안되거나 비교적 불안정하다.
  • 주로 비정형화 데이터 그리고 완전성이 상대적으로 덜 유리한 데이터를 저장하는데 유리하다.

DB 모델링 실습 사이트

https://aquerytool.com/

profile
21c Carpenter

0개의 댓글