-
RDBMS vs NoSQL데이터베이스 2020. 11. 16. 21:31반응형
프로젝트를 구상할 때 데이터베이스는 무엇을 쓸 것인가 하고 고민을 해본 적이 많을 것이다.
나 같은 경우는 프로젝트 경험이 적기 때문에 써본 데이터베이스가 Oracle, MySQL, MariaDB 밖에 없는데 이거는 모두 RDBMS(관계형 데이터베이스 관리 시스템)이다. 후에 MongoDB를 써보고 싶다는 생각이 있었는데 마침 RDBMS와 NoSQL에 대해 찾아볼 일이 생겨 이렇게 포스팅하게 되었다.
RDBMS
RDBMS는 Relational Database Management System의 약자로 관계형 데이터베이스 관리 시스템이라고 합니다.
- SQL(Structured Query Language, 구조화 질의어)를 사용해 데이터의 CRUD가 가능합니다.
- 정해져 있는 스키마(데이터베이스에서 자료의 구조, 표현 방법, 자료 간의 관계 등을 형식 언어로 정의한 구조)에 따라 데이터베이스 테이블에 저장이 됩니다.
- 각 테이블끼리 관계로 연결이 되어 있고, 테이블 여러 개를 조인해서 원하는 데이터를 추출할 수 있습니다.
- 효율적인 사용을 위해 구조화가 굉장히 중요하며 관계형 데이터베이스의 설계도를 ER(Entitiy Relationship) 모델이라고 합니다.
- 대표적인 예로 Oracle, MySQL, PostgreSQL 등이 있습니다.
NoSQL
NoSQL은 Not Only SQL의 약자로 관계형 데이터베이스가 아닌 데이터를 분산하여 저장하는 비관계형 데이터베이스를 의미합니다.
- 스키마가 없고 그로 인해 더 자유롭게 데이터를 관리할 수 있습니다.
- 관계가 없기 때문에 테이블 간의 조인이 불가능합니다.
- RDBMS의 복잡도와 용량 한계를 극복하기 위한 목적으로 등장하였기에 RDBMS에 비해 더 큰 용량의 데이터를 저장할 수 있습니다.
- 대표적인 예로 MongoDB, Cassandra, Neo4j, Redis 등이 있습니다.
데이터 구조에 따른 NoSQL 유형
1) Key-Value Database
기본적인 패턴으로 Key-Value 하나의 묶음(Unique)으로 저장되는 구조로 단순한 구조이기에 속도가 빠르며 분산 저장시 용이합니다. 예로 Redis, Oracle NoSQL DB 등이 있습니다.
2) Document-oriented Database
Key-Value형과 마찬가지로 Key와 Value 한 쌍으로 데이터를 저장하는데, 이 때 Value가 바로 Document입니다. JSON, XML, YXML과 같은 인코딩 형식을 대부분 사용합니다. Key-Value형과 달리 'Value'에 해당하는 Doucument의 내용을 검색할 수 있어 보다 편리합니다. 예로 MongoDB, Azure Cosmos DB 등이 있습니다.
3) Graph Database
데이터를 노드(Node)로 표현하고 노드 사이의 관계를 엣지(Edge)로 표현하는 것으로 RDBMS 보다 Performance가 좋고 유연하며 유지보수에 용이합니다. Social networks 등에 사용할 수 있습니다. 예로 Neo4j, Blazegraph 등이 있습니다.
4) Wide Column Database
데이터를 행(row)이 아닌 열(column) 그룹에 저장하는 방식입니다. 한 행에 여러 개의 열을 가질 수 있습니다.
관계형 데이터베이스에서는 행마다 다른 열을 추가하거나 삭제하지 못했지만 Wide Column Database는 스키마가 없기 때문에 행마다 각각 다른 열을 가질 수 있습니다. 예로 Cassandra, HBase 등이 있습니다.
References
- avengersrhydon1121.tistory.com/m/102?category=829326
728x90'데이터베이스' 카테고리의 다른 글
인덱스(Index) 란? (0) 2020.11.03