반응형

🚀 데이터베이스를 공부하면서 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

https://academind.com/tutorials/sql-vs-nosql

https://gyoogle.dev/blog/

반응형

+ Recent posts