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