RDBMS과 NoSQL
RDBMS
RDBMS는 Relational DataBase Management System의 약자로, 관계형 데이터베이스 관리 시스템을 말한다.
즉 Relational DataBase를 관리하는 시스템이라는 뜻인데, Relational DataBase는 관계형 데이터 모델을 기초로 두고 모든 데이터를 2차원 테이블 형태로 표현하는 데이터베이스이다.
다음 그림과 같이 각 테이블들이 다른 테이블과 관계를 맺고 집합체로서 모여있는 것이 RDBMS이다.
관계를 나타내기 위해 외래 키를 사용하고, 그 키를 이용하여 테이블 간 Join이 가능하다는 특징이 있다.
장점
- SQL이라는 구조화 된 질의를 통해 데이터를 다룰 수 있다.
- 작업의 안정성을 보장한다.
- 데이터의 UPDATE가 빠르다.
- 데이터의 중복을 방지할 수 있다.
단점
- 반드시 스키마 규격에 맞춰서 데이터를 다뤄야 한다.
- 데이터 처리에 대한 부하 발생 시, 처리가 어렵다.
- 시스템이 커질 경우 JOIN문이 많은 복잡한 쿼리가 만들어 질 수 있다.
- 스키마 변경 시 데이터의 관리가 번거롭고 어렵다(유연하지 못하다)
NoSQL
NoSQL이란 Not Only SQL의 약자로, 관계형 데이터베이스와는 반대로 데이터, 테이블간의 관계를 정의하지 않는 저장 기술이다.
빅데이터를 다룰 때 RDBMS만으로는 트래픽을 감당하기가 어려워졌고, 이를 해결하기 위해 등장했다. 그래서 NoSQL의 핵심은 Horizontal Scalability(수평 확장)과 High Availability(고가용성) 이다.
많은 데이터량을 갖고, 데이터 처리량이 계속적으로 증가하는 환경에서 RDBMS가 부딪힌 한계점은 다음과 같다.
- 스키마 문제 : 빅데이터를 RDB의 스키마에 맞춰 변경해서 넣으려면 매우 긴 시간의 down time이 발생한다.
- Scale Up(서버 성능 증가)의 한계 : 관계형 모델과 트랜잭션의 연산, 일관성, 속성을 유지하면서 분산 환경(Scale Out)에서 RDBMS를 조작하는 것은 어렵다.
그래서 이를 개선한 NoSQL의 특징은 다음과 같다.
- 대용량 데이터 저장이 가능하다.
- 분산형 구조를 통해 여러 대의 서버에 분산하여 저장하고 상호 복제하여 데이터 유실이나 서비스 중지에 대비한다.
- Schema-less : 데이터 간의 관계를 정의하지 않기 때문에 테이블 간 join이 불가능하다.
- RDBMS에 비하여 읽기와 쓰기 성능이 빠르다.
장점
- 유연하며 자유로운 데이터 구조를 가질 수 있다.
- 데이터 분산이 용이하며 성능 향상을 위한 Saclue-up 뿐만이 아닌 Scale-out 또한 가능합니다.
단점
- 데이터 중복이 발생할 수 있으며 중복된 데이터가 변경 될 경우 수정을 모든 컬렉션에서 변경을 수행을 해야 다.
- 스키마가 존재하지 않기에 명확한 데이터 구조를 보장하지 않는다.
NoSQL의 종류
Key-Value Database (ex. redis)
데이터가 Key와 Value의 쌍으로 저장된다. Key는 Value에 접근하기 위한 용도로 사용되며, 값은 어떠한 형태의 데이터라도 담을 수 있다.
Document Database (ex. MongoDB)
Documnet Database 데이터는 Key와 Document의 형태로 저장된다. 이 때 Document는 객체와 유사하며, 하나의 단위로 취급되어 저장된다. 도큐먼트 모델에서는 질의의 결과가 JSON이나 xml 형태로 출력되기 때문에 그 사용 방법이 RDBMS에서의 질의 결과를 사용하는 방법과 다르다는 특징이 있다.
Wide Column Database
Column-family Model 기반의 Database로, Key안에 (Column, Value)조합으로 된 여러 개의 필드가 존재한다. 그래서 Key 내에서 필드가 결정되는 특징이 있다.
Graph Database
데이터를 Node와 Edge, Property와 함께 그래프 구조를 사용하여 데이터를 표현하고 저장한다.
RDBMS vs NoSQL
RDBMS 사용이 용이한 경우
- 데이터 구조가 변경 될 여지가 없고, 명확한 스키마 명시가 중요한 경우
- 관계를 맺고 있는 데이터가 자주 변경이 이루어지는 경우 (데이터 무결성을 최대한 보장하기 때문에 데이터 변경시에 유리하다)
NoSQL 사용이 용이한 경우
- 정확한 데이터 구조를 알 수 없을 때
- 막대한 데이터 저장을 위해 Database를 Scale-Out해야 할 때
- 데이터 변경이 많이 이루어지지 않는 경우(중복된 데이터가 변경 될 시에 매우 불편할 수 있음)
출처
https://khj93.tistory.com/entry/Database-RDBMS%EC%99%80-NOSQL-%EC%B0%A8%EC%9D%B4%EC%A0%90
[Database] RDBMS와 NoSQL의 차이점
이번 포스팅에서는 RDBMS와 NoSQL의 차이점을 알아보려고 합니다. 그전에 RDBMS는 무엇이고 왜 사용하며 NoSQL은 무엇이고 왜 사용을 할까요? 그리고 그 두 DB의 차이점은 무엇이며 서로에 대한 장단점
khj93.tistory.com
https://flowarc.tistory.com/entry/NoSQL%EC%9D%98-%ED%8A%B9%EC%A7%95-2
NoSQL의 특징 #2
MongoDB를 시작하기에 앞서 NoSQL의 개념부터 차근차근 알아보고 있습니다. 지난번 포스팅인 NoSQL의 특징 #1 에 이어서 이번에는 NoSQL의 종류와 장점과 단점을 알아보겠습니다. NoSQL에는 여러 종류가
flowarc.tistory.com