찰리의 놀이터

[DB] 데이터베이스 기본 본문

DataBase

[DB] 데이터베이스 기본

차알리 2023. 2. 22. 23:24

데이터베이스(Database)란?

구조화된 정보 또는 데이터의 조직화된 모음입니다.

데이터베이스는 그 자체로는 데이터를 저장할 수 있는 창고의 역할이기 때문에 할 수 있는게 거의 없습니다.
그래서 데이터베이스 관리 시스템(DBMS, DataBase Management System) 과 통합된 상태로 제공됩니다.
DB가 창고의 역할이라면 DBMS는 크레인과 지게차, 그리고 관리인과 같이 화물(데이터)를 적재 및 관리, 이동시키는 역할을 수행합니다.

데이터베이스의 보안 3요소

  • 무결성(Integrity) : 데이터베이스에서 데이터에 대한 오류가 없어야합니다. 최초 오류가 없더라도 추가, 갱신, 삭제 등으로 오류가 발생할 수 있는데, 권한자만 데이터를 수정이 가능하도록 해야합니다.
  • 가용성(Availability): 권한을 가진 사용자가 데이터베이스에 접근할 수 있도록 하는 것을 말합니다. 즉, 권한자의 접근을 거부하면 안된단 뜻입니다. 가용성이 없으면 권한자나 프로그램이 자료사용이 불가한 경우가 발생합니다.
  • 기밀성(Confidentiality) : DBMS가 기술적으로 외부위협으로부터 자료 기밀을 보호해야한다는 뜻입니다. 기밀성은 권한없는 사용자에게 자료노출을 방지하는 기능입니다.

데이터베이스의 종류

데이터베이스는 관계형 데이터베이스(RDB, Relational DataBase)NoSQL(Not only SQL) 으로 크게 나뉩니다.
RDB를 이용하기 위한 표준 언어를 구조화 질의 언어(Structured Query Language)라고 합니다.
RDB가 가장 널리 쓰이고 있으며 최근 NoSQL 또한 많이 사용되고 있습니다.

관계형 데이터베이스(RDB, Relational DataBase)

RDB는 데이터간의 관계를 바탕으로 하는 관계형 데이터 모델을 기초로 두고 모든 데이터를 2차원 테이블 형태로 표현하는 데이터베이스입니다.
DBMS는 사용자와 데이터베이스 사이에서 사용자의 요구에 따라 정보를 생성해주고 데이터베이스를 관리해주는 소프트웨어입니다.
RDBMS는 SQL에 의해 저장되며, 정해진 스키마에 따라 데이터를 저장해야합니다.

그림과 같이 구성된 테이블이 다른 테이블과 관계를 맺고 모여있는 집합체를 RDB라고 할 수 있습니다.
파란색 열쇠 모양으로 표시되어 있는 것을 외래키(Foreign Key)라고 하고, RDB에서 관계를 정의하기 위해 사용합니다.
테이블 간의 관계에서 외래키를 이용한 데이터의 조회가 가능하다는 것이 RDBMS의 가장 큰 특징입니다.
RDB에도 종류가 있는데 이 후 포스팅에서 자세하게 다루어보도록 하겠습니다.

RDBMS의 장점

  • 정해진 스키마에 따라 데이터를 저장하여야 하므로 명확한 데이터 구조를 보장합니다.
  • 각 데이터를 중복없이 한 번만 저장할 수 있습니다(무결성).
  • 데이터 중복이 없기 때문에 데이터 update가 용이합니다.
  • 데이터의 분류, 정렬, 탐색 속도가 비교적 빠른 편입니다.
  • SQL이라는 구조화된 질의를 통해 데이터를 다룰 수 있습니다.
  • 작업의 완전성을 보장합니다.

RDBMS의 단점

  • 반드시 스키마의 규격에 따라 데이터를 다뤄야합니다.
  • 스키마 설계를 수행해야하기 때문에 비교적 시간이 오래걸립니다.
  • 데이터 처리에 대한 부하 발생 시 처리가 어렵습니다.
  • 시스템이 커지면 join문이 많이 포함되어있는 복합한 질의문을 다뤄야합니다.
  • 수평적 확장(Scale out)이 까다롭기 때문에 비용이 많이 드는 수직적 확장(Scale up)이 주로 사용됩니다.

비관계형 데이터베이스(NoSQL, Not Only SQL)

수십년간 사용하던 RDBMS 방식으로 처리할 수 없는 빅데이터를 다루기 위해 NoSQL의 필요성이 부각되기 시작하였습니다.
RDBMS와는 반대의 방식을 사용하며, 데이터 또는 테이블 간의 관계를 정의하지 않습니다.
정해진 스키마 없이 자유롭게 데이터를 저장할 수 있다는 점에서 형식이 정해져 있지 않은 데이터까지 처리할 수 있는 것이 NoSQL입니다.

NoSQL은 graph 형식, document 형식, key-value 형식, wide-column 형식 등 다양한 종류가 있습니다.
각 형식에 대한 내용은 이 후 포스팅에서 자세하게 다루어보도록 하겠습니다.

NoSQL의 장점

  • 스키마가 없기 때문에 유연하며 자유로운 데이터 구조를 가질 수 있습니다.
  • 데이터 또는 테이블 간 관계를 정의하지 않습니다. join문이 필요하지 않으며 스키마를 설계할 필요가 없습니다.
  • 많은 양의 데이터를 저장 및 처리할 수 있습니다.
  • 수평적인 확장이 용이합니다. 따라서 RDBMS보다 저렴한 가격으로 확장할 수 있습니다.

NoSQL의 단점

  • 정확한 데이터의 구조가 보장되지 않습니다.
  • 중복 데이터가 발생할 수 있습니다. 중복된 데이터 변경 시 모든 컬렉션에서 수정이 필요할 수 있습니다.
  • 데이터 구조를 결정하기 어려울 수 있습니다.
  • 데이터의 Update 속도가 상대적으로 느립니다.

RDBMS, NoSQL을 언제 사용해야할까요?

RDBMS는 데이터의 구조가 명확한 상황에서 사용하면 좋습니다. 중복된 데이터 없이 사용하고 싶은 경우, 관계를 맺고있는 데이터의 변경이 잦은 경우 사용하면 좋습니다.

NoSQL은 정확한 데이터의 구조나 형식이 없을 경우, 데이터가 변경 또는 확장될 가능성이 있는 경우에 사용하는 것이 좋습니다. 데이터의 중복이 발생할 수 있기 때문에 Update가 자주 이루어지지 않는 시스템이 좋습니다. 데이터의 양이 많은 경우 얼마든지 수평적인 확장을 통해 상대적으로 저렴한 비용으로 데이터를 저장할 수 있으므로, 데이터의 양이 많은 경우 사용하면 좋습니다.