1. 데이터베이스 ?
- 데이터를 저장하고 관리
- 구조화된 정보 및 데이터의 체계적인 집합
2. DBMS (DataBase Management System) ?
- 사용자와 데이터베이스 사이에서 사용자의 요구에 따라 정보를 생성해주고 DB를 관리해주는 소프트웨어
3. SQL (Structured Query Language)?
- 관계형 데이터베이스 관리 시스템에 저장된 데이터를 관리하기 위해 설계된 프로그래밍 언어
4. RDBMS (Relational DataBase Management System)
- 관계형 데이터베이스 관리 시스템을 의미
- 관계형 데이터베이를 관리하며 관계형 데이터 모델을 기초로 두고 모든 데이터를 2차원 테이블 형태로 표현
- 테이블 간 관계를 가질 수 있다는 것이 가장 큰 특징 (Join)
4.1 RDBMS 장단점
장점
- 테이블에 따라 데이터를 저장하여야 하므로 명확한 데이터 구조를 보장 (데이터 무결성)
- 관계는 각 데이터를 중복없이 한 번만 저장
단점
- 테이블간 관계를 맺고 있어 시스템이 커질 경우 JOIN문이 많은 복잡한 쿼리가 만들어질 수 있음
- 성능 향상을 위해 서버의 성능을 향상 시켜야 하는 Scale-up만 지원
- 스키마로 인해 데이터가 유연하지 못함, 스키마가 변경될 경우 번거롭고 어려움
이럴 때 RDBMS 사용
- 관계를 맺고 있는 데이터가 자주 변경이 이루어지는 시스템에 적합
- 변경될 여지가 없고, 명확한 스키마가 사용자와 데이터에게 중요한 경우
5. NoSQL (Not Only Sql) ?
- 테이블 간 관계를 정의하지 않기 때문에 테이블간 관계를 맺을 수 없음
- 다른형태의 데이터를 저장
- 다른 구조의 데이터를 같은 컬렉션에 추가 가능
- 데이터를 동일한 컬렉션에 넣음
5.1 NoSQL 장단점
장점
- 스키마가 없어서 유연하며 자유로 데이터 구조 저장된 데이터를 조정하고 새로운 필드 추가 가능
- 데이터는 시스템이 필요로 하는 형식으로 저장
- 수직 및 수평 확장이 용이
단점
- 스키마가 존재하지 않기에 명확한 데이터 구조를 보장하지 않음
- 유연성으로 인해 데이터 구조 결정을 미루게 될 수 있음
- 데이터가 여러 컬렉션에 중복되어 있기에 변경 시 모든 컬렉션에서 수정해줘야 함
이럴 때 NoSQL 사용
- 정확한 데이터 구조를 알 수 없고 데이터가 변경/확장이 될 수 있는 경우
- 읽기는 하지만, 데이터 변경이 자주 없는 경우
- 데이터베이스를 수평으로 확장해야 하는 경우 (많은 양의 데이터를 다룰 경우)
'개발지식' 카테고리의 다른 글
[AWS]Elastic Load Balancer(로드밸런서) Sticky Sessions (0) | 2022.06.14 |
---|---|
Redis 란 (0) | 2022.06.11 |
PHP란 무엇인가 ? (0) | 2022.06.10 |
WebServer, WAS 의 차이 (0) | 2022.06.09 |
동기와 비동기 방식 / 블로킹과 논블로킹 (0) | 2022.05.30 |