NoSQL이 뭐길래

NoSQL이 뭐길래

NoSQL이란 무엇일까?
SQL문을 아예 안쓴다는 말일까?
Nope!

🏷️ NoSQL = Not Only SQL

스키마없이 데이터를 표현하는 것이 주된 특징인 일련의 데이터베이스들을 의미한다.




🏷️ 일반적인특징

  1. 정해진 스키마가 없다.
  2. DB종류에 따라 그 특성이 매우 다르다. (RDBMS가 비슷비슷한 것과는 다름)




🏷️ 장점

  1. 높은 수평 확장성
    • 더 많은 인스턴스를 만들어 더 큰 로드를 감당할 수 있음
  2. 초기 개발의 용이성
  3. 스키마 설계의 유연성




🏷️ 단점

  1. 표준의 부재
    • 표준이 없어서 마이그레이션할때 각각 다 맞춰야 함
  2. SQL에 비해 약한 query capability
    • 복잡한 쿼리는 힘듬 -> 단순한 쿼리만 가능
  3. 스키마가 없기때문에 data consistency를 어플리케이션 레벨에서 보장해야 함




🏷️ 종류

  1. Key-value
    • 예: Redis, AWS DynamoDB
    • 모든 레코드는 Key-value의 페어이다.
    • NoSQL의 가장 단순한 형태
  2. Document-based
    • 예: DynamoDB, CouchDB,몽고DB
    • 각 레코드가 하나의 문서가 된다.
    • key-value종류보다 문서가 구조적이기때문에 쿼리 최적화, 활용성 높은 API가 제공됨
  3. Graph
    • 예: Neo4j, AWS Neptune
    • 그래프 이론을 바탕으로 데이터베이스를 그래프로 표현함
    • 그래프는 node(객체)와 edge(관계) 그리고 property(객체의 속성)로 이루짐
    • 관계가 first-class citizen이기 때문에 관계 기반 문제(실시간 추천등)에 유리