인터넷 발전과 함께 데이터가 방대하게 증가 하였고 기존의 시스템으로는 커버할 수 없어서 한계를 느겼습니다. 이를 해결하기 위해 탄생하였습니다.
기존의 SQL을 사용해서 테이블에 접근하는 방식과는 달랐기에 Not Only SQL이라 칭합니다. 이는 DBMS를 제외한 모든 DB를 의미한다.
NoSQL이란, Not Only SQL 또는 Non-Relational Operational DataBase의 약자로 비관계형 데이터베이스를 의미합니다.
- 기존의 RDBMS는 관계형 데이터 모델을 이용했다면, NoSql은 대량의 분산된 비정형 데이터를 저장하고 조회하는데 특화되었습니다.
- 스키마가 없거나 느슨한 스키마를 제공합니다.
- 때문에, 빅데이터, 분산 시스템 환경의 대용량의 데이터를 처리하는데 적합합니다.
- RDBMS는 연관성과 유효성에 중점인 반면, NoSQL은 확장성과 유효성에 중점을 두었습니다.
Key-Value DB(키-값 저장소)
Wide-Column DB(넓은 열 지향)
테이블, 행, 열 형식으로 데이터를 관리
열 형식을 이용하는 애플리케이션에 배포되어서 스키마 없는 데이터를 수집합니다.
Value값으로 Primitive 타입이 될 수도 있지만, NoSQL에서는 value 값으로 (Column,Value)조합으로 된 여러개의 데이터를 갖을 수 있는데 이를 Column Family라고 한다. Map 구조와 유사하다.
그림과 같이 각각의 다른 스키마들을 저장할 수 있다.
ex) Hbase, Cassandra, GoogleBigTable, Vertica
Document DB(문서 지향)
저장되는 Value의 타입이 document 이다.
문저 저장소라고도 불리우고, 데이터의 저장, 검색, 관리에 유용합니다.
주로 XML과 JSON 같은 문서를 이용해 저장합니다.
ex) MongoDB, CouchDB, Riak, Azure Cosmos DB
Graph DB(그래프 기반)
데이터를 노드와 노드의 연결로 보여주는 관계를 의미합니다.
더욱 풍부한 데이터 표현을 지원합니다.
일반적으로 RDBMS 보다 성능이 좋고 유연한 것이 특징이다.
ex) Sones, AllegroGraph, neo4j
- 비정형 데이터?
- 정리되지 않은 데이터 -> 정규화되지 않는 데이터
- ex) 동영상 파일, 오디오, 사진, 문서, JSON, XML 등을 말한다.
- NoSQL이 왜 대용량의 데이터를 저장할 수 있는지?
- 오늘날의 방대한 양의 데이터, 속도, 데이터의 다양성을 감당하기 위해서는 RDBMS로는 버겁기에 다른 DB가 필요하다. 이를 해결하기 위해서 나온것이 NoSQL이다. 신속한 수평적 확장 능력 덕분에 많은 양의 트래픽을 처리할 수 있습니다.
- 수직적 향상 : 더 좋은 CPU 또는 RAM을 추가해서 성능 향상
- 수평적 향상 : 서버의 수를 늘려서 많은 양의 데이터를 처리할 수 있도록 하는 것
- 데이터 모델의 유연한 변화가 가능이란?
- RDBMS의 경우 데이터를 저장하기전에 스키마를 정의해주어서 저장되어야할 데이터 타입을 지정해줍니다. 하지만 NoSQL의 경우 스키마가 유동적이기 때문에 유연한 변화가 가능합니다.
- 추가적으로 NoSQL은 데이터를 불러올때 스키마를 정의해서 사용합니다.