NoSQL이 뭐길래
NoSQL이란 무엇일까?
SQL문을 아예 안쓴다는 말일까?
Nope!
🏷️ NoSQL = Not Only SQL
스키마없이 데이터를 표현하는 것이 주된 특징인 일련의 데이터베이스들을 의미한다.
🏷️ 일반적인특징
- 정해진 스키마가 없다.
- DB종류에 따라 그 특성이 매우 다르다. (RDBMS가 비슷비슷한 것과는 다름)
🏷️ 장점
- 높은 수평 확장성
- 더 많은 인스턴스를 만들어 더 큰 로드를 감당할 수 있음
- 초기 개발의 용이성
- 스키마 설계의 유연성
🏷️ 단점
- 표준의 부재
- 표준이 없어서 마이그레이션할때 각각 다 맞춰야 함
- SQL에 비해 약한 query capability
- 복잡한 쿼리는 힘듬 -> 단순한 쿼리만 가능
- 스키마가 없기때문에 data consistency를 어플리케이션 레벨에서 보장해야 함
🏷️ 종류
- Key-value
- 예: Redis, AWS DynamoDB
- 모든 레코드는 Key-value의 페어이다.
- NoSQL의 가장 단순한 형태
- Document-based
- 예: DynamoDB, CouchDB,몽고DB
- 각 레코드가 하나의 문서가 된다.
- key-value종류보다 문서가 구조적이기때문에 쿼리 최적화, 활용성 높은 API가 제공됨
- Graph
- 예: Neo4j, AWS Neptune
- 그래프 이론을 바탕으로 데이터베이스를 그래프로 표현함
- 그래프는 node(객체)와 edge(관계) 그리고 property(객체의 속성)로 이루짐
- 관계가 first-class citizen이기 때문에 관계 기반 문제(실시간 추천등)에 유리