Search

2장 관계형 데이터 베이스란?

DBMS

데이터 베이스의 기능을 제공하는 소프트웨어
Database Management System

그래서 관계형 데이터베이스가 무엇인가

relational
2차원 표를 표기할 때 사용하는 단어
관계형 데이터 베이스
데이터를 2차원 표를 사용해 관리하는 데이터베이스
2차원 표라는 것이 그렇게 대단한가?
옛날 옛적에는 텍스트 파일로 데이터를 관리해서, 콤마로 구분
원조격 csv
관계형 데이터 베이스의 혁신성
역사적 관점
표를 통해 표현하던 것을 소프트웨어를 사용해 능숙히 표현
1980년대 당시에는 엑셀이 보급되기 시작한 시점, 위의 관점은 당시에는 시대를 앞서가는 생각
기능적 관점
2차원 표를 사용한 데이터 관리 방법에서의 획기적 접근
관계형 데이터 베이스에서의 데이터 조작
검색
신규 데이터 등록
기존 데이터 갱신
기존 데이터 제거
관계형 데이터 베이스의 이점
SQL이라는 언어를 통해 데이터 조작 가능
프로그래밍 언어와 같이 복잡한 조작이 없어도 됨(ORM 제외)

SQL

기본적 조작
SELECT
INSERT
UPDATE
DELETE
위와 같이 검색, 등록, 갱신, 제거를 일상 언어에 가까운 표현을 통해 사용
테이블
관계형 DB에서의 2차원 표
데이터를 관리하기 위한 유일한 단위
테이블 설계 주의점
테이블에 너무 많은 정보를 채워 넣는다고 하면 정보의 정합성 유지 관리가 어려움
너무 엄격하게 분산시키면 성능이 나빠짐
비정규화와 정규화의 트레이드오프
열(Row)과 행(Column)
이 책에서는 열과 행이 교차하는 지점을 이라고 부른다

DBMS와 데이터 베이스의 차이

Oracle이나 MySQL은 DBMS이며 데이터베이스가 아님
데이터 베이스
기능이나 구조를 나타내는 추상적 개념
DBMS
그것을 실현하기 위해 작성된 구체적 SW

소프트웨어와 데이터 베이스의 관계

시스템은 단순히 데이터베이스만으로 구축할 수 있는 것이 아니다
SI(System Intergration)
다른 여러 가지 소프트웨어와 조합해서 만들어야 한다
시스템의 목적이나 규모에 따라 다르지만 조합되어 사용되는 소프트웨어는 크게 3가지 존재
운영체제, 미들웨어, 애플리케이션
이 3가지 소프트웨어는 계층성(운영체제 - 하, 미들웨어 - 중, 애플리케이션 - 상) 이 존재
한 레이어(계층)의 소프트웨어가 동작하지 않으면 상위 레이어의 소프트웨어는 설치해도 동작하지 않거나 설치조차 할 수 없는 제약이 발생한다.
DBMS 는 이 중 미들웨어에 위치하며, 미들웨어라는 이름에서 알 수 있듯 운영체제와 애플리케이션의 중간에 위치한다.
'중간' 이란 계층에서 봤을 때 위치적인 요인과 기능적으로 양쪽의 성질을 겸비해서 갖추고 있다는 의미
이 밑은 3가지의 특성과 관계에 대해 설명했다.
운영체제(OS, Operating System)
시스템을 동작하게 하기 위한 일종의 토대가 되는 기능을 제공하는 소프트웨어.
우리가 사용하는 PC,휴대폰에 반드시 탑재되어 있으며 대표적인 OS로는 Windows, OS X, iOS, Android, Linux, Unix 등이 있다.
OS에서도 추상(개념) 과 구상(구현) 계층의 구별이 있는 것에 유의하자.
미들웨어
미들웨어는 직역하면 '중간 소프트웨어' 고, 데이터베이스는 여기에 속하는 소프트웨어이다.
즉 데이터베이스는 OS에 설치하여 움직이는 것을 의미한다.(이를 'OS에서 동작한다'라고 말한다.)
OS와 데이터베이스가 복수 개의 구현물이 존재한다면 어떠한 구현물들의 조합을 선택해야할까?
기본적으로 데이터베이스의 구현체는 대부분 OS에 대응해서 만들었기 때문에 기술적으로 가능한 선택지의 수는 매우 많다.
예를 들어 Windows + Oracle , HP-UX + Oracle , Red Hat + MySQL 의 조합 등이 가능하다. (가능하지 않은 예외적인 조합도 당연 존재한다.)
이런 OS와 DBMS의 조합을 선택할 때는 주로 다음과 같은 점을 고려하여 선택한다.
예산, 제품기능, 개발자와 운용자의 기술 조합
OS도 DBMS도(상업적 용도로 사용할 수준) 무료로 구할 수도 없고 비용도 선택사항에 따라 상당한 변동이 존재
OSS(오픈소스 소프트웨어) 처럼 일정 요건을 충족하면 무료로 이용할 수 있는 소프트웨어도 있지만, 실제로는 유료 서비스를 받지 않으면 상용으로 운용하기에는 어려움
제품에 따라 기능이 다르다
또한, 제품에 따라 기능이나 조작 방법이 다른 것도 OS나 DBMS의 공통 특징이다.
리눅스와 유닉스는 기능이나 동작이 유사하여 OS를 변경해도 다루는 방법이 유사하지만, 윈도우 OS는 매우 다른 조작 방법을 가지고 있음
또한, DBMS에서 Oracle에 익숙한 엔지니어가 MySQL로 갈아탄다면 즉시 익숙하게 쓰지는 못할 것.
Migration(마이그레이션)
조합의 자유도가 높은 것은 OS나 DBMS가 가능에 대한 표준 규칙을 따르고 있고 어느정도의 이식성이 있기 때문
마이그레이션 : 어떠한 OS와 DBMS의 조합에서 다른 조합으로 시스템을 변경하는 것
OS만 이행 : DBMS의 수정이 적음
DBMS만 이행 : DBMS의 수정이 많음
OS와 DBMS 동시 이행 : 가장 위험
보통 DBMS 공급사에서 OS별로 서비스를 지원하지만, 비즈니스 전략 등의 이유로 특정 OS에서의 서비스를 지원하지 않거나 중단되는 경우가 발생할 수 있음 마이그레이션 발생
두 가지 전부 마이그레이션(OS, DBMS)을 이행하게 된다면 위험성이 가장 높기도 하다.
애플리케이션
애플리케이션이란 업무용 기능을 가진 프로그램된 소프트웨어로, 사용자가 가장 빈번하게 조작하는 소프트웨어이다.
애플리케이션을 실현하는 수단으로는 크게 2가지가 있다.
스크래치(Scratch)
이는 Java, C언어와 같은 프로그래밍 언어를 사용하여 프로그램을 직접 작성하는 방법.
패키지(Package)
기존에 있던 애플리케이션 소프트웨어를 사는 방법
두 가지 방법은 시스템 개발 구성에서 자주 논쟁이 되는데
스크래치는 직접 만들기 때문에 업무 세부 사항까지 대응할 수 있어 꼼꼼한 서비스를 제공할 수 있는 장점이 있지만, 세부 대응을 시작하면 한도가 없는 경우가 있어 개발 비용이 높아질 수 있다.
패키지는 기존 제품을 설치하기만 하면 되기 때문에 개발 비용을 줄일 수 있지만, 제품의 기능이 부족한 경우에는 추가 개발이 필요할 수 있어 막상 스크래치보다 비용이 더 많이 들 수도 있다.
애플리케이션과 데이터베이스의 관계
사용자가 데이터베이스를 직접 조작하는 것이 아닌 어디까지나 애플리케이션을 매개로 해서 데이터베이스에 접근한다는 형태를 취하게 되는 것.
그러므로 사용자 입장에서는 데이터베이스에 접속하고 있다는 것조차 의식하지 않은 경우가 대부분이다.
이유
데이터베이스의 보안을 높이기 위해서.
업무 로직을 애플리케이션에 집중 시켜 개발이나 수정에 걸리는 비용을 낮출 수 있는 이점이 있기 때문.(언제까지나 예외는 존재. 원칙적으로는!)

OS와 데이터베이스 조합 반례

SQL SERVER에서는 윈도우 이외의 OS에 대응하는 구현물이 존재 X
이는 비지니스 전략으로 인함
SQL SERVER ~ WINDOW 모두 마이크로소프트에 의해 개발 및 판매 진행
마이그레이션은 시간과 돈이 들어가기 때문에, 조합 선정은 신중히