2022년 10월 29일 나의 답변
RDBMS 는 행과 열이 있는.. 구조가 있는 DB이다. NoSQL 은 그런 게 없다.
RDBMS는 DML 작업 예를들어 DB에 Insert를 할 때 사전에 칼럼이 정의되어 있어야 가능하지만
NoSQL은 칼럼이 정의되어 있지 않아도 데이터 인서트가 가능하다.
RDBMS의 종류는 MSSQL, ORacle 등이 있고 NoSQL 은 MongoDB, RedisDB 등이 있다.
개념추가
** 1. RDBMS의 정의와 개별 모델 **
DB는 데이터의 체계적인 집합을 의미한다. DBMS는 DB를 관리해주는 소프트웨어이다. RDBMS는 관계형 데이터 모델을 기초로 하고 모든 데이터를 2차원 테이블 형태로 표현하는 DB이다.
*RDB
관계형 데이터베이스는 테이블이 다른 테이블과 관계를 맺고 있다는 데에서 기인한 이름이다.
그래서 기본키, 외래키 등의 개념이 나오고 테이블 간의 Join 으로 쿼리가 가능하다.
*NoSQL
RDB와 달리 테이블 간 관계를 정의하지 않는다. 테이블 간의 관계를 정의하지 않아 테이블 간 Join도 불가능하다.
NoSQL은 데이터 일관성은 포기하되, 비용을 고려하여 여러 대에 분산하여 데이터를 저장하는 스케일아웃 형태의 장비에 적절한 DB다.
1. Key-Value 형 DB: 데이터가 Key와 Value의 쌍으로 저장된다. 키는 Value 에 접근하기 위한 용도로 사용되며, 값은 어떤 형태의 데이터도 담을 수 있다. 대표적인 이 형태의 DB로는 Redis나 DynamoDB 등이 있다.
2. Document 형 DB : 데이터가 Key와 Document 의 형태로 저장된다. Value가 계층적인 형태의 Document 로 저장되며, 이는 객체지향에서의 객체와 유사하다. Document 는 하나의 단위로 취급되어 저장된다. 객체를 여러 개의 테이블에 나누어 저장할 필요가 없어지며, 객체-관계 맾ㅇ이 필요하지가 않다. 객체가 Document 의 형태로 바로 저장이 가능하다.
검색에 최적화되어 있으며, 질의의 결과가 Json이나 XML 형태로 출력된다. MongoDB나 CouthDB가 이에 속한다.
3. Wide Column DB: 이전의 모델들이 Key-Value 값을 이용해서 필드를 결정했다면, 이 모델은 키에서 필드를 결정한다. 키는 Row(키값)과 Column-Family, Column-name 을 가진다. 관계형 모델로 설명하자면 속성(Attribute)가 계층적인 구조를 갖고 있는 셈이다. HBase, Hypertable이 이에 속한다.
4. GraphDB : 데이터를 Node와 Edge, Property와 함께 그래프 구조를 사용하여 데이터를 표현/저장한다. 개체와 관계를 그래프 형태로 표현한 것이므로 관계형 모델이라고 할 수 있으며, 데이터간 관계가 탐색의 키일 경우에 적합하다. 페이스북이나 트위터 같은 소셜 네트워크에 적합하고, 추천엔진이나 패턴 인식의 DB로도 적합하다. Neo4J가 이에 속한다.
** 2. RDBMS와 NoSQL 별 장단점 **
RDBMS의 장점 : 정해진 스키마에 따라 데이터를 저장하여야 하므로 명확한 데이터구조를 보장한다. 중복이 없다.
RDBMS의 단점 : 시스템이 커질수록 Join 문이 많이 사용되어 복잡한 쿼리가 만들어진다.
나중에 스키마가 변경될 경우 겁나 복잡하다.
NoSQL의 장점 : 스키마가 없어서 유연하다. 자유로운 데이터 구조를 가진다. 언제든 저장된 데이터를 조정하고, 새로운 필드를 추가할 수 있다. 데이터 분산이 용이하다.
NoSQL의 단점 : 데이터 중복이 발생 가능하다. 중복된 데이터가 변경될 경우 모든 컬렉션(?)에서 수정해야 한다. 명확한 데이터구조를 보장하지 않는다.
** 3. 언제 사용해야 좋은가? **
한마디
나름 5년차 엔지니어인데 NoSQL 의 명확한 분류체계도 몰랐다.
ㅋㅋㅋㅋㅋ ㅋㅋ
그리고 스키마 아니고, 2차원 테이블 형태 아니고 행과 열로 구분되는..뭐쩌구.. <이것 뭐람. 문과인줄.. (사실 문과맞음)
알아도 알아도 알게 나오는게 약간은 고달프나. 이것이 이 직무의 재미 아니었을까.. (서프라이즈식 마무리)
'기본IT질문답변하기' 카테고리의 다른 글
[Windows] 캐시 로그온 이란? (0) | 2023.06.02 |
---|---|
[Windows] Windows 에서 세션이란? 공유폴더는 세션에 포함되나? (0) | 2023.06.02 |
쿠키와 세션의 차이, 그리고 소켓 (0) | 2023.01.21 |
[Win10] 보안프로그램으로 인한 네트워크 차단 문제 대응하기 (1) | 2023.01.21 |
댓글