01 DBMS
개발자 관점에서
Database와 DBMS 개념을 이해합니다.
Program의 구성요소
Prgram 은 Data와 Logic
단, 두 가지 요소로 이루어진다.
모든 프로그래밍 언어는
Data를 저장하는 기술과
Data를 처리하는 로직만 존재한다.
File System vs Database System
File System
프로그램이 실행되기 이전의 Data는 어떻게 관리되어야 할까요?
C/C++ 프로그래밍 언어에서는 Data를 File 형태로 처리하는 방식을 먼저 배웁니다.
하지만, File 입출력으로 데이터를 다룬다면, 중복된 데이터를 관리하는 로직이 필요합니다.
만약 데이터를 공유한다면, 접근 계정을 관리하고, 동시 접속 문제를 해결 할 로직도 필요합니다.
그리고 각종 보안, 백업, 복구 등의 문제를 해결할 로직도 마찬가입니다.
Database System
1950년대에 군비의 집중적·효율적 관리를 위해 컴퓨터를 활용한 시스템이 필요했고
도서관 개념을 추상화하면서 이를 '데이터의 기지'라는 뜻의 "데이터베이스"로 일컬었다.
Data를 체계적으로 저장하는 Database 시스템이 등장합니다.
1) 중복 제거
다양한 데이터 저장, 모델링
2) 공유
여러 사용자와 어플리케이션이 동시에 접속, 보안 문제
3) 복구
백업
4) 표준
처리 방법의 표준
DBMS
DataBase Management System
DBMS와 같은 소프트웨어는 특정 목적을 처리하기 위한 프로그램입니다.
DBMS vs File System
DBMS & Database
Database를 관리하는 시스템으로, 하나의 프로그램이다.
일반적으로 서버에서 별도로 동작중인 상태에서 서버 또는 외부 프로그램이 DB 작업을 요청한다.
파일 시스템의 경우, 파일 하나하나를 직접적으로 관리하고 접근 가능하지만
Database는 DBMS라는 프로그램을 통해서만 작업할 수 있다.
그래서 일반적으로 DB, Database, DBMS는 동일하게 사용된다.
"야 너 DB 뭐 쓸 거야?"
RDBMS와 DBMS의 종류
Relational DataBase Management System
관계형 데이터베이스
DBMS | 제작사 | 작동 운영체제 | 기타 | |
MySQL | Oracle | Unix, Linux, Windows, Mac | 오픈 소스(무료), 상용 | |
MariaDB | MariaDB | Unix, Linux, Windows | 오픈 소스(무료), MySQL 초기 개발자들이 독립해서 만듦 |
|
PostgreSQL | PostgreSQL | Unix, Linux, Windows, Mac | 오픈 소스(무료) | |
Oracle | Oracle | Unix, Linux, Windows | 상용 시장 점유율 1위 | |
SQL Server | Microsoft | Windows | 주로 중/대형급 시장에서 사용 | |
DB2 | IBM | Unix, Linux, Windows | 메인프레임 시장 점유율 1위 | |
Access | Microsoft | Windows | PC용 | |
SQLite | SQLite | Android, iOS | 모바일 전용, 오픈 소스(무료) |
일반적으로 DBMS라고 하면 RDBMS(Relational DBMS)를 가리킨다.
Oracle, MySQL, Microsoft SQL Server, Postgre SQL, 등이 있고, SQLite도 RDBMS이다.
그 외, 계층형(Hierarchical), 망형(Network), 관계형(Relational), 객체지향형(Object-Oriented), 객체관계형(Object-Relational) 등으로 나눌 수 있다.
Table
DBMS 중에서 RDBMS는 모든 Data가 Table에 저장됩니다.
Database가 Data를 저장하는 가장 기본적인 구조입니다.
Table(표) 형태로 단일 주제에 관해 행과 열로 구성되는 Model을 사용한다.
일상에서 사용하는 출석부, 성적표, 회원관리와 같은 정보를 저장하는 방식에 대해 생각해 보자.
현대의 인간은 대부분의 Data를 엑셀과 같은 2차원 형태로 저장하여 관리한다.
SQL
Structured Query Language
RDBMS(관계형 데이터베이스)에서 사용되는 DB를 조작하는 프로그래밍 언어입니다.
SQL은 국제표준화기구에서 표준 SQL을 정해두었습니다.
문제는 DBMS 각 회사 제품별 기능이 상이한 부분이 있기 때문에, 되도록 표준 SQL을 준수하되, 각 제품의 특성을 반영한 SQL을 사용합니다.
Transaction(트랜잭션)
SQL (질의어)를 이용하여 Database 작업을 요청하는 것