node.js

SQL? NoSQL?

단점이없어지고싶은개발자 2022. 1. 14. 13:44
반응형

SQL? NoSQL?

데이터 베이스에는 두 가지 타입이 존재한다

 

SQL 과 NoSQL

 

-Database SQL: SQL은 Structured Query Language의 약자이다. 아주 오래전부터 사용되던 방식이라 DB라 한다면 SQL을 의미하는 경우가 많다.

 

-No SQLDatabase : Non-SQL 혹은 Not Only SQL, non-relational database라고도 부른다. 관계형 테이블로 서로 이루어진 SQL과 달리 데이터 저장을 위한 메커니즘이 다른다. Unstructured된 방대한 데이터를 저장하기에 좋다.

 

서로 반대의 개념도, 경쟁상대도 아니다.

NoSQL이 스케일링에 좋다고 하던데 무슨말일까?

 

SQL의 경우엔 시스템이 커져가면서 Scale-Up형태로 DB를 증성하게 된다. 관계를 가지는 테이블들이 수평적으로 더 커진다는 말이다. 기존 사용하던 DB보다 고성능의 DB시스템이 필요하고 커지면 관리가 어려워지는 단점이 있다.

반면 NoSQL의 경우 Scale-Out의 형태로 증설을 할 수 잇게 되는데 고성능의 DB를 갖추는게 아니라 여러 DB시스템으로 추가할 수 있다는 말이다.

NoSQL은 유연한 DB Schema를 가지고 있다. 따라서 스타트업과 같이 짧은 시간 안에 DB구조등이 자주 변하는 형태라면 적합할 수 있다.

SQL은 DB Schema를 한 번 Fix하게 되면 Data및 구조의 완전성을 보장할 수 있지만 유연하진 않다.

SQL 관계형 데이터베이스

SQL은 ‘구조화 된 쿼리언어’의 약자다. 데이터베이스 자체를 나타내는 것이 아니라, 특정 유형의 데이터베이스와 상호작용하는데 사용하는 쿼리 언어다.

SQL을 아용하면 관계형 데이터베이스 관리 시스템(RDBMS)에서 데이터를 저장, 수정, 삭제 및 검색 할 수 있다.이러한 관계형 데이터베이스에는 두 가지 주요 특징이 있다.

  • 데이터는 **정해진(엄격한) 데이터 스키마 (=structure)**를 따라 데이터베이스를 테이블에 저장한다
  • 데이터는 관계를 통해서 연결된 여러개의 테이블에 분산된다

스키마...?

데이터는 테이블에 레코드로 저장되며, 각 테이블에는 명확하게 정의된 구조(structure)가 있다.

SQL에서 스키마를 준수하지 않는 레코드는 추가할 수 없다..!! 스키마를 뜯어 고치지 않는 한 추가할 수 없다..

관계

SQL기반의 데이터 베이스의 또 다른 중요한 부분은 관계다

데이터들을 여러개의 테이블에 나누어서, 데이터들의 중복을 피할 수 있다. 만약 사용자가 구입한 상품들을 나타내기 위해서는 Users(사용자) Products(상품) 등 여러 테이블을 만들어야 되지만 각각 테이블은 다른테이블에 저장되지 않은 데이터만을 가지고 있다.

하나의 테이블에서 중복없이 하나의 데이터만을 관리하기 때문에, 다른 테이블에서 부정확한 데이터를 다룰 위험이 없다.

NoSQL 비관계형 데이터베이스

NoSQL은 SQL과 반대되는 접근 방식을 따른다

  • 스키마 없음
  • 관계 없음

레코드를 문서라고 부른다.

핵심적인 차이점!!

SQL 세상에서는 정해진 스키마를 따르지 않는다면 데이터를 추가 할 수 없지만, NoSQL에서는 다른 구조의 데이터를 같은 컬렉션에 추가할 수 있다.

컬렉션을 통해 데이터를 복제하여 각 컬렉션 일부분에 속하는 데이터를 정확하게 산출하도록 한다.

그래서 특정 데이터를 같이 사용하는 모든 컬렉션에서 똑같은 데이터 업데이트를 수행되도록 해야한다.

그럼에도 불구하고!! 이러한 방식의 커다란 장점은 복잡하고 조인을 사용할 필요가 없다는 거다.

수직적 & 수평적 확장

확장(Scaling)을 시킬 수 있을까? (데이터베이스의 서버의 확장성)

확장은 수직적(vertical)확장 과 수평적(horizontal)확장으로 구별 할 수 있다.

  • 수직정 확장이란 단순히 데이터베이스 서버의 성능을 향상시키는 것이다.(CPU를 업그레이드 하는 방식)
  • 수평적장은 더 많은 서버가 추가되고 데이터베이스가 전체적으로 분산됨을 의미한다.

SQL은 수직적 확장만을 지원한다

NoSQL은 수평적 확장만을 지원한다.

반응형

'node.js' 카테고리의 다른 글

RDBMS와 NoSQL의 차이점  (0) 2022.04.13
What is Socket.io?  (0) 2022.01.21
에러 처리하기  (0) 2022.01.03
버퍼와 스트림 이해하기  (0) 2022.01.03
fs에 대해서  (0) 2022.01.03