정의
No Only SQL
기존 관계형 DBMS가 갖고 있는 특징뿐만 아니라 다른 특성들을 부가적으로 지원한다는 것을 의미
데이터의 분산처리, 빠른 쓰기 및 데이터의 안정성이 필요할 때 사용, 특정 서버에서 장애가 발생했을 때 데이터 유실이나 서비스 중지가 없는 구조이기 때문에 많이 사용한다.
카를로 스트로찌(Carlo Strozzi)는 1998년 표준 SQL 인터페이스를 채용하지 않은 자신의 경량 오픈 소스 관계형 데이터베이스를 NoSQL이라고 명명했다.
특징
- 정해진 규격이 없고 칼럼이 지정되지 않아 자유롭게 채울 수 있고 분산처리가 쉽다
- RDBMS와 달리 데이터 간의 관계를 정의하지 않으며, 일반적으로 테이블 간의 Join기능이 없다.
- 분산형 하드웨어 클러스터를 이용해 확장하도록 설계되었다.
- 특정 데이터 모델 및 엑세스 패턴에 대해 최적화되어 관계형 데이터베이스를 통해 유사한 기능을 충족하려 할 때보다 뛰어난 성능을 얻게 해 준다.
- 데이터베이스의 중단 없는 서비스와 자동 복구 기능 지원
- 다수의 제품이 오픈소스로 제공
Nosql 데이터 모델의 유형
Key-Value | Key와 Value의 쌍으로 데이터가 저장되는 유형 제품: Cassandra DB, Dynamo DB, Redis |
Column-Based | 열 별로 연속적으로 저장하는 것 제품: HBase, Cassandra DB, Hypertable |
Document-Oriented | JSON, XML과 같은 Collection 데이터 모델 구조 제품: Mongo DB, Cough DB |
graph | Nodes, Relationship, Key-Value 데이터 모델 데이터 간의 관계를 그래프로 형성하고 통합 검색을 빠르게 할 수 있음 제품: Neo4J 등 |
1) Key-Value
Cassandra DB: 읽고 쓰기가 빠름, 10페타바이트 데이터 저장 가능, 넷플릭스/인스타그램/우버 같은 회사에서 사용
Dynamo DB: 서버리스, 분산된 Key Value, 아마존에서 만들었다. 보조 인덱스, 트랜젝션 적용
Redis: DB, Cache로 사용될 수 있는 기술, Memory 위에서 동작, 인메모리 솔루션
2) Column-Based
3) Document-Oriented
Mongo DB: Document에서 가장 유명한 DB이다. JSON Documentg 형태로 데이터를 저장, 원하는 모양이나 종류로 데이터 저장이 가능하다.
4) graph
Column이나 Document 필요 없을 때, 각 노드 사이의 관계를 알아야 할 때
예를 들어 페이스북을 만든다면 필요한 DB이다.
각각의 엔티티를 저장하고 관계망으로 연결한다.
SQL과 NoSQL 비교
SQL | NoSQL |
정해진 규격 | 정해진 규격이 없음 |
Join 가능 | Join 없음 |
트랜잭션 사용 | 트랜잭션 없음 |
분산처리 어려움 | 분산처리 쉬움 |
ACID | ACID를 완벽히 구현하지 않고 “Eventual consistency” 개념 도입 |
CAP
분산형 구조는 일관성(Consistency), 가용성(Availability), 분산 허용(Partitioning Tolerance)의 3가지 특징을 가지고 있다.
CAP 이론은 이 중 2가지만 만족할 수 있다는 이론이다.
NoSQL은 대부분 이 CAP 이론을 따르고 있다.
- 일관성(Consistency) : 분산된 노드 중 어느 노드로 접근하더라도 데이터 값이 같아야 한다. (데이터 복제 중에 쿼리가 되는 일관성을 제공하지 않는 시스템의 경우 다른 데이터 값이 쿼리 될 수 있다.)
- 가용성(Availability) : 클러스터링된 노드 중 하나 이상의 노드가 실패라도 정상적으로 요청을 처리할 수 있는 기능을 제공한다.
- 분산 허용(Partition Tolerance): 클러스터링 노드 간에 통신하는 네트워크가 장애가 나더라도 정상적으로 서비스를 수행한다. 노드 간 물리적으로 전혀 다른 네트워크 공간에 위치도 가능하다.
참고
https://lygggg.github.io/blog/NoSql/
https://hostingdata.co.uk/nosql-database/
https://www.youtube.com/watch?v=Q_9cFgzZr8Q&t=106s
'OS > Database' 카테고리의 다른 글
[DBMS] Elasticsearch DB(엘라스틱서치) 설치방법 With Ubuntu (431) | 2022.01.18 |
---|---|
[DBMS] Elasticsearch DB(엘라스틱서치) 기본개념 (1849) | 2022.01.18 |
[DBMS] Couchbase Database 기본지식 및 설치방법 (1655) | 2022.01.17 |
[DBMS] CouchDB 정의 및 특징 (552) | 2022.01.13 |
[DBMS] PostgreSQL 정의 및 설치방법, 보안관점 (1715) | 2021.11.25 |