헷갈리니까 간단하게 정리하려고 글을 씁니다.
DB 용어들 자체가 생소하시다면 아래 링크를 한번 읽어보세요.
1. RDBMS
일단 RDBMS는 대부분 다 아실것이라고 생각합니다.
RDBMS는 유명한 DB 시스템 MySQL, Oracle, MariaDB 같은 흔히 DB 하면 떠오르는
이러한 표 형태의 관계형 데이터베이스들을 뜻합니다. 특징으로는
- SQL을 사용하여 데이터 추가, 삭제, 수정등이 가능합니다.
- 2차원의 표 형태로 데이터를 표현합니다
2. NoSQL
그러면 NoSQL은 뭘까요? SQL이 아니라는 뜻일까요? 일단 지금 가장 이해하기 쉬운 RDBMS와의 차이점은
- 기존 RDBMS와 달리 관계형 모델을 사용하지 않습니다. (여러가지 저장형태들이 있습니다.)
- 데이터 액세스에 SQL만을 사용하지 않습니다.
- RDBMS에 비해 상대적으로 수평적 확장이 쉽습니다.
이 세가지 차이점이 현재로서는 가장 이해하기 쉬울듯 합니다.
다만 이 세가지 조건을 반드시 충족하지 않는다고 반드시 NoSQL이 아닌 것은 아닙니다.
NoSQL 자체가 여러 유형의 DB들을 뜻하지만 정의가 확실하게 정해지지 않은 단어이기도 합니다.
NoSQL은 정의되지 않은 만큼 다양한 종류의 저장형태와 DB가 있기 때문에 무엇이 NoSQL이다!라고
딱 잘라서 말하기에는 애매한 상태라고 보시면 될 것 같습니다.
NoSQL의 분류에 대해서는 다음 링크를 참조해주세요.
https://rural-mouse.tistory.com/38
3. Elasticsearch
Elasticsearch 는 ELK Stack의 E를 담당하는 친구입니다. Apache Lucene 기반의 오픈소스 검색엔진이죠.
검색엔진이 왜 DB 이야기 하는데 나오죠? 싶겠지만 이 친구는 검색엔진이라 불리지만 저장기능이 있습니다.
- 각 노드에 Index 안의 shard가 분배되어 있는 형태로 데이터가 분산저장 됩니다.
- 다른 DB들과 다르게 full text 검색이 빠릅니다.
- 분산구조로 이루어져있어 확장이 쉽게 이루어집니다.
- 문서의 인덱싱부터 검색 가능때까지 거의 실시간으로 이루어집니다. (보통 1초)
개인적으로 Elasticsearch 특징은 실시간성, 확장성 두가지가 핵심이라고 생각합니다.
따라서 실시간으로 데이터를 받고 검색해야하는 그런 곳에서 많이 쓰이고 있습니다.
로그 같은 실시간으로 이상을 탐지하는 곳에도 많이 쓰이고 웹사이트, 어플리케이션 검색 같은 곳에서도 사용됩니다.
4. Hadoop
Hadoop 자체는 DB가 아닙니다!
위에서 데이터 저장을 담당하는 부분은 HDFS(Hadoop Distributed File System)입니다.
Hadoop의 특징을 몇개만 살펴보자면
- Elasticsearch와 마찬가지로 분산구조 입니다.
- 병렬처리가 가능하며 확장이 쉽습니다.
- 실시간 처리에는 취약합니다.
Hadoop은 대용량 데이터를 강점으로 하는 분산 파일 처리 및 저장 시스템이라고 보시면 될 것 같습니다.
Hadoop의 장점은 에코시스템이 방대하여 이런저런 솔루션 및 라이브러리들이 있어 많이 구현되있다는 점입니다.
참조
NoSQL이란 무엇인가? 대량데이터 동시처리위한 DBMS 종류와 특징 | https://www.samsungsds.com/kr/insights/1232564_4627.html
Elasticsearch는 무엇인가요? | https://www.elastic.co/kr/what-is/elasticsearch
RDBMS, NoSQL DB, Hadoop 비교 분석 - Oracle Korea | https://youtu.be/HQFreqPb3dg
Hadoop 총정리 | http://www.incodom.kr/hadoop_%EC%B4%9D%EC%A0%95%EB%A6%AC
엘라스틱서치의 멀티 테넌트 환경 적용하기: 케이스로 살펴보는 테넌트 적용방법 | https://www.s-core.co.kr/insight/view/%EC%97%98%EB%9D%BC%EC%8A%A4%ED%8B%B1%EC%84%9C%EC%B9%98%EC%9D%98-%EB%A9%80%ED%8B%B0-%ED%85%8C%EB%84%8C%ED%8A%B8-%ED%99%98%EA%B2%BD-%EC%A0%81%EC%9A%A9%ED%95%98%EA%B8%B0-%EC%BC%80%EC%9D%B4%EC%8A%A4/
'공부 > 개념' 카테고리의 다른 글
DB에서의 partitioning(분할, 파티셔닝) (0) | 2021.06.07 |
---|---|
NoSQL 저장 유형별 간단 정리 (0) | 2021.06.06 |
apache kafka 개념 정리 (0) | 2021.06.03 |
[네트워크] TCP/UDP 간단 정리 (2) | 2021.05.30 |
RESTful API 개념 정리 (0) | 2021.05.29 |
댓글