728x90
RDBMS
- 사용자와 데이터베이스 사이에서 사용자의 요구에 따라 정보를 생성해주고 관리해주는 소프트웨어
- R: Relational - 관계형 데이터 모델을 기초로 두고, 모든 데이터를 2차원 테이블 형태로 표현한다.
- 장점: 명확한 데이터 구조 보장
- 단점: 복잡한 쿼리, Scale-up으로만 가능한 성능향상, 유연하지 못한 스키마
NoSQL
- RDBMS와는 달리 테이블 간 관계를 정의하지 않는다.
- 단 하나의 데이터 테이블만 있어, Join의 개념도 없다.
- 장점: 자유로운 데이터 구조, 데이터 분산 용이, Scale-up 뿐만 아니라 Scale-out도 가능
- 단점: 데이터 중복이 발생할 수 있음, 데이터 구조 결정이 어려움
- 종류
- Key-Value Database
- key와 value의 쌍으로 저장된다.
- 값에는 어떠한 형태의 데이터도 담을 수 있다.
- ex) Redis, Riak, Amazon Dynamo DB
- Document Database
- key와 document의 형태로 저장된다.
- 검색에 최적화되어 있다.
- ex) MongoDB, CouthDB
- Wide Column Database
- 키에서 필드를 결정한다. 키는 Row(키 값)와 Column-family, Column-name을 가진다.
- ex) HBase, Hypertable
- Graph Database
- Node와 Edge, Property와 함께 그래프 구조를 사용하여 데이터를 표현하고 저장하는 Database
- 데이터 간의 관계가 탐색의 키일 경우 적합
- 소셜 네트워크에 적합 (친구의 친구 찾기)
- 연관된 데이터를 추천해주는 추천 엔진이나 패턴 인식 등의 데이터베이스
- ex) Neo4J
- Key-Value Database
RDBMS, NoSQL 언제 사용해야 될까요? (참고링크 그대로 발췌)
- RDBMS는 데이터 구조가 명확하며 변경 될 여지가 없으며 명확한 스키마가 중요한 경우 사용하는 것이 좋습니다. 또한 중복된 데이터가 없어(데이터 무결성) 변경이 용이하기 때문에 관계를 맺고 있는 데이터가 자주 변경이 이루어지는 시스템에 적합합니다.
- NoSQL은 정확한 데이터 구조를 알 수 없고 데이터가 변경/확장이 될 수 있는 경우에 사용하는 것이 좋습니다. 또한 단점에서도 명확하듯이 데이터 중복이 발생할 수 있으며 중복된 데이터가 변경될 시에는 모든 컬렉션에서 수정을 해야 합니다. 이러한 특징들을 기반으로 Update가 많이 이루어지지 않는 시스템이 좋으며 또한 Scale-out이 가능하다는 장점을 활용해 막대한 데이터를 저장해야 해서 Database를 Scale-Out를 해야 되는 시스템에 적합합니다.
참고링크
'Development' 카테고리의 다른 글
구글 플레이스토어 주문 ID 해석하기 (.. 뒤에 붙은 숫자의 비밀!) (0) | 2023.02.23 |
---|---|
dayjs 제대로 활용하기: getTimezoneOffset (0) | 2023.02.17 |
dayjs.tz() 사용 시 주의할 점: timezone 등록 (Android Hermes) (0) | 2023.02.17 |
🎨아스키 아트를 아시나요? :: 텍스트와 특수문자만으로 사진,그림 흉내내기 (0) | 2023.02.09 |
개발 일지 (0) | 2020.03.05 |