프로젝트 진행하고 또 이런저런 자료를 뒤적이다 보니 nosql이라는 용어가 계속 나와서 정리겸 공부하기 위해 쓰는 블로그.
일단 nosql이란 말 그대로 기존의 rdbms가 아닌 db들을 의미한다.
우리가 일반적으로 알고 사용하는 oracle, mysql, mariadb, sqlite 등은 전부 sql이다.
그렇다면 nosql은 뭘까 정리해보도록 하겠다.
일단 사전적 정의는
: 기존의 관게형 데이터베이스 시스템의 주요 특성을 보장하는 ACID(Atomic, Consistency, integrity, Durability)특성을 제공하지 않는 덜 제한적인 데이터베이스를 의미한다.
기존에 사용하는 dbms는 행과 테이블을 사용하여 데이터구조에 제약이 크다.
하지만 NoSQL은 다양한 데이터 모델을 제공하여 대용량 데이터를 더 빠르고 쉽게 처리할 수 있게 해준다는 특징이 있다.
크게 네 가지 방식의 NoSQL이 존재한다.
1. 문서
2. 키-값
3. 열 형식
4. 그래프
1. 문서형 데이터베이스
: 가장 대표적인 문서형 NoSQL은 MongoDB이다. json 형식의 파일들로 데이터를 저장한다.
2. Key-Value
: 가장 대표적인 키-값 NoSQL은 redis이다
3. 열-형식 데이터베이스
: 가장 대표적인 db는 cassandra 이다. 빠른 시간에 대용량 데이터 처리가 가능하다고 한다.
4. 그래프
: 가장 대표적인 db는 neo4j 이다. 노드와 관계로 구성된 데이터베이스로 근접한 객체를 모델링할 목적으로 설계되었다.
각 NoSQL DB들은 데이터를 저장하는 방식에 따라 각각 다른 특성을 갖고있다.
하지만 기본적으로 우리가 사용하는 어플리케이션들은 보통 DBMS로 커버 가능하기 때문에, 빠른 속도 혹은 결합성을 고려해야 할때 NoSQL을 쓴다고 이해하면 될거 같다.
내가 한 프로젝트에서는 위와 같은 DB들 중에서 redis정도를 사용했고, 나머지는 아직 사용하는 것을 본적이 없다.
redis나 공부를 더 해봐야겠다.
'programming' 카테고리의 다른 글
BFF - Backend for Frontend (0) | 2022.02.24 |
---|---|
Dbeaver "The server time zone value 'KST' is unrecognized" 에러 (0) | 2022.02.22 |
curl: (6) Could not resolve host 에러 해결 (2) | 2022.01.14 |