lunchScreen / Interview_Questions

기술면접을 준비하는 버디들
65 stars 10 forks source link

NoSQL vs RDBMS #65

Open dailynj opened 2 years ago

co3oing commented 2 years ago

RDBMS란 Relational Database Management System의 약자로 관계형 데이터 모델을 기초로 두고 모든 데이터를 2차원 테이블 형태로 표현하는 데이터베이스입니다. RDBMS는 외래키를 이용하여 다른 테이블과의 관계를 표현할 수 있고, 이를 이용하여 테이블 간 Join이 가능하다는 특징이 있습니다. RDBMS는 데이터 구조가 명확하고 중복된 데이터가 없어 변경이 용이하기 때문에 관계를 맺고 있는 데이터가 자주 변경되는 시스템에 적합합니다.

NoSQL은 Not Only SQL의 약자로 RDB 형태의 관계형 데이터베이스가 아닌 다른 형태의 데이터 저장 기술을 의미합니다. 테이블 간 관계를 정의하지 않고 하나의 테이블로 표현하여 테이블 간 Join이 불가능합니다. NoSQL은 RDBMS의 단점인 성능을 향상하기 위하여 데이터 일관성을 포기하고 비용을 고려하여 여러 대의 데이터에 분산하여 저장하는 수평적 확장(Scale-Out)을 목표로 등장하였습니다. NoSQL은 업데이트가 많이 이루어지지 않는 시스템에 적합합니다.

dailynj commented 2 years ago

DBMS(오라클, MySQL, SQLite) 란 사용자의 요구에 따라 DB 를 관리해주는 SW 를 말하고, RDBMS 는 Relational DBMS 로 관계형 데이터베이스 를 관리하는 시스템을 말합니다. 관계형 데이터베이스는 테이블들끼리 외래키를 통해 join 하며 관계를 맺는 것이 그 특징입니다. RDBMS 는 정해진 스키마에 따라 데이터를 저장하기 때문에 명확한 데이터 구조를 보장하고 데이터를 중복없이 저장할 수 있다는 장점이 있습니다. 하지만 시스템이 커질경우 Join 문이 많아져 복잡한 쿼리가 만들어질 수 있고 성능향상을 위해서는 수직확장(Scale-up) 만을 지원해 비용이 기하급수적으로 늘어나고 스키마가 변경될 경우 데이터가 유연하지 못해 번거롭고 어렵다는 단점이 있습니다.

NoSQL 은 빅데이터의 등장으로 데이터와 트래픽이 기하급수적으로 증가함에 따라 RDBMS 의 단점인 성능을 향상시키기 위해 개발됬으며 관계형 데이터베이스가 아닌 다른 형태의 저장기술을 사용합니다. NoSQL 은 스키마가 없기때문에 유연하고 자유로운 데이터 구조를 가질 수 있어 언제든 데이터를 조정하고 추가할수도 있습니다. 또한 데이터 분산이 용이하여 성능향상을 위한 수직확장(Scale-up)과 수평확장(Scale-out) 이 모두 가능하다는 장점이 있습니다. 하지만 데이터 중복이 발생할 수 있고 명확한 데이터 구조를 보장해 데이터 구조를 결정하기 어렵다는 단점이 있습니다.

tmfrlrkvlek commented 2 years ago

RDB는 관계형 데이터 모델을 기초로 두고 모든 데이터를 2차원 테이블 형태로 표현하는 데이터베이스이며, RDB를 관리하는 시스템을 RDBMS라고 합니다. 테이블간의 관계에서 외래 키를 사용한 테이블간 Join이 가능하다는 것이 가장 큰 특징입니다. NoSQL은 RDB 형태의 관계형 데이터베이스가 아닌 다른 형태의 데이터 저장 기술을 의미합니다. RDBMS와는 달리 테이블 간 관계를 정의하지 않습니다. 그렇기에 Join도 불가능합니다. 수평적 확장을 쉽게 할 수 있다는 장점을 가지고 있습니다. RDBMS는 명확한 스키마가 중요하거나 데이터의 변경이 잦은 시스템에 적합하고, NoSQL은 정확한 데이터 구조를 알 수 없고 데이터 변경/확장 가능한 경우 사용하는 것이 좋습니다.

sustainable-git commented 2 years ago

RDBMS는 관계형 Database 관리 system을 의미합니다. 2차원 Table형식으로 속성과 값을 이용해 Data를 정의하고 관리합니다. 언어는 SQL을 사용합니다. NoSQL은 RDBMS의 방식으로는 처리할 수 없는 큰 Data의 등장으로 부각된 방식입니다. Not Only SQL의 약자로, Data와 Table간의 관계를 정의하지 않습니다. key값만 가지고 Data에 대한 입출력을 수행할 수 있습니다.

RDBMS는 분류, 정렬, 탐색이 빠르고 SQL을 보장하며 SQL을 사용하고, 작업의 완전성을 보장합니다. 하지만 Schema규격에 맞춰야 하고, Data처리에 부하가 발생시 처리가 어렵습니다. NoSQL은 복잡도가 떨어져 훨씬 대용량의 Data를 저장, 관리할 수 있습니다. 하지만, key값에 대한 입출력만 지원하며 Schema가 정해져 있지 않아 Data가 규격화되어 있지 않습니다.

inuinseoul commented 2 years ago

RDBMS는 관계형 데이터베이스인 RDB를 관리하는 소프트웨어입니다. RDB는 모든 데이터를 2차원 형태의 테이블로 표현하는 데이터베이스로, SQL에 의해 저장 및 관리되며 정해진 스키마에 따라 데이터를 저장해야만 합니다

NoSQL은 SQL로 대표되는 RDB가 아닌 DB를 총칭하는 단어입니다. NoSQL는 크게 Document DB, Key-Value DB, Graph DB, Wide Column DB 4가지로 나누어집니다. 대표적인 Document DB인 MongoDB는 행과 열이 아닌 json문서 형태로 데이터를 저장합니다. 따라서 정보의 형식에 어느정도 규격이 있는 SQL과 다르게 어떤 형태의 데이터든 저장이 가능합니다. Key-Value DB은 속도가 매우 빠르다. Key-Value DB인 DB에는 cassandra, dynamoDB가 있습니다. Graph DB는 데이터 노드 사이의 관계가 중요할 때 주로 쓰입니다. Tao, neo4j가 그 예시입니다. Wide Column DB는 Column-family Model 기반의 Database로, 대표적으로 HBase, Hypertable가 있습니다.

이 둘의 가장 큰 차이는 데이터 구조의 유연성 여부입니다. RDBMS는 스키마를 가지고 있어 데이터 구조가 유연하지 못하지만, 그만큼 명확한 데이터구조를 보장할 수 있습니다. NoSQL은 스키마가 없어 유연한 데이터 처리가 가능하지만, 데이터 구조를 보장하지 않습니다.

또한 RDBMS는 각 테이블이 서로 관계가 복잡하게 얽혀있을 수 있기 때문에 Scale out이 어렵습니다. 반면 NoSQL은 이러한 특징이 없기 때문에 Scale out을 쉽게 수행할 수 있습니다.

보통 보편적인 RDBMS로 프로젝트를 시작하고 프로젝트가 심화되면 다른 DB 사용을 고려합니다.

https://khj93.tistory.com/entry/Database-RDBMS와-NOSQL-차이점

duyeonnn commented 2 years ago

RDBMS는 DMBS 앞에 R이 붙었는데 R은 relational의 약자. 즉 관계형 데이터베이스 관리 시스템이다. RDBMS는 2차원 테이블 형식으로 구성되며 속성과 값을 이용하여 데이터를 정의하고 저장 관리합니다. 각각의 속성과 값을 가진 테이블들은 서로 관계를 맺으며 존재합니다. 이러한 데이터들을 활용하기 위해서 사용자는 SQL이라는 언어를 활용한다.

NoSQL이란 Not Only SQL의 약자로 관계형 데이터베이스와 반대되는 방식을 사용하며, 데이터 테이블간의 관계를 정의하지 않습니다. 따라서 정해진 스키마가 없어, 보다 자유롭게 데이터를 저장할 수 있다. key 값만 가지고 데이터에 대한 입 출력을 수행할 수 있다.

RDBMS의 장점은 Data를 Column과 Row 형태로 저장해 데이터의 분류, 정렬, 탐색 속도가 비교적 빠르고 SQL이라는 구조화 된 질의를 통해 데이터를 다룰 수 있으며 작업의 완전성을 보장합니다. 하지만, 반드시 스키마 규격에 맞춰서 데이터를 다뤄야 하고 데이터 처리에 대한 부하가 발생시 처리가 어렵다는 단점이 있습니다. NoSQL의 장점은 데이터간의 관계를 정의하지 않고 RDBMS보다 복잡도가 떨어져 훨씬 대용량의 데이터를 저장 관리할 수 있습니다. 또한 테이블에 스키마가 정해져있지 않아 데이터 저장이 비교적 자유롭고 많은 양의 데이터를 저장 처리할 수 있습니다. 하지만, key 값에 대한 입 출력만을 지원하고 스키마가 정해져있지 않아 데이터에 대한 규격화가 되어있지 않고, 데이터를 업데이트하는데 비교적 느리다는 단점이 있습니다.