콘텐츠로 이동

2023 02 23

2023-02-23

NoSQL

  • 등장 배경
    • 데이터 패러다임의 변화: 복잡+소규모 -> 단순+대규모
    • 기존 RDB와 다른 DB의 필요성이 대두됨
  • 특징
    • 대용량
    • 분산
    • No Relation, No Schema
    • No SQL, Not Only SQL
  • 종류
    • Key-Value: Redis
    • Document: MongoDB
    • Wide-Column: Hbase
    • Graph: neo4j

MongoDB

  • 계층 구조
    • Database > Collections(rdb의 table) > Documents(rdb의 row) > Fields(rdb의 column)
  • Schema 구조
    {
      customer_id: 1,
      first_name: "Mark",
    }
    
  • Query 형태
    • MQL(MongoDB Query Language)
      db.TABLE.Find(
          {Field3:{$gt:Value3}}, 
          {Field1:1, Field2:1}
      ).limit(10)
      

MongoDB

  • Index
    • Regular Index: 일반적으로 사용하는 인덱스
    • Geospatial Index: 지구 공간 정보 저장
    • Text Index: 문자열 내용에 대한 텍스트 검색 쿼리 지원
    • Hashed Index: 해싱된 값 저장
    • Multikey Index: 배열의 각 요소에 대한 검색 지원
    • TTL Index: 보관 기간 지난 도큐먼트 자동 삭제
  • Architecture
    1. Dynamic Document Schema: 스키마 저장
    2. Native Language Drivers: MQL 이해할 수 있도록
    3. High Availability: 레플리카셋
    4. High Performance: 데이터 지역성, 인덱스, RAM 사용
    5. Horizontal Scalability: 샤딩
  • Sharding
    • 분산시스템의 꽃