[DB] NoSQL

박세건·2024년 3월 26일
0

CS 학습

목록 보기
7/23
post-thumbnail

NoSQL

인터넷 발전과 함께 데이터가 방대하게 증가 하였고 기존의 시스템으로는 커버할 수 없어서 한계를 느겼습니다. 이를 해결하기 위해 탄생하였습니다.
기존의 SQL을 사용해서 테이블에 접근하는 방식과는 달랐기에 Not Only SQL이라 칭합니다. 이는 DBMS를 제외한 모든 DB를 의미한다.
NoSQL이란, Not Only SQL 또는 Non-Relational Operational DataBase의 약자로 비관계형 데이터베이스를 의미합니다.

  • 기존의 RDBMS는 관계형 데이터 모델을 이용했다면, NoSql은 대량의 분산된 비정형 데이터를 저장하고 조회하는데 특화되었습니다.
  • 스키마가 없거나 느슨한 스키마를 제공합니다.
  • 때문에, 빅데이터, 분산 시스템 환경의 대용량의 데이터를 처리하는데 적합합니다.
  • RDBMS는 연관성과 유효성에 중점인 반면, NoSQL은 확장성과 유효성에 중점을 두었습니다.

특징

  • 관계를 정의하지 않습니다.
    • RDBMS는 Foreign Key를 이용해서 관계를 나타내고 join연산이 가능하지만, NoSQL은 Key-Value의 형태로 저장됩니다(join연산 불가)
    • 빠르고, 단순하게 방대한 데이터와 잦은 애플리케이션의 변화에 유리하다.
  • 대용량 데이터를 저장할 수 있습니다.
    • 수평적 확장이 가능하기 때문
  • 분산형 구조로 설계되어있습니다.
    • 기존의 RDBMS는 하나의 고성능 머신에 데이터를 저장했다면, NoSQL은 서버 수십 대를 연결해서 데이터를 나눠서 저장하고 이를 분산형 구조라고 합니다.
    • 분산형 구조는 데이터를 분산할때에 데이터를 서로 복제하기 때문에 서버에 장애가 발생해도 데이터 유실이나 서비스 중지가 없습니다.
  • 고정되어 있지 않은 테이블 스키마를 갖는다.
    • NoSQL은데이터를 읽어올때만 스키마가 사용된다.
    • RDBMS는 하나의 컬럼에 동일한 데이터 타입의 데이터가 저장되어야하는데, NoSQL은 스키마가 유동적기에 ID로 사용될 수 있는 key 부분만 타입이 동일하고 이외에 컬럼에 다른 이름과 다른 데이터 타입을 갖는 것이 가능합니다.

장단점

장점

  • 저렴한 비용으로 분산처리와 병렬 처리 가능
    • 수평적인 확장을 이용하기 때문에, 수직적 확장 보다는 비용이 저렴하다.
  • 비정형 데이터 구조 설계 비용이 감소
  • 빅 데이터 처리에 효과적
  • 많은 양의 데이터를 빠르게 처리해야되는 게이밍이나 전자상거래 애플리케이션에는 유리하지만, 데이터 변형 및 중복 등을 방지하는 정규화된 데이터를 유지하는 금융, 회계 에서의 애플리케이션에는 어울리지 않습니다.
  • 가변적인 구조로 데이터 저장 가능
  • 데이터 모델의 유연한 변화가 가능

단점

  • 기술적 난이도가 높고 기능적 제약이 많다.
  • 데이터 일관성이 항상 보장되지 않습니다.
  • 인덱스 구조가 메모리에 저장되어야 하기에 많은 인덱스를 사용하려면 충분한 메모리가 필요하다.

NoSQL 종류(4가지)

  • Key-Value DB(키-값 저장소)

    • 가장 유연한 NoSQL DB, 애플리케이션이 값에 저장된 데이터를 완벽하게 제어할 수 있기때문

    • ex) Redis, Oracle NoSQL DB, VoldeMorte
  • 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은 데이터를 불러올때 스키마를 정의해서 사용합니다.

참고자료

profile
멋있는 사람 - 일단 하자

0개의 댓글

관련 채용 정보