본문 바로가기

프로그래밍

sql vs nosql

-- 내가 보려고 쓰는 글-- 

 

sql 에 대해서는 이미 어느정도 알고 있기 때문에

nosql에 대해서 쓰는 글이다.

refernce https://esckey.tistory.com/107

 

NoSQL이란 무엇인가?

인터넷 대중화에 이어 수년 전부터 SNS 서비스가 활성화되면서 컴퓨팅 시스템에도 변화가 찾아오기 시작했다. NoSQL의 등장 배경 예전에 컴퓨팅 시스템은 기업 업무를 자동화하고 효율화하는 데

esckey.tistory.com

 

핵심 - key: value 값의 형태로 비정형 데이터를 저장하기에 용의함.

발전하게 된 이유 sns의 발달로 단순하지만 엄청나게 많은 양의 데이터가 쌓이게 됨. 기존의 rdbms의 저장 방식으로는 감당할 수 없을 만큼의 데이터로 인해서 새로운 방식의 저장 방식이 필요했다. 

nosql database는 수많은 형태로 존재하기 때문에 rdbms와 같이 특정할 수는 없지만 몇가지 공통적 특성이 있다.

1. rdbms와 달리 데이터간의 관계를 정의하지 않는다

   foreign key 등을 설정하지 않으며 테이블간의 join도 불가능하다.

 

2. rdbms에 비해 훨씬 더 대용량의 데이터를 저장 할 수있다.

 

3. 분산형구조를 지니고 있다.

  RDBMS와는 다르게 하나의 고성능 머신에 데이터를 저장하는 것이 아니라, 일반적인 서버수십 대를 연결해 데이터를 저장 및 처리하는 구조를 갖는다. 즉, 분산형 구조를 통해 데이터를 여러 대의 서버에 분산해 저장하고, 분산 시에 데이터를 상호 복제해 특정 서버에 장애가 발생했을 때에도 데이터 유실이나 서비스 중지가 없는 형태의 구조다.

 

4. 고정되지 않는 테이블 스키마 rdbms와 다르게 테이블의 스키마가 유동적이다. id로 사용하는 key 부분의 타입만 동일하고 데이터를 저장하는 컬럼들은 특정 데이터 타입에 종속되지 않는다.

 

5. 대부분의 nosql db는 cap 이론을 따르고 있다.  c - consistency -> 분산된 노드중 어느 노드로 접근하더라도 값이 같아야 한다.  a - Availability  -> 클러스터링된 노드 중 하나 이상의 노드가 fail이 되더라도 정상적으로 서비스를 수행 할 수 있어야 한다.  p - partition Tolerance -> 클러스터링 노드간 통신하는 네트워크가 장애를 겪더라도 정상적으로 서비스를 수행할 수 있는 기능

 

저장 방식은 key - valueordered key-valuedocument key-value -> 여기서 document 는 xml, json등 구조화된 타입 * nosql 주의 사항** rdbms와 적절한 혼용 필요 ! -> 지금 내가 서비스하는 프로젝트들도 이미 postgresql + redis의 조합으로 이루어짐

** 하드웨어 설계 병행  -> 하드웨어 용량 및 네트워크 대역폭 등등 처음부터 잘 설계해서 사용해야함.

 

** NO SQL은 절대 SIVER BULLET이 아니다. 기술적인 난이도도 높고, 다루기 쉽지 않다. 그렇기 때문에 도입전에 NOSQL이 꼭 필요한지 충분히 검토할 필요가 있다.

 

이 글의 목적은 이 글을 통해서 nosql을 완벽히 이해하기 x 나중에 실무에서 필요할때, 구글에 검색할 수 있을 정도의 키워드들을 담아 놓는 용도.