개발 아티클(4) - RDBMS와 NoSQL

노승현·2024년 6월 28일

내일배움 사전캠프

목록 보기
13/38

바로 어제 SQL의 인기에 대한 아티클을 보고 그에 대한 정리를 해보았다. 그 중 관계형 데이터베이스와 비관계형 데이터베이스, 그리고 NoSQL에 대한 것을 알게 되었다.
하지만 정확하게 무엇인지에 대한 공부는 되지 않기 때문에, 그에 대한 연장선으로 오늘 RDB와 NoSQL에 대해 알아볼 생각이다.

데이터베이스란?

여러 사람들이 공유하고 사용할 목적으로, 컴퓨터, 서버 또는 클라우드에 디지털 방식으로 저장하고 관리되는 데이터들의 모임을 말한다.
공부하면서 가장 자주 사용되는 데이터베이스로는 서울의 열린데이터광장 같은 공공데이터가 있다. 이 데이터들은 API를 이용해 데이터를 받아오는 경우가 많다.


RDB(Relation DataBase)

RDB는 관계형 데이터베이스라 불리는 모델로 관계(RelationShip)로 연결되어 있는 데이터베이스다. 회원정보나 서비스 이용 기록 등 정보 타입에 따라 정보가 입력되거나, 기록이 추가되는 방식이다.
복잡한 계산 없이 각각 데이터가 어디로 들어가야 할지 미리 정해져 있다. 만일 한 회사에서 어떤 소속에 신입이 들어온다 했을 때, 그 회사 데이터베이스 안에 소속이 있는 테이블에 신입에 대한 데이터를 넣으면 된다.
입력되는 정보가 숫자인지, 텍스트인지 미리 정할 수 있듯이, 단순히 표준이 정해져 있고 데이터베이스를 만들 때 표준을 정해 둘 수 있기 때문에, 어떤 데이터가 들어가도 관리가 편하다.

관계형 데이터베이스는 테이블 형식, 알기 쉽게 표 형식으로 설계가 된다. 열은 컬럼(column)이라 표현하고 각 항목의 속성을 말한다. 그리고 행은 로우(row)라 표현하고 하나의 항목을 대표하는 데이터를 말한다.
회사를 예시로 들면 컬럼은 이름, 전화번호, 경력 등 속성들을 말하고, 로우는 각 속성에 맞는 데이터를 얘기한다 볼 수 있다.

RDB의 장점

모든 데이터의 형식이 일관되게 유지(스키마가 명확함)되기 때문에 데이터의 무결성이 크다.
또한 동일한 데이터를 여러 번 저장하지 않기 때문에 저장 공간을 절약할 수 있다. 같은 신입에 대한 데이터를 두 번 이상 저장시키지 않는 것과 같은 이치다.

RDB의 단점

처음 정해진 테이블의 구조를 변경하기가 어렵다. 만일 어떤 데이터를 추가하는 데 새로운 컬럼을 추가(즉 구조를 변경하는 것)해야 할 정도로 중요한 데이터일 경우 컬럼을 추가할 때 나머지 모든 데이터들을 다 건드려야 하기 때문에, 시간이 많이 걸린다.
또한 정확한 데이터를 가져와야 할 경우, 복잡한 쿼리가 필요할 수 있다는 점인데 이는 이전 아티클에서도 다뤘었다. 데이터베이스에 대해 제대로 공부하고 쿼리를 자세하게 적는다면 SQL이 정말 좋다는 것인데, 이는 그만큼 어렵기 때문에 SQL을 비판하는 사람이 많다는 점을 생각하면 어느정도 단점이라 볼 수 있다.

RDBMS

DBMS는 DataBase Management System으로 데이터베이스를 생성 및 수정, 관리 할 수 있는 소프트웨어다. 예를 들어 학생 정보를 추가하거나 수정하고, 특정 학과 학생을 검색 등의 작업을 할 수 있다.
RDBMS는 DBMS 중 관계형 DB를 관리하는 소프트웨어를 말한다.
RDBMS의 종류로는 우리가 잘 아는 Oracle, MySQL, MariaDB 등이 있다. 이들은 관계형 데이터베이스를 이용하기 때문에, 데이터를 2차원 테이블 형식으로 관리한다.

ERD

Entity-Relationship Diagram으로 개체와 관계에 대한 모델을 시각적으로 표현한 것으로, 데이터베이스를 설계할 때 필요하고, DB의 논리적 구조를 시각적으로 표현하는 도구다.
예를 들어 학생 테이블과 수업 테이블이 어떤 관계 가지는지 시각적으로 표현한다면, ERD를 통해 엔티티 간 관계를 명확히 정의할 수 있다. 그리고 ERD에서 정의된 엔티티는 RDBMS 내 테이블로 변환시킬 수 있어, 각 엔티티 속성은 테이블의 열이 되고, 엔티티 간 관계는 외래키 통해 구현시킬 수 있다.


NoSQL

비관계형 데이터베이스라 불리고, 관계형 데이터베이스와 다른 방식으로 데이터를 저장한다. NoSQL은 대용량의 소셜 미디어 데이터를 빠르게 처리하는 데 사용된다.
대표적으로 Redis (key-value DB, TTL-Time to Live 방식), MongoDB (key-document, json 형태 출력)가 있다.

NoSQL의 장점

관계형 DB와 달리 처음부터 정해진 구조가 없기 때문에(유연성이 큼), 데이터를 저장하고 수정할 때 필드를 추가하거나 변경하기가 쉽다.
또한 애플리케이션에서 필요한 형식으로 데이터를 저장하기 때문에, 읽는 속도가 빠르다.
또한 서버를 여러 대 추가해서 데이터베이스의 용량과 처리 성능을 확장하는 수평적 확장이 가능하다.

단점

유연성이 큰만큼, 데이터의 구조를 미리 정해두지 않고, DB 자체에서 구조를 설정해 놓지 않기 때문에, 구조 결정을 미루면 나중에 복잡한 문제가 발생할 수 있다. 데이터들의 구조가 모두 다를 경우엔 1번의 데이터에 있는 속성을 2번의 데이터는 그 속성을 가지지 않을 수 있기 때문에, 복잡해질 가능성이 있다.
또한 데이터들이 중복돼서 저장되기 때문에, 업데이트를 할 때 번거로울 수 있다. 여러 컬렉션에서 중복된 데이터를 수정할 때 모든 컬렉션에서 일관되게, 같은 구조 형태로 수정해야 한다. 관계형 데이터베이스의 경우엔 한 번만 수정하면 된다.

이렇게 RDB와 NoSQL에 대해서 배워보았다. 데이터에 대해서 공부를 한다면 이 두 가지 형태의 데이터 모델을 알아둬야 하기 때문에, 이에 대한 공부를 빠르게 할 수 있어서 다행이라고 생각한다.

0개의 댓글