[Node.js] DB를 사용해보자 (1)

Hyun·2023년 8월 14일
0

nodejs

목록 보기
10/19

1. Database란?

  1. 여러 사람이 공유하여 사용할 목적으로 체계화해 통합, 관리하는 데이터의 집합
  2. 여러 응용 시스템드르이 통합된 정보들을 저장하여 운영할 수 있는 공용 데이터들의 묶음

1-1) 장점

  • 데이터 중복 최소화
  • 데이터 공유
  • 일관성, 무결성, 보안성 유지
  • 최신의 데이터 유지
  • 데이터의 표준화 가능
  • 데이터의 논리적, 물리적 독립성
  • 용이한 데이터 접근
  • 데이터 저장 공간 절약

1-2) 단점

  • DB 전문가 필요
  • 많은 비용 부담
  • 데이터 백업과 복구가 어려움
  • 시스템의 복잡함
  • 대용량 디스크로 액세스가 집중되면 과부하 발생

1-3) DB가 필요한 이유

  • 어떠한 유저를 하나 더 생성하든지 POST 요청을 통해서 데이터를 추가했을 때, 그 당시에는 데이터가 추가되지만 서버를 다시 시작하면 생성한 데이터가 없어지게 된다. 그래서 DB를 이용하여 영구적으로 데이터를 보관해주자.

2. DBMS란?

  • DB를 관리하고 운영하는 SW다. 이것을 이용하여 데이터를 저장하고 검색하는 기능등을 제공

2-1) DBMS 종류

  • 계층형, 네트워크형, 관계형, 객체형등이 존재
  • 주로 관계형(RDBMS)를 사용한다.

2-2) RDBMS 특징

  • 테이블을 사용하여 데이터를 저장
  • 관련 데이터 항목의 모음이여 데이터를 저장할 행과 열을 포함
  • Column = Field = Attribute, Row = Record = Tuple

3. SQL vs NoSQL

3-1) SQL

  • SQL은 관계형 데이터베이스에서 사용하는 언어이며, 데이터에 접근하며 데이터를 컨트롤하게 해준다.
  • SQL은 언어이지만 표준이기도 하며 대부분의 RDBMS에서 이 SQL 표준을 지키고 있다.

3-2) SQL과 RDBMS의 관계

  • RDBMS는 데이터베이스 관리 시스템
  • SQL은 RDBMS의 데이터와 통신하는 데 사용되는 언어
  • EX) RDBMS는 책이고 SQL은 책에서 사용되는 언어이다. 책을 읽거나 쓸 때 SQL을 사용한다.

3-3) NoSQL

  • "Not Only SQL", SQL만을 사용하지 않는 DB 관리 시스템을 지칭
  • RDBMS를 사용하지 않는다는 의미가 아닌, 여러 유형의 DB를 사용하는 것

3-4) 차이

  • SQL vs NoSQL
  1. Table | Key-Value
  2. Relational | Non-relational
  3. 비용이 많이 듬(사용하던 장비를 더 좋은 장비로 바꿔야함) | 비용이 적게 듬(사용하던 것에 새로운 노드 또는 시스템을 더해준다 -> 분산 저장 지원)
  4. ACID | BASE
    => Atomicity(원자성) : tx의 모든 작업이 성공하거나 모든 작업 롤백. 부분적인 성공X
    Consistency(일관성) : 각 tx은 db를 하나의 유효한 상태에서 다른 상태로 이동
    Isolation(격리성) : tx이 서로 간섭X
    Durability(지속성) : tx 적용결과는 실패해도 영구적
    ACID 모델의 주요 특징은 일관성이다. 거래를 완료하면 데이터가 일관되고 안정적
  5. Schema
    NoSQL DB의 공통적인 특징은 스키마 없이 동작하는 점.
    따라서 데이터 구조를 미리 정의할 필요가 없으며, 시간이 지나더라도 언제든지 바꿀 수 있기 때문에 비형식적인 데이터를 저장하는 데 용이.
    하지만 이는 DB가 스키마를 직접 관리하지 않는 것을 의미할 뿐, 데이터 타입에 따른 암묵적인 스키마는 여전히 존재. 이 때문에 단일 값에 대한 데이터 타입에서 불일치가 발생할 수 있다.
    => 스키마를 SQL보다 훨씬 자유롭게 작성하고 수정할 수 있다.

0개의 댓글