포스트

[DB] 데이터베이스 <1 : 특징과 종류>

0. 발단

목표로 하는 로그인 기능과 게시판 기능을 추가하기 위해 그것들을 저장할 DB에 대해 알아보고자 한다.

이번 글에서…

  1. 데이터베이스를 사용하는 이유
  2. 데이터베이스의 종류
  3. 장단점

등을 알아볼 계획이다.

1. 데이터베이스를 사용하는 이유?

사용자가 입력한 정보나, 글들을 저장하기 위해 사용된다. 정보를 단순히 저장하는데 그치는 것이 아닌, 클라이언트의 요구에 따라서 정보를 조회하거나, 수정, 입력해야 할 일이 많을 것이다.

이때 데이터베이스(이하 DB)를 사용하게 되면 이러한 과정을 빠르고 정확하게 할 수 있다고 한다.

주로 작은 데이터를 굉장히 많이 저장하는데 특화돼 있어, 하나하나의 데이터의 크기가 큰 경우에는 DB를 사용하는것이 부적절할 수도 있다.

2. 데이터베이스의 종류

데이터베이스에도 많은 종류가 있다. (하지만 대부분 사장됐다고 한다.)

이번 글에서 알아볼 데이터베이스는 크게 2종류로 SQL문을 사용하는 DB와 사용하지 않는 NoSQL을 알아볼 것이다.

2.0 SQL이 뭔데

SQL은 Structured Query Language 의 약자로, DB 시스템에서 자료를 처리하는데 사용되는 구조적 질의 언어다.

1
SELECT XX, YY, ZZ ... FROM table {WHERE 조건};

처럼 내가 원하는 데이터만 원하는 테이블에서 조회할 수 있게 해주는 일종의 검색(?) 과 같은 역할을 한다.

물론 삭제, 수정, 추가도 가능하다.

2.1 SQL을 사용하는 DB - RDB

SQL은 많은 데이터베이스 종류에서 사용하지만 현재 가장 많이, 사실상 대부분의 DB에서 사용되는 것은 RDB, 관계형 데이터베이스다.

기본적인 특징으로 테이블이 행과 열로 이루어져 있다. 엑셀을 생각한다면 바로 정답이다.

각각의 열(column)은 유일한 이름을 가진다. field 혹은 attribute로 부르기도 한다.

행(row) 은 데이터의 묶음을 말한다. tuple 혹은 recode로 부르기도 한다.

 column   
     
row    
     

RDB는 Relational DataBase 의 약자로, 한국어인 “관계”형은 이 Relation에서 따왔다. 여기서 말하는 “관계” 란 테이블과 테이블간의 종속성을 관계로 묶어서 표현한다고 해서 나온 말이다.

예를 들어 2개의 테이블이 있다고 해보자

선수번호이름팀 코드포지션
1김민재DM01DF
2손흥민ET03FW
3이강인PP01MF
4킬리안 음바페PP01FW
팀 코드팀명연고지
DM01바이에른 뮌헨뮌헨
ET03토트넘 핫스퍼런던
PP01파리 생제르맹파리

이때 두 테이블은 “팀 코드” 로 관계를 갖고 있다.

첫번째 테이블을 보고 **김민재가 뛰는 팀의 연고를 알 수는 없지만, 서로 관계없는 값(이 예시에서는 선수 테이블, 팀 테이블로 분리했다.) 들을 분리해 다른 테이블로 만들어 관계를 맺게 하고 그 관계를 통해서 데이터를 조회하는 방식이 RDB이다.

RBD의 특징은 다음과 같다

  1. 데이터의 분류, 정렬, 탐색 속도가 빠르다. 👍
  2. 오랫동안 사용된만큼, 신뢰도가 높고 데이터 무결성을 보장한다. 👍
  3. 기존에 작성한 스키마를 수정하기 어렵다. 👎
  4. 데이터베이스의 부하를 분석하는것이 어렵다. 👎

대표적인 RDB의 관리 시스템으로는

Oracle, MySQL, MariaDB 등이 있다.

2.2 SQL을 사용하지 않는(?) DB

사실 NoSQL의 No는 진짜 No가 아니고 Not Only이다.!!!!!!!!

즉 SQL 쿼리문이 사용되기는 하지만 DB를 다루는데 SQL로만 다루지 않는다는 뜻이다.

이 유형에 속하는 DB들은 대부분 비관계형 데이터베이스를 사용하기 때문에 RDB와 완전히 다르다고 할 수 있다.

NoSQL들의 특징은 다음과 같다

  1. 높은 확장성, 가용성을 가지고 있다. 👍
  2. 데이터 처리 속도가 SQL에 비해 굉장히 빠르다 👍
  3. 대부분 오픈소스이다. 👍
  4. 스키마가 없다. (4번의 이유로 1번이 가능한듯 하다.)
  5. 데이터베이스의 변형, 중복에 취약하다. 👎
  6. 중복이 있을 경우 수정하는데 어려움이 따른다. 👎

NoSQL에 속하는 DB 관리 시스템은 다음과 같다

MongoDB (Document), Redis(KV), Cassandra(Wide - Column), Ogilvy(Graph)

2.3 정리

RDB와 NoSQL 둘 다 장점 단점이 뚜렷하다.

RDB는 테이블의 무결성, 작동의 신뢰성이 보장되어 있기 때문에 데이터가 잘못 들어가면 안되는 은행같은 필드에서 유용하게 쓰일 것이다.

NoSQL들은 RDB에 비해 가격과 속도에서 강점을 보인다. 데이터가 자주 수정될 필요가 없거나, 중복되어도 문제 없거나 일관될 필요가 없는 데이터들은 NoSQL들로 관리하면 속도 면에서 큰 이점을 얻을 것이다.

2.4 What’s next?

다음 글에선 MySQL과 MongoBD를 Flask로 다뤄보도록 하겠다.



이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.