RDBMS
: Relationship DataBase Management System → 관계형 데이터베이스 관리 시스템
- 관계형 모델을 기반으로 하는 DBMS 유형이다.
💡 관계형 모델이란?
: 실제 세계의 데이터를 '관계' 라는 개념을 사용해서 표현한 데이터 모델
- RDBMS의 테이블은 서로 연관되어 있어 일반 DBMS보다 효율적으로 데이터를 저장, 구성 및 관리할 수 있다.
- 정규화를 통해 데이터의 중복성을 최소화하여 트랜잭션을 수행하는 것이 더 쉽다.
- 데이터의 원자성, 일관성, 격리 및 내구성을 유지하며 데이터 무결성을 높인다.
- ex) MSSQL, MySQL, Oracle
- SQL에 의해 저장되고 있으며 정해진 스키마(Schema)에 따라 저장하여야 한다.
DBMS
- 사용자와 DB사이에서 사용자의 요구에 따라 데이터를 생성해주고, DB를 관리해주는 소프트웨어
- 데이터를 계층 또는 탐색 형식으로 저장한다.
- 파일 시스템을 사용해 저장하며, 따라서 테이블 간에는 아무런 관계가 없다.
- 데이터에 대한 많은 보안을 제공하지 않으며 정규화를 수행할 수 없어 데이터는 높은 중복성을 가질 수 있다.
RDB model | SQL |
---|
Relation | Table |
Tuple | 행(Row) |
Attribute | Column |
RDB
- 관계형 데이터 모델에 기초를 둔 데이터 베이스이다.
- 모든 데이터를 2차원의 테이블 형태로 표현한다.
RDBMS 장점
- 정해진 스키마에 따라 데이터를 저장해야 하므로 명확한 구조를 보장하고 있다.
- 관계는 각 데이터를 중복없이 한 번만 저장할 수 있다.
RDBMS 단점
- 시스템이 커질 경우 JOIN문이 많은 복잡한 쿼리가 만들어질 수 있다.
- 성능 향상을 위해서는 서버의 성능을 향상시켜야 하는 scale-up만을 지원하고, 이로 인해 비용이 기하급수적으로 늘어날 수 있다.
- 스키마로 인해 데이터가 유연하지 못하다.
- 스키마가 변경될 경우 번거롭고 어렵다.
NoSQL
: Not Only SQL의 약자로 관계형 데이터베이스가 아닌 다른 형태의 데이터 저장 기술을 의미한다.
- 테이블 간 관계를 정의하지 않는다.
- 데이터 테이블은 하나의 테이블이며 테이블 간의 관계를 정의하지 않아 일반적으로 테이블간 join도 불가능하다.
- 수평적 확장성(scale-out)을 쉽게 할 수 있다.
- Key - value DB
- 데이터가 key - value의 쌍으로 저장된다.
- 이미지나 비디오도 가능하다.
- 간단한 Api를 제공하는 만큼 질의의 속도도 굉장히 빠르다.
- ex) Redis, Riak, Amazon Dynamo DB
- Document DB
- key, document의 형태로 저장된다.
- key - value와 다르게 value가 계층적인 형태인 document로 저장된다.
- 객체 지향의 객체와 유사하며 하나의 단위로 취급하여 저장된다.
- 객체 - 관계 맵핑이 필요하지 않다. → key-value 모델과 동일
- 사용이 번거롭고 쿼리가 sql과는 다르다.
- 질의의 결과가 JSON, xml 형태로 출력된다.
- ex) MongoDB, CouthDB
- Wide Column DB
- column-family model 기반의 db이며 키에서 필드를 결정한다.
- 키는 row(키 값)와 column-family, column-name을 가진다.
- 연관된 데이터들은 같은 column-family 안에 속해 있으며 각자의 column-name을 가진다.
- 관계형 모델로 따지면, attribute가 계층적인 구조를 가지고 있는 셈
- 하나의 커다란 테이블로 표현가능하며, 질의는 Row, column-family, column-name을 통해 수행된다.
- ex) HBase, Hypertable
- Graph DB
- node, edge, property와 함께 그래프 구조를 사용하여 데이터를 표현하고 저장한다.
- 개체와 관계를 그래프 형태로 표현한 것이므로 관계형 모델이라고 할 수 있다.
- 데이터 간의 관계가 탐색의 키일 경우에 적합하다.
- ex) Neo4J
💡 SQL
: Strucured Query Language
- 관리 시스템의 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어
- 관계형 데이터베이스 관리 시스템에서 자료의 검색과 관리, 데이터베이스 스키마 생성과 수정, 데이터베이스 객체 접근 조정 관리
NoSQL 장점
- 스키마가 없기 때문에 유연하며 자유로운 데이터 구조를 가질 수 있다.
- 언제든 저장된 데이터를 조정하고 새로운 필드를 추가할 수 있습니다.
- 데이터 분산이 용이하며 성능 향상을 위한 Scale-up 뿐만이 아닌 Scale-out 또한 가능합니다.
NoSQL 단점
- 데이터 중복이 발생할 수 있으며 중복된 데이터가 변경 될 경우 수정을 모든 컬렉션에서 수행을 해야 합니다.
- 스키마가 존재하지 않기에 명확한 데이터 구조를 보장하지 않으며 데이터 구조 결정가 어려울 수 있습니다.
결론
RDBMS는
- 데이터 구조가 명확하고, 변경될 여지가 없으며, 명확한 스키마가 중요한 경우 사용하는 것이 좋다.
- 관계를 맺고 있는 데이터가 자주 변경이 이루어지는 시스템에 적합하다.
NoSQL은
- 정확한 데이터 구조를 알 수 없고 데이터가 변경/확장이 될 수 있는 경우에 사용하는 겻이 좋다.
- Update가 많이 이루어지지 않는 시스템이 좋다.
- 막대한 데이터를 저장해야 해서 DB를 Scale-out를 해야 하는 시스템에 적합하다.
RDBMS와 NoSQL의 차이점
RDBMS는 관계형 데이터베이스로 테이블이 서로 연관되어 있어, 효율적으로 데이터를 저장 및 관리를 할 수 있다. 정해진 스키마에 따라 데이터를 저장해야 한다.
NoSQL은 테이블 간의 관계를 정의하지 않으며, 데이터 테이블은 보통 하나의 테이블이다. 스키마가 존재하지 않기 때문에 자유로운 데이터 구조를 가질 수 있고, 데이터 분산이 용이하다.
출처
https://velog.io/@sysop/DBMS-와-RDBMS의-개념