데이터베이스 기초

Joey Lee·2020년 5월 14일
1

Database

목록 보기
1/6
post-thumbnail
post-custom-banner

1. 데이터베이스 기초개념

데이터베이스의 반대 개념은?

  • 바로 '메모리'. 메모리는 휘발성. 작업하다가 종료하면 날라감.
  • 반면 메모리의 장점은 속도임. 그래서 저장은 데이터베이스에서 하고, 메모리에서 불러와서 가공/처리함.

파일 대신 데이터베이스 쓰는 이유?

  • 데이터의 관리(저장/편집/가공/보존)가 편하기 때문임.

관계형 데이터베이스는?

  • 관계형데이터베이스는 모든 데이터는 관계성을 갖고 있다는 전제로 구성.
  • 테이블로 구성됨. 각 로우에는 저마다의 고유키가 있음. 이걸로 데이터를 찾음.

테이블간에는 어떤 관계를 맺게 되는가?

  • 1:1 : 고객 계정 - 프로필. 딱 1대 1로 매칭이 됨
  • 1:N : 하나의 데이터가 여러 개의 데이터 연결될 수 있는 경우. (고객 -> 주문, 고객은 주문을 여러번 할 수 있다.)
  • N:N : 한 명의 작가가 여러 권의 책을 썼었을 수도 있고, 한 권의 책도 저자가 1명이 아니라 여러 명 일 수 있다. ex) 학생 <-> 수강과목

왜 테이블을 나눠서 저장하는가?

  • 한 곳에 몰아서 사용하면 불필요한 정보들도 계속 들어가야 되고, 데스크가 커지고 처리에 속도가 더 오래 걸림.
  • 그리고 관리의 편리성도 생김. 1개의 데이터가 여러 곳에 있으면 관리가 어려워 짐.

트랜잭션이란?

  • 데이터베이스에는 트랜잭션이란 장치가 있음.

  • 트랜잭션이란 질의를 하나의 묶음 처리를 해서 만약 중간에 실행 중단 시 처음부터 다시 시작하는 롤백 시작, 오류가 없으면 커미트함.

  • 즉, 한 번의 질의가 실행되면 모두 수행되거나 혹은 하나도 수행이 안 되거나 하는 논리적 단위임.
    예를 들어, 친구에게 1만원 송금 / 내 계좌 1만원 차감 + 친구 계좌 1만원 증가되어야 함. 근데, 내 계과 1만원 차감되고, 친구 계좌는 늘어나지 않으면 오류. 이러면 중단 시키고 다시 롤백을 해서 송금 작업을 다시 해야 함.

  • 트랜잭션은 작업 단위임. 그래서 데이터베이스 성능은 초당 트랜잭션 처리 능력함 / 단위는 초당 처리건수(tps)임.

  • 트랜잭션은 DB 서버에 여러 클라이언트가 엑세스하거나 데이터 갱신하면서 데이터 부정합을 방지하고자 사용함.

  • 트랜잭션은 아래 4가지 특징이 있음.

    1) 원자성 : 부분적으로만 실행되게 하지 않는다. All or nothing
    2) 일관성 : 트랜잭션이 완료되면 그 이후 다른 트랜잭션이 없는 이상 변하지 않는다
    3) 고립성 : 하나의 트랜잭션 처리 시 다른 트랜잭션이 끼어들지 못 한다. 트랜잭션 끼리는 서로 간섭 못 한다.
    4) 지속성 : 성공한 트랜잭션은 영원히 반영되어야 한다.

NoSQL (비관계형 데이터베이스)란?

  • 비관계형 데이터를 저장할 때 사용하는 데이터베이스.
  • 관계형 모델과는 다르게 스키마(관계 설정에 따른 테이블 모델링)이 없음.
    관계형은 데이터를 저장하기 전에 어디에 어떻게 저장할지 미리 정의를 해야 하지만, 비관계형은 그럴 필요가 없음
  • 그래서 주로 빠른 저장이 필요하고, 일단 저장을 하기 위해 빠른 속도로 사용하기 위해서 사용함.
    column 구조로 되어 있지 않음. 명시적인 id가 없음. 그냥 key:value로 저장되어 있음.

SQL 쿼리문

Join :
왼쪽 테이블 row(4) < 오른쪽 테이블 row(5) 일 때,
Left Join : 왼쪽 테이블 기준으로 다 가져오고, 오른쪽 테이블 일부 데이터를 가져옴. (오른쪽 일부 데이터 누락됨)
Right Join : 오른쪽 테이블 기준으로 다 가져오고, 왼쪽 데이블의 데이터를 가져옴. (왼쪽 일부 데이터 누락됨)

profile
안녕하세요!
post-custom-banner

0개의 댓글