1강 데이터 베이스
0. 데이터베이스란?
-
넓은 의미에서의 데이터베이스: 데이터는 컴퓨터 안의 기록되어 있는 숫자를 의미하며 데이터베이스는 이러한 데이터의 집합.
-
통용적인 의미의 데이터베이스: 특정 데이터를 확인하고 싶을 때 간단하게 찾아낼 수 있도록 정리된 형태, 정리된 데이터.
=> 데이터베이스 내의 데이터는 영구적으로 보존되어야 한다. 주기억장치에만 데이터를 저장한다면 전원을 끄는 순간 모든 데이터가 사라지기 때문에 데이터베이스의 데이터는 하드디스크나 SSD와 같은 비휘발성 저장장치에 저장한다.
1. 데이터 베이스 예시
- 웹 시스템
인터넷에서 쇼핑을 하거나 뭔가를 예약할 때 웹시스템을 통해 데이터베이스에 접근할 수 있다.( 데이터 센터에 설치된 데이터베이스의 예 )
- 계산대
편의점에서 물건을 사면, 계산대(POS 시스템)에서 데이터베이스로 전송된다.
- 휴대폰 기기
휴대폰 기기에도 작은 데이터베이스가 있다. 휴대전화의 전화번호부가 좋은 예.
2. DB와 DBMS
-
데이터베이스는 저장장치 내에 정리되어 저장된 데이터의 집합을 말하며, 일반적으로 DB라는 약자로 통용된다.
-
DB를 효율적으로 관리하는 소프트웨어를 ‘데이터베이스 관리 시스템(Database Management System)’이라 하고, 약자로 DBMS라 부른다.
3. DBMS가 필요한 이유
생산성
=> DBMS를 사용하면 생산성이 향상된다. 어떤 시스템이든 데이터 검색, 추가, 삭제, 갱신과 같은 처리가 이루어지기 마련인데 이러한 기본 기능을 DBMS가 제공한다.
시스템을 구축할 때 기본 기능부터 구현하는 것은 비용 측면에서 당연히 효율적이지 않다.
기능성
=> DBMS는 DB를 다루는 기능을 많이 제공한다. (1) 복수 유저의 요청에 대응하거나,(2) 대용량의 데이터를 저장하고 고속으로 검색하는 기능을 제공하고, (3) 또 DB 관리 기능을 유저가 확장할 수 있어 유연하게 시스템 개발 가능하다.
신뢰성(Reliability)
=> 대규모 데이터베이스는 많은 요청에 대응할 수 있도록 만들어져 있다. 많은 요청에 대응하기 위해 하드웨어를 여러대로 구성하여 신뢰성을 높였다. 신뢰도가 높다는 것은 예를 들어 한 하드웨어가 고장나더라도 다른 하드웨어로 요청들에 대응가능한 경우가 신뢰도가 높은 경우이다. 동시에 성능(Performance) 향상을 꾀하기도 한다.
실제로 일부 DBMS는 컴퓨터 여러 대를 두고, 소프트웨어를 통해 확장성(Scalability) 과 부하 분산(Load balancing)을 구현한다. 이를 보통 ‘클러스터 구성’ 또는 ‘스케일 아웃’이라 부른다.
-
확장성(Scalability) : 사용자의 요구에 맞추기 위해 소프트웨어의 크기나 용량을 확대해도 기존 기능을 계속하여 잘 동작할 수 있는 능력을 말한다.
-
부하 분산(Load balancing) : 컴퓨터 네트워크 기술의 일종으로 둘 혹은 셋 이상의 중앙처리장치 혹은 저장장치와 같은 컴퓨터 자원들에게 작업을 나누는 것을 말한다.
정리 : DBMS란 데이터베이스를 관리하는 소프트웨어로, 사용 목적은 생산성 향상과 기능성, 신뢰성 확보에 있다.
4. 데이터베이스를 조작하는 언어 SQL
-
DBMS는 DB를 관리하는 소프트웨어이고, DBMS를 이용하면 간접적으로 DB를 참조하거나 데이터 추가, 삭제, 갱신과 같은 기본 기능을 사용할 수 있다고 배웠다.
-
이 같은 DBMS와의 대화에 필요한 것이 바로 SQL이다. 데이터베이스에도 몇 가지 종류가 있지만 SQL은 ‘관계형 데이터베이스 관리 시스템(RDBMS: Relational Database Management System)’을 조작할 때 사용한다.
-
SQL은 IBM이 개발한 SEQUEL 이라는 관계형 DB 조작형 언어를 기반으로 만들어졌고, 자바와 C언어 처럼 표준 언어이다. 표준 언어라는 것은 곧 생산성을 향상시킬 수 있다는 의미이다.
SQL 명령의 종류
-
DML
=> Data Manipulation Language의 약자. 데이터베이스에 새롭게 데이터를 추가하거나 삭제하거나 내용을 갱신하는 등, 데이터를 조작할 때 사용한다. SQL의 가장 기본이 되는 명령어 셋(set). -
DDL
=> Data Definition Language의 약자로 데이터를 정의하는 명령어. 데이터베이스는 ‘데이터베이스 객체(Object)’ 라는 데이터 그릇을 이용하여 데이터를 관리하는데, 이 같은 객체를 만들거나 삭제하는 명령어이다. -
DCL
=> Data Control Language의 약자로 데이터를 제어하는 명령어. DCL에는 트랜잭션을 제어하는 명령과 데이터 접근권한을 제어하는 명령이 포함되어 있다.
정리 : SQL 명령은 DML, DDL, DCL의 세 종류로 나뉜다.