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 모두 마이크로소프트에 의해 개발 및 판매 진행
•
마이그레이션은 시간과 돈이 들어가기 때문에, 조합 선정은 신중히