카테고리 없음

NoSql이란? by gpt

integerJI 2023. 12. 10. 20:53

GPT를 사용하여 한번 더 공부하고 정리를 해보았다. 

 

  1. NoSQL 소개
    • NoSQL이란?
      NoSQL은 "Not Only SQL"의 약자로, 관계형 데이터베이스 이외의 다양한 데이터 모델을 지원하는 데이터베이스를 말한다. 이는 유연한 데이터 구조와 대용량 데이터 처리에 적합하며, 전통적인 테이블 기반의 관계형 데이터베이스의 제약을 벗어나려는 목적에서 등장한 이력이 있다.

    • 관계형 데이터베이스와의 차이점
      관계형 데이터베이스는 정해진 스키마에 따라 데이터를 저장하는 반면, NoSQL은 스키마가 유동적이고 데이터 모델이 다양하다. NoSQL은 확장성과 빠른 읽기/쓰기 속도에 중점을 둬, 특히 대규모 분산 시스템에서 효과를 발휘한다.

    • NoSQL의 주요 특징과 장단점
      주요 특징: 유연한 데이터 모델, 확장성, 분산 처리, 다양한 데이터 모델 지원
      장점: 대용량 및 비정형 데이터 처리, 수평 확장 용이, 높은 성능
      단점: 일관성 및 트랜잭션 지원이 상대적으로 부족, 학습 곡선이 높을 수 있음

  2. NoSQL 데이터 모델
    • 키-값 스토어 (Key-Value Store)
      키-값 스토어는 간단한 데이터 모델을 가지고 있어서 효율적인 데이터 검색과 쓰기에 특화되어 있다. 각 데이터는 고유한 키와 연결되어 있으며, 이를 통해 데이터에 접근하거나 갱신할 수 있고 주로 단순한 조회 및 저장에 사용된다.

    • 문서 지향 데이터베이스 (Document-Oriented Database)
      문서 지향 데이터베이스는 데이터를 문서 형식으로 저장한다. 주로 JSON 또는 BSON 형태를 사용하며, 중첩된 구조로 데이터를 표현하며 이 모델은 복잡한 데이터 구조를 효과적으로 다룬다. 관련 데이터를 함께 저장하여 쿼리 성능을 향상시킬 수 있다.

    • 왜 그래프 데이터베이스인가? (Graph Database)
      그래프 데이터베이스는 노드(Node)와 엣지(Edge)로 이뤄진 그래프 모델을 사용하여 데이터를 표현합니다. 관계형 데이터베이스보다 뛰어난 관계 표현과 탐색이 가능하며, 소셜 네트워크, 추천 시스템 등에서 강점을 보입니다. 복잡한 연결 관계를 다룰 때 특히 유용합니다.

    • 컬럼 패밀리 데이터베이스 (Wide-Column Store)
      컬럼 패밀리 데이터베이스는 로우보다는 칼럼을 중심으로 데이터를 저장한다. 이는 대규모 분산 데이터베이스에서 성능 향상을 가져오는데, 필요한 칼럼만 읽어오기 때문에 빠른 읽기 속도를 제공하며, 대용량 데이터에 대한 효과적인 스토리지를 지원한다.

  3. 데이터 모델 선택 기준
    • 데이터 모델 선택의 중요성
      데이터 모델 선택은 데이터베이스를 구축할 때 가장 중요한 결정 중 하나이다. 선택한 데이터 모델에 따라 데이터의 구조, 유연성, 쿼리 효율성 등이 크게 영향을 받으며 올바른 데이터 모델을 선택하는 것은 향후 확장성과 유지보수에 매우 중요한 역할을 한다.

    • 어떤 상황에서 어떤 NoSQL 데이터베이스를 선택해야 하는가?
      키-값 스토어: 간단한 조회 및 저장이 필요한 경우, 예를 들어 세션 관리나 캐싱에 적합
      문서 지향 데이터베이스: 복잡한 데이터 구조를 다루거나 중첩된 데이터가 필요한 경우, 예를 들어 블로그 포스트, 제품 카탈로그 등
      그래프 데이터베이스: 복잡한 관계를 다루어야 하는 경우, 예를 들어 소셜 네트워크에서의 친구 관계, 네트워크 구조 등에 적합
      컬럼 패밀리 데이터베이스: 대용량 데이터를 다루거나 읽기 성능이 중요한 경우, 예를 들어 로그 데이터, 시계열 데이터 등

    • 예시를 통한 실제 적용 사례
      전자상거래 플랫폼에서는 제품 정보와 주문 정보를 각각 문서 지향 데이터베이스와 키-값 스토어에 저장할 수 있다. 제품 정보는 복잡한 구조를 갖고 있을 수 있고, 주문 정보는 효율적인 조회와 저장이 중요하기 때문입니다. 또한, 소셜 미디어 플랫폼에서는 사용자 간의 관계를 그래프 데이터베이스로 효과적으로 관리할 수 있습니다.

  4. NoSQL 쿼리 언어 및 API
    • NoSQL 데이터베이스에서의 쿼리 언어
      예시로 MongoDB는 문서 지향 데이터베이스로, JSON 형식의 쿼리를 사용한다.
      ex) { "author": "John Doe" }와 같은 쿼리로 작성자가 John Doe인 문서를 찾을 수 있다.

    • RESTful API, GraphQL 등 NoSQL에서의 데이터 검색 및 조작 방법
      대부분의 NoSQL 데이터베이스는 RESTful API 또는 GraphQL을 통해 데이터에 접근하고 조작할 수 있다.

      RESTful API 예시: MongoDB에서는 HTTP GET, POST, PUT, DELETE 등의 메서드를 사용하여 데이터를 읽거나 쓸 수 있으며 /articles 엔드포인트로 모든 글을 얻거나, /articles/{id}로 특정 글을 얻을 수 있다.

      GraphQL 예시: GraphQL을 사용하면 클라이언트가 필요한 데이터만 요청할 수 있다.
      ex) "특정 글의 제목과 작성자"를 요청하는 쿼리라면
      query {
        article(id: "123") {
          title
          author
        }
      }
    • NoSQL 데이터 모델에 따른 쿼리 예시
      그래프 데이터베이스에서는 사용자 간의 관계를 탐색하기 위해 특정 노드와 연결된 다른 노드를 조회하는 쿼리를 작성할 수 있다. 예를 들어, "A 사용자의 친구 목록"을 조회하는 그래프 데이터베이스의 쿼리는
      MATCH (a:User)-[:FRIEND]->(friend:User)
      WHERE a.username = 'A'
      RETURN friend.username

 

여러가지 글을 잘 쓰는 방법을 찾아보고 있다. 확실히 GPT가 있으니 조금 더 편한거 같긴 하다. 다음부터는 GPT로 먼저 글을 작성해보고 그 다음 한번 더 내가 써보는 형식으로 바꿔봐야겠다.