🚀 데이터베이스를 공부하면서 DBMS, RDBMS, SQL, NoSQL라는 단어를 많이 봤었는데, 볼 때마다 헷갈리기도 하고 다른 사람에게 설명하는데 어려움을 느껴 이번 기회에 명확하게 위 용어들의 의미와 차이를 정리해보고자 합니다.
💡 기본 개념
🔎 Database
여러 사람에 의해 공유되어 사용될 목적으로 체계화해 통합하여 관리하는 데이터 집합이며, 여러 응용 시스템들의 통합된 정보들을 저장하여 운영할 수 있는 공용 데이터들의 묶음입니다.
🔎 DBMS
데이터베이스 관리 시스템(DataBase Management System)은 다수의 사용자들이 데이터베이스 내의 데이터를 접근할 수 있도록 해주는 소프트웨어 도구의 집합입니다.
데이터베이스 생성, 조회, 수정, 삭제와 같은 환경과 각종 응용프로그램이 데이터베이스에 접근할 수 있는 인터페이스를 제공하며 복구, 권한 관리와 같은 보안성 기능도 제공합니다.
🔎 RDB
RDB(Relational DataBase)는 관계형 데이터 모델에 기초를 둔 관계형 데이터베이스입니다. RDB는 데이터들을 테이블 형태로 저장하며 각 데이터 항목들은 행(row), 항목의 속성은 열(Column)에 저장됩니다. 엑셀 시트처럼 정해진 번호의 칸 안에 데이터들을 차곡차곡 쌓아 나가는 방식이며, 내용을 찾아 정렬하는 속도가 매우 빠른 편입니다.
🔎 RDBMS
R은 Relational의 약자로 RDBMS는 관계형 데이터베이스 관리 시스템을 의미합니다.
🔎 SQL
SQL은 Structured Query Language의 약자이며, 관계형 데이터베이스 관리 시스템에 저장된 데이터들을 관리하기 위해 설계된 프로그래밍 언어입니다. SQL을 통해 RDBMS에서 데이터들을 CRUD(Create Read Update Delete)하여 관리를 할 수 있습니다.
데이터들은 테이블에 레코드(Record)로 저장되며 각 테이블에는 명확한 구조가 있습니다. 따라서 관계형 데이터베이스에서 스키마를 준수하지 않는 레코드(Record)는 추가를 할 수 없게 됩니다.
아래는 SQL로 간단한 고객정보를 저장하고 있는 테이블의 예시입니다.
이름 | 나이 | id |
Jason | 26 | asd123 |
Jun | 24 | poi888 |
이름, 나이, id는 속성에 해당하며 jason, 26, asd123은 값에 해당합니다.
SQL을 사용하는 데이터베이스 종류
- MySQL, Oracle, MS-SQL, PostgreSQL, MariaDB 등
🔎 NoSQL
단어의 뜻을 따지자면 "Not only SQL"인데, 기존의 DBMS가 갖고 있는 특성뿐만 아니라 다른 특성들을 부가적으로 지원한다는 것을 의미합니다. 기존의 RDBMS로는 관리할 수 없는 복잡하고 용량이 큰 데이터들을 관리하기 위한 목적으로 등장한 개념이며, 데이터, 테이블 간의 관계를 정의하지 않기 때문에 정해진 스키마가 없어 보다 자유롭게 데이터를 저장할 수 있습니다. 따라서 Key값만을 가지고 데이터에 대한 입출력을 할 수 있습니다.
NoSQL에서는 레코드(Record)를 문서(Document)라고 부르며 다른 구조의 데이터를 같은 컬렉션(=SQL에서는 테이블)에 추가할 수 있습니다.
아래는 NoSQL로 간단한 고객정보를 저장하고 있는 테이블의 예시입니다.
id | 고객 정보 |
asd123 | jason, 26, 남자 |
poi888 | jun, 24, 남자 |
이처럼 속성은 간단히 Key와 Value값으로만 나타냅니다.
NoSQL을 사용하는 데이터베이스 종류
- DynamoDB, MongoDB, Cassandra, Hbase 등
⚖️ RDBMS vs NoSQL 차이점
RDBMS | NoSQL | |
장점 | - 스키마가 정해져 있기 때문에 명확한 데이터 구조를 보장함(데이터 무결성 보장) - 데이터 분류, 정렬, 탐색 속도가 비교적 빠름 - 데이터 중복을 피해 공간 절약 - 유지보수가 상대적으로 편리하고 생산성이 높음 |
- 스키마가 없기 때문에 자유롭게 데이터를 추가할 수있음 - RDBMS보다 수평적 확장이 쉬움 - RDBMS보다 복잡도가 떨어져, 훨씬 대용량의 데이터들을 저장, 관리할 수 있음 |
단점 | - 복잡한 시스템일수록 Query문이 복잡해지고 성능이 떨어짐 - 수평적 확장이 어려워 대부분 수직적 확장을 함 |
- 중복된 데이터를 수정 시 모든 컬렉션에서 수행해야 함 - key값에 대한 입츨력만 지원 - 유연성 때문에 데이터 구조 결정을 미루게 될 수 있음 |
SQL 데이터베이스 사용이 더 좋을 때
- 변경될 여지가 없고 명확한 스키마가 사용자와 데이터에게 중요한 경우
- 관계를 맺고 있는 데이터가 자주 변경(수정)되는 애플리케이션일 경우
NoSQL 데이터베이스 사용이 더 좋을 때
- 정확한 데이터 구조를 알 수 없거나 변경, 확장될 수 있는 경우
- 읽기를 자주 하지만, 데이터 변경은 자주 없는 경우
- 데이터베이스를 수평적으로 확장해야 하는 경우
📚 참고
https://universitytomorrow.com/26
'💾Database' 카테고리의 다른 글
[Database] 데이터 무결성(Data Integrity)이란? (3) | 2021.12.13 |
---|---|
[Database] 데이터베이스 기본 용어 정리 (0) | 2021.11.29 |
[Database] 데이터베이스란? (0) | 2021.10.30 |
[Database] 데이터베이스 인덱스(Index)란? (0) | 2021.10.15 |
[Database] 데이터베이스 정규화 (1NF, 2NF, 3NF) (0) | 2021.08.25 |