본문 바로가기

Database

Database - 데이터베이스, SQL, NoSQL

 

데이터는 변수에 저장될 수 있다. 변수에 저장했다는 것은 컴퓨터 메모리에 저장했다는 뜻이며 해당 프로그램이 종료되면 메모리가 정리되면서 저장했던 데이터도 사라져버린다. 그러나 우리는 데이터를 보존하고 싶을 때가 있다. 이러한 경우 데이터베이스를 사용하면 된다.

 

데이터베이스에는 여러가지가 있고, 또 데이터를 다루는 방식에 따라 SQL, NoSQL 등으로 나뉜다. SQL 언어를 사용하는 관계형 데이터베이스 관리 시스템은 대표적으로 MySQL이 있고, NoSQL은 몽고디비 (mongoDB) 가 있다.

 

DBMS

데이터베이스 (이하 DB) 는 관련성을 가지며 중복이 없는 데이터들의 집합이다. 이러한 데이터베이스를 관리하는 시스템을 DBMS (Database Management System, 데이터베이스 관리 시스템) 라고 부른다.

 

보통 서버의 하드 디스크나 SSD 등의 저장 매체에 데이터를 저장할 수 있다. 저장 매체가 고장나거나, 사용자가 직접 데이터를 지우지 않는 이상 데이터가 계속 보존되므로, 서버 종류와 상관없이 데이터를 보존하고 사용할 수 있다. 또한, 서버에 DB를 올리면 여러 사람이 동시에 사용할 수 있다. 사람들에게 각각 다른 권한을 줘 어떤 사람은 읽기만 가능하고, 어떤 사람은 쓰기도 가능하고, 어떤 사람은 모든 작업을 가능하게 할 수도 있다.

 

RDBMS

DB를 관리하는 DBMS 중 RDBMS (Relational DBMS, 관계형 DBMS) 라고 부르는 것이 많이 사용된다. 대표적인 RDBMS로는 Oracle, MySQL, MSSQL 등이 있다. 이들은 SQL이라는 언어를 사용하여 데이터를 관리하는데, RDBMS마다 SQL문이 조금씩 다르다.

 

NoSQL

SQL을 사용하지 않는 데이터베이스도 있는데, 이를 NoSQL (Not only SQL) 이라고 부른다. 대표적으로 몽고디비가 있으며, 구글의 파이어베이스 (firebase) 서비스 역시 NoSQL 방식으로 구동된다.

 

SQL과 NoSQL은 여러 측면에서 다른데, 그 중 대표적으로 아래와 같은 차이점들이 있다.

 

SQL NoSQL
규칙에 맞는 데이터 입력
테이블 간 JOIN 지원
안정성, 일관성
용어 (테이블, 로우, 컬럼)
자유로운 데이터 입력
컬렉션 간 JOIN 미지원
확장성, 가용성
용어 (컬렉션, 도큐멘트, 필드)

 

NoSQL을 사용하는 주된 이유는 확장성과 가용성 때문이다. 데이터의 일관성을 보장해주는 기능이 약한 대신, 데이터를 빠르게 넣을 수 있고, 쉽게 여러 서버에 데이터를 분산할 수 있다.

 

어떨 때 뭘 사용하는 게 좋을까?

애플리케이션을 만들 때 꼭 한가지 DB만 사용해야 하는 것은 아니다. 많은 기업들이 SQL과 NoSQL을 동시에 사용한다. SQL과 NoSQL은 서로 다른 특징을 가지므로, 알맞은 곳에 사용하면 된다.

 

예를 들어 항공사 예약 시스템의 경우, 비행기 표에 관한 정보가 모든 항공사에 일관성 있게 전달되어야 하므로, 예약 처리 부분의 DB는 SQL을 사용할 수 있다. 그러나 핵심 기능 외의 빅데이터, 메시징, 세션 관리 등에는 확장성과 가용성을 위해 NoSQL을 사용할 수 있을 것이다.

 

 

출처

Node.js 교과서 개정 2판 - 길벗, 조현영