2022년 새해가 밝았다.
2021년은 개인적으로 이런저런 일들도 많았지만, 개발자가 되어가는 입장에서 본다면 많은 발전이 있었던 해였던 것은 확신할 수 있다.
작년은 확장에만 중심을 두었다면, 이제 겉핥기 식으로 배운 것들을 조금 더 구체화해가는 한 해가 되었으면 좋겠다.
저번 글에서 DBMS의 종류들에 대해 간단히 살펴볼 때 두 가지의 데이터베이스 종류가 있었다.
관계형 데이터베이스와 NoSQL이었는데 그 두 개가 정확히 무엇인지 궁금해서 추가적으로 알아보고자 한다.
Relational DataBase (관계형 데이터베이스)
개요
- 현재 가장 많이 사용되고 있는 데이터베이스의 한 종류
- 테이블(table)로 이루어져 있으며, 테이블은 키(key)와 값(value)으로 나타냄.
- 데이터 종속성을 관계(Relationship)로 표현하는 것이 큰 특징
특징
- 데이터의 분류, 정렬, 탐색 속도가 빠름
- 신뢰성인 높고, 어떠한 상황에서도 데이터의 무결성을 보장
- 기존에 작성된 스키마를 수정하기가 어려움
- 데이터베이스의 부하를 분석하는 것이 어려움
관계
이름에 들어있는 관계형에서의 관계는 뭘 의미하는 걸까?
그것은 각 테이블의 행과 행이 연결되는 관계를 의미한다.
테이블 간 관계는 일대일(1:1), 일대다(1:N), 다대다(N:N)의 관계가 있다.
각 테이블들은 기본키(Primary key)와 외래키(Foreign key)를 통해 맺어지는데,
하나의 테이블과 다른 하나의 테이블만 연결된 것을 일대일이라고 한다.
일대다는 부모와 자식 관계를 예로 들어 설명을 많이 하는데, 선생과 학생으로 예를 들 수 있다.
각 반에는 한 명의 담임선생님과 여러 명의 학생이 존재하게 되는데, 이 한 명의 담임선생님께 속한 학생들은 일대다라고 할 수 있다.
다대다는 음... 동아리를 여러 개 가입할 수 있다고 하자.
그러면 여러 동아리는 각자 여러 명의 회원을 가지고 있을 것이고, 같은 사람이 여러 개의 동아리에 가입하기도 하였을 것이다.
이런 동아리와 여러 회원들의 관계를 테이블로 표현한다면 다대다가 될 것이다.
이러한 관계 구조가 관계형 데이터베이스를 나타내는 대표적인 특징이다.
NoSQL
개요
- Not only SQL로 SQL만을 사용하지 않는 데이터베이스라고 함
- 많은 양의 데이터를 효율적으로 처리해야 함에 따라 분산처리 시스템을 가진 NoSQL이 등장
특징
- 분산형 구조로 여러 곳에 데이터를 분산 저장함
- 테이블의 스키마가 유동적이다.
유형
NoSQL은 4가지의 대표적인 유형이 있다.
문서
- JSON 객체와 비슷한 문서에 데이터를 저장
- 각 문서에는 필드와 값의 쌍이 포함
- 대량의 데이터를 수용하도록 수평 스케일아웃이 가능
대표적인 문서 데이터베이스 : MongoDB
Key-Value
- NoSQL에서도 키값 데이터베이스가 존재함
- 대량의 데이터를 저장해야 하지만 검색을 위해 복잡한 쿼리를 수행할 필요가 없는 경우 사용
- 사용자 선호도 저장 또는 캐싱에서 사용
대표적인 Key-Value 데이터베이스 : Redis, DynanoDB
Wide-column store
- 테이블, 행 및 동적 열에 데이터 저장
- 각 행이 동일한 열을 가질 필요가 없다는 점에서 RDB에 비해 뛰어난 유연성을 제공
- 대량의 데이터 저장에 적합
- IOT 데이터와 사용자 프로필 데이터 저장 시 사용
대표적인 Wide-column store 데이터베이스 : Cassandra, HBase
그래프
- 소셜 네트워킹, 추천 엔진 등에서 사용
- 정점과 간선에 데이터를 저장
- 정점에는 사람, 장소 및 사물에 대한 정보가 저장
- 간선에는 정점과의 관계에 대한 정보가 저장
대표적인 그래프 데이터베이스 : Neo4j
RDB vs NoSQL
테이블 구조가 정해져 있고, 내부 데이터 수정이 빈번할 때 -> RDB
테이블 구조가 정확히 잡혀있지 않고(추가적으로 수정이 될 가능성이 높을 때) 대량의 데이터를 처리할 때 -> NoSQL
이렇게 생각할 수 있는 것 같다.
이번 자료조사를 통해 NoSQL에 대해 상세하게 알게 되어 좋다.
자료 출처
'Computer Science > DataBase' 카테고리의 다른 글
[DB] DBMS 종류별 간단 정리 (0) | 2021.12.30 |
---|---|
[DB] 데이터베이스 변수 명명법 (0) | 2021.12.22 |
[DB] ER다이어그램 작성시 세부사항 (0) | 2021.12.21 |