1. why we use noSQL

  • 유연성 : rdb와 비교하여, 유연한 스키마를 제공하고 있기 때문에 데이터베이스를 반정형 또는 비정형적인 데이터를 취급하는데 유리하다. 이러한 스키마는 빠르고 반복적인 개발을 유도하게 된다.

  • 확장성 : noSQL 데이터베이스는 고가의 스펙이 뛰어난 서버 대신, 분산형 클러스터를 이용하기 때문에, 서버 운영에 대한 부담 절감과 더 적은 스트리지를 기반으로 운영 할 수 있게 됨에 따라 더 많은 데이터를 담을 수 있게 되었다.

  • 고성능 : 특정 비정형 데이터(document, key-value, graph … ) 및 엑세스 패턴에 대해 특화시킬 수 있기 때문에 특정 워크로드를 유사하게 받아들이는 것이 아닌 그대로 받아들일 수 있게 된다. 이에 따라 유사한 환경을 제공하는 rdb보다 더 뛰어난 성능을 보일 수 있다.

 

 

2. noSQL 데이터 유형

  • key-value : 이 데이터 유형은 rdb와 비교하여 분할성이 크기 때문에 큰 범위로써의 확장을 가능하게 한다. 이로 인해 이 데이터는 게이밍, 광고 및 iot와 같은 사례에서 뛰어난 성능을 발휘한다.

  • document : 어플리케이션 상 데이터는 객체 또는 애플리케이션 코드에서 데이터는 종종 객체 또는json으로 표현된다. 이 형식이 개발자들에게 효율적이며 직관적이기 때문이다. 이 형식을 기반으로하는 데이터베이스를 사용하면 코드 상의 데이터의 형식과 동일한 형식으로 맞출 수 있기 때문에 보다 손쉽게 데이터를 저장하고 query작업을 할 수 있다.

  • graph : SNS와 추천 엔진 등 데이터 간 연결성이 큰 어플리케이션을 쉽게 해주는 데이터이다.

  • in memory : 게이밍과 광고 기술 애플리케이션에는 밀리초의 응답 시간을 필요로 하며, 언제라도 수신 트래픽이 급등할 수 있는 리더보드, 세션 스토어, 실시간 분석을 요구하는 어플리케이션에 특화되어있다.

  • search : 많은 앱에서 로그를 수집하는 환경에서 특화되어있다.

 

 

 

3. RDS vs noSQL

  SQL Databases NOSQL Databases

스키마

구조와 데이터 모델은 사전에 정의되기 때문에 데이터 입력시 레코드에서 사전에 필터링 된 데이터를 입력해야한다. 새로운 유형의 데이터가 저장되기 위해서는 전체 데이터베이스가 변경되어야 한다.

상황에 따라 다르다. 데이터의 분류가 필요없이 즉시 새로운 정보를 추가 할 수 있으며, sql과 달리 다른 필요한 데이터를 같이 저장 할 수 있다.

확장성

수직적이다.

수요를 처리하기 위해서는 더 좋 은 성능의 서버를 이용해야한다.여러 SQL데이터베이스에다 데이터를 저장 할 수 있지만, 이에 따른 추가적인 작업이 일반적으로 필요하다.

수평적이다.

용량을 더 늘리기 위해서는 데이터베이스 관리자가 단숨히 서버나 클라우드 인스턴스를 늘리기만 하면 된다. noSQL데이터베이스는 자동적으로 데이터를 필요한만큼 분산시킨다.

성능

일반적으로 동작하고 있는 시스템에 따라 상이하다. 또한 최고 성능을 위해서 쿼리, 인덱스 및 테이블 구조를 자주 튜닝해야한다.

일반적으로 기본 하드웨어의 클러스터 크기, 네트워크 성능, DB를 호출하는 어플리케이션의 기능에 비례한다.

데이터 호출

ANSI SQL에서 유래한 다양한 명령문으로 데이터를 불러온다

객체를 기반으로 한 API Calling을 데이터를 불러온다.

일관성

강한 일관성

제품마다 상이하다.

예를 들어 MongoDB의 경우는 강한 일관성, Cassandra는 최종 일관성을 기반으로 한다. dynamoDB는 둘다 지원

 

 

최종일관성 : 데이터를 조회 하였을 때, 그 상태의 값 그대로 불러 올 수 있다.

강력한(즉시) 일관성 : 데이터를 조회 할 때, 해당 데이터가 writing상태이면, locking상태가 되어 데이터를 불러올 수 없음.

사진 출처 : https://medium.com/system-design-blog/eventual-consistency-vs-strong-consistency-b4de1f92534d

+ Recent posts