관계형 데이터베이스란 - 데이터 베이스 첫걸음(1)

뫄뫄(ahk)·2023년 3월 24일
0
post-thumbnail
post-custom-banner

이 책에서는 데이터베이스에서 가장 널리쓰이는 종류인 관계형 데이터베이스에 대해 배운다. 데이터베이스와 시스템내에서의 위치, 연동되어 쓰이는 소프트웨어들과의 관계에 대해서 간단히 배운다.

관계형 데이터베이스란?

관계형 데이터베이스(Relational Database, RDB)의 관계(relation)는 같은 속성을 지니고 있는 튜플(row)의 모음으로 간단히 표현하면 2차원 표라는 뜻이다.

RDB의 혁신성

가계부든 엑셀이든 우리는 주위에서 손쉽게 2차원 표로 정리된 정보들을 볼 수 있다. 그런데 왜 관계형 데이터베이스가 혁신적이라고 말하는걸까?

먼저 역사적 관점에서 보자. 관계형 데이터베이스는 소프트웨어(SW)가 2차원 표로 데이터를 표현할 수 있음이 가능하다는 것을 보여준 최초의 SW이다.엑셀을 포함한 Microsoft office 이라는 업무에 혁신을 가져온 SW는 1986년에 보급되기 시작했으나, 관계형 데이터베이스에 대한 아이디어가 나온 것은 1960년대였으나 시기적으로 혁신적인 아이디어라고 할 수 있다.

기능면에서 혁신적이다. 데이터베이스가 수행하는 4가지의 기본 기능(검색, 추가, 갱신, 삭제)을 구현하기 위해서는 프로그래밍 언어를 사용하여 코드를 작성하는 대신, SQL(Structured Query Language)이라는 쉽고 직관적인 언어를 만들어 전문가가 아닌 누구라도 SQL을 사용하여 데이터베이스를 다룰 수 있도록 한다.

SQL의 구성요소

테이블

  • 테이블은 열과 행으로 구성된 2차원 표를 말한다.
  • 데이터를 관리하는 유일한 단위이기 때문에 테이블에 어떤 데이터가 들어가는지(=테이블의 설계)가 매우 중요하다. 테이블에 너무 많은 종류의 데이터가 들어간다면, 테이블의 정합성(일관성)을 유지 관리하기 힘들고 테이블을 너무 엄격히 분산시키면 데이터를 처리할 때 비용이 많이 든다.

열과 행

  • 열(column, attribute)
  • 행(row, tuple)

데이터 베이스와 DBMS

데이터베이스는 기능과 구조를 뜻하는 추상적 개념을 말하는 것이고, DBMS는 데이터베이스를 구현해놓은 소프트웨어를 말한다. 하지만 일반적으로 두 단어를 혼용하여 사용한다.

데이터베이스와 소프트웨어들

우리는 데이터베이스만 가지고 시스템을 만들 수 없다. 사용가능한 시스템을 만들기 위해서는 여러 소프트웨어들을 조합해서 만들어야하는데, 이 작업을 SI(System Intergration)라고 한다. 시스템을 만드는데 사용되는 소프트웨어는 규모에 따라 다르지만 크게 세가지로 분류할 수 있다. 운영체제(OS), 미들웨어, 애플리케이션.

계층적인 성격을 띄고 있는데, 만약 한 계층이 정상적으로 동작하지 않는다면 그 상위 계층의 소프트웨어는 설치나 동작이 아예 되지 않는다.

운영체제

운영체제는 시스템이 동작하는 환경을 제공하는 소프트웨어이다. 가장 유명하고 널리쓰이는 운영체제에는 Windows(상용),UNIX,Linux(비즈니스)등이 있다. 운영체제에도 추상과 구현의 개념이 있다(Linux - Red Hat)

미들웨어

미들웨어는 말 그대로 운영체제와 애플리케이션의 기능이 혼재해있는, 중간에 있는 소프트웨어이다. 운영체제에 설치되어 동작한다. DB는 미들웨어에 속한다.

DB는 운영체제에 설치되어 동작하기 때문에 구현하고자 하는 시스템의 운영체제와 DBMS의 조합도 기술, 비용, 비즈니스적 측면에서 신중히 고려해야한다.비즈니스적 측면을 고려해야하는 이유는 지금 사용하고 있는 소프트웨어가 몇 년 후에는 더 이상 사용하지 못하는 경우도 있기 때문이다(HP-UX, Oracle). 여러가지 이유로 시스템을 운영하며 DBMS와 OS의 조합을 변경하는 때가 있는데 마이그레이션(migration)이라고 한다. 이 또한 어떤계층의 SW를 무엇으로 변경하는지에 따라 다른 비용이 든다.

애플리케이션

자동화 하고자하는 업무 기능이 구현되어 있는 소프트웨어이다. 사용자가 가장 자주 사용하는 소프트웨어이다.

애플리케이션이 사용자와 DB사이에 들어가있는 관계로 볼 수 있다. 사용자는 대부분 DB에 직접 접근할 수 없고 애플리케이션을 통해 간접적으로 데이터를 주고 받는다. 이는 DB의 보안을 강화하고 업무 로직을 애플리케이션이 집중시켜 비용을 절감하기 위함이다.

애플리케이션을 구현하는 방법은 크게 두 가지로 나눠볼 수있다. 첫번째는 scratch로 직접 코드를 작성하여 처음부터 구현하는 방법이 있고, 두 번째는 package(기존의 구현된 SW, 일종의 기성품)를 구입해 사용하는 것이다.

첫번째 방법은 디테일한 부분까지 세세히 구현할 수 있다는 장점이 있으나 비용이 많이 들고, 두번 째 방법은 비용이 적게들 수 있으나 기능을 추가 또는 삭제해야하는 경우 추가 개발이 쉽지않고 오히려 scratch 보다 더 비용이 많이 들수 있다는 단점이 있다.

profile
NONONONONONOYes!
post-custom-banner

0개의 댓글