데이터베이스란?
데이터베이스는 데이터를 효율적으로 관리하기 위한 집합체를 말하고 DB라고도 합니다. 이는 데이터를 구조화하여 관리함으로써 데이터의 중복을 막을 수 있고, 효율적이고 빠른 데이터 연산처리를 가능하게 합니다.
DBMS란?
데이터베이스를 운영하고 관리하는 시스템(DataBase Management System)으로 데이터베이스를 사용할 수 있는데요.
RDBMS란?
Relational DataBase Management System의 약자로 관계형 데이터베이스 관리 시스템입니다. 이 RDBMS는 RDB, 즉 관계형 데이터 모델로 모든 데이터를 테이블 형태로 하여 표현을 하는데요. 이 테이블간의 관계를 타나내기 위해 외래키(Foreign Key)를 사용하는데 외래키를 이용해서 테이블 간 JOIN을 할 수 있는 게 RDBMS의 큰 특징입니다.
RDBMS의 종류
ORACLE | MYSQL | MariaDB |
RDBMS는 DBMS들 중에 하나로 관계형 데이터베이스를 말하는데요 이 관계형 데이터베이스의 종류의 대표적인 예시는 oracle database, mysql, mariadb가 존재합니다
RDBMS 사용 이유
찾고싶은 데이터가 내가 보는 테이블에 없더라도 Relational DataBase 데이터 간의 "관계"를 이용하여 내가 원하는 데이터를 찾을 수 있게 합니다.
RDBMS의 특징
- DATA를 raw와 column 형태로 저장합니다. = TABLE형태
- 데이터를 분류하고 저장, 삭제, 조회, 정렬 등등 속도가 빠릅니다.
- SQL query로 명령을 합니다.
- Schema 규격이 있어서 유연한 데이터 저장을 할 수 없습니다.
- 작업의 완전성을 보장합니다.
- 부하의 분산이 어려워 수직확장만 가능합니다.
RDBMS의 장단점
장점 | 단점 |
schema 구격이 존재하여 명확한 데이터 구조를 보장합니다 | 관계를 맺고있기 때문에 테이블이 늘어날수록 JOIN문이 많아져 query가 복잡해질 수 있습니다. |
중복없이 한번만 저장이 가능합니다. | schema 사용으로 데이터가 유연하지 못해 schema가 변경될 경우 테이블 관리가 어려워 질 수 있습니다. |
성능향상은 오로지 scale-up만 지원하기 때문에 비용이 증가할수 있습니다. |
NoSQL이란?
Not only SQL의 약자로 비관계형 데이터베이스를 말합니다. 관계형 데이터 모델이 아니기 때문에 대량의 분산된 데이터를 저장하고 조회하는데 특화되어 있어 사전에 schema를 지정하지 않아도 데이터를 저장할 수 있는 게 특징입니다. 또한 RDBMS의 한계를 극복하기 위한 데이터 저장소의 새로운 형태라고 볼 수도 있습니다.
NoSQL의 종류
key-value database | wide-column database |
Redis, AWS DynamoDB, Riak | Cassandra, HBase, GoogleBigTable |
document database | graph database |
MongoDB, Azure CosmoseDB, Couch DB | Neo4j, Blazegraph, OrientDB |
NoSQL의 종류에는 총 4가지가 존재합니다.
1) key-value database
key-value database는 key와 value의 한 쌍으로 저장이 되는데요. value에는 어떠한 형태의 데이터라도 담을 수 있으며 이미지나 비디오도 가능합니다. 간단한 API를 제공하는 만큼 속도가 굉장히 빠른 편입니다.
2) wide-column database
wide-column database는 column-family model 기반의 database로 키(raw)에서 필드를 결정합니다. 이 key는 column-family와 column-name을 가지는데요 연관 데이터들은 같은 column-family안에 있고 각각의 column-name을 가집니다.
3) document database
document database는 key와 document 형태로 저장되며 key-value와는 다르게 value가 계층형 태인 document로 저장되는 것을 알 수 있습니다. 객체지향에서의 객체와 유사하고 하나의 단위로 취급되는데 즉 하나의 객체를 굳이 여러 테이블에 나눠 저장하지 않는다는 말이 되기도 합니다.
document 형태로 저장하기 때문에 객체-관계 매핑이 필요 없고 검색에 최적화되어있는데 이 부분은 key-value 모델과 특징이 같은 걸 알 수 있습니다. 단점으로는 query가 SQL과 다르기 때문에 사용하려면 해당 문법을 익혀야 합니다.
4) graph database
graph database는 데이터를 node와 Edge, Property와 함께 그래프 구조를 사용하여 데이터를 표현하고 저장하는데요 객체와 관계를 그래프 형태로 표현한 것이기 때문에 관계형 모델이라고도 할 수 있습니다. 데이터 간의 관계가 탐색의 키일경우에 적합한데 페이스북이나 트위터 같은 소셜네트워크에 적절하고 연관 데이터를 추천하는 추천엔진이나 패턴인식 데이터베이스로도 적합합니다.
NoSQL 사용 이유
NoSQL은 유연성과 확장성을 비롯해 고성능의 기능적인 데이터베이스를 필요로 하는 모바일이나 웹, 게이밍과 같은 다양한 현대적인 애플리케이션에 적합하기 때문입니다.
NoSQL의 특징
- 유연성 : Schema 선언 없이 자유로운 필드 추가 및 삭제가 가능합니다.
- 확장성 : 수평확장에 의한 서버 확장이 용이합니다.
- 고성능 : 대용량의 데이터를 처리하는 성능이 뛰어납니다
- 가용성 : 여러 대의 백업서버 구성이 가능하고 장애발생 시에도 무중단 서비스가 가능합니다.
- RDBMS의 복잡도와 용량한계를 극복하기 위한 목적으로 등장했기 때문에 대용량의 데이터를 저장할 수 있습니다.
- 여러 대의 서버에 분산하여 저장합니다.
- schema가 없기 때문에 data에 대한 규격화된 결괏값을 얻기 힘듭니다.
NoSQL의 장단점
장점 | 단점 |
유연성으로 자유로운 데이터 구조를 가질수 있으며 언제든지 저장된 데이터를 조정하고 새로운 필드를 추가 할 수 있습니다. | 데이터 중복이 발생할수 있고, 중복된 데이터가 변경되면 모든 컬렉션에서 수정을 해야할수도 있습니다. |
데이터 분산이 용이하여 수평적 확장이 가능합니다.(scale-up, scale-out) | 명확한 데이터 구조가 보장되지 않아 데이터 구조 결정이 어려울수 있습니다. |
데이터가 여러 컬렉션에 중복되어 있어서 UPDATE 시에는 모든 컬렉션에서 수행하기 때문에 느립니다. |
'데이터베이스' 카테고리의 다른 글
[SQL] timezone 수정하기 (0) | 2023.12.20 |
---|---|
DATABASE의 제약조건 (NOT NULL과 DEFAULT) (0) | 2023.12.19 |
[SQL] 날짜/시간 타입 (0) | 2023.12.19 |
데이터 중복과 정규화 (0) | 2023.12.18 |
DATABASE의 KEY (0) | 2023.12.18 |