# 03강. 데이터베이스 서버
- `RDBMS`는 복수의 클라이언트가 보내오는 요청에 응답할 수 있도록 클라이언트/서버 모델로 동작한다.
- 클라이언트는 서버에 접속 요청이나 SQL 명령 실행 요청을 보낼 수 있고, 서버는 이를 처리하고 클라이언트에 그 결과를 반환한다.
- 일반적인 `RDBMS`는 네트워크 상에 하나의 서버를 두고 독점해 사용한다.

---

## 1. 클라이언트/서버 모델
- `클라이언트/서버 모델`이란 사용자 조작에 따라 요청을 전달하는 `클라이언트`와 해당 요청을 받아 처리하는 `서버`로 소프트웨어가 나눠져있다.
- `클라이언트/서버 모델`은 복수의 컴퓨터 상에서 하나의 모델을 구현하는 시스템을 말한다.

### 웹 시스템에서의 클라이언트/서버

##### 클라이언트/서버 모델은 클라이언트와 서버로 구성된다!

- 웹 시스템에서 클라이언트 기능을 하는 브라우저는 사용자가 지정한 `URL`과 연결된 웹 서버에 요청을 보낸다.
- 이때 클라이언트가 보내는 요구사항을 웹 용어로는 `리퀘스트(request)`라고 한다.
- 클라이언트의 요청을 받은 웹 서버에서는 그에 맞게 처리한다.
- 서버는 브라우저가 페이지를 표시할 수 있도록 `HTML`로 된 데이터를 클라이언트로 반환하고 데이터는 네트워크를 통해서 전송된다.
- 서버의 응답은 웹 용어로 `리스폰스(response)`라고 한다.
- 페이지 내용을 전달받은 브라우저는 화면에 해당 페이지 내용을 표시한다.
- 실제 웹에서는 요청과 응답이 되풀이되면서 웹 페이지가 표시된다.

### RDBMS의 클라이언트/서버
- `RDBMS`도 웹 시스템과 마찬가지로 클라이언트/서버 모델로 시스템이 구성된다. 하지만 단순히 요청과 응답을 되풀이하는 것은 아니다.
- 먼저, 웹 시스템에는 없었던 `사용자 인증`이 필요하다.
- `RDBMS`는 사용자 별로 데이터베이스 접근을 제한할 수 있는데, 이 때문에 데이터베이스를 사용하기 위해서는 사용자 인증을 거쳐야 한다.
- 사용자 인증은 `ID`와 `비밀번호`로 실행되고, 만약 인증에 실패하면 데이터베이스에 접속할 수 없다.

##### 데이터베이스를 사용할 때는 ID와 비밀번호를 이용한 사용자 인증이 필요하다!

### SQL명령 실행
- `RDBMS`에 접속하면 SQL 명령을 서버에 보낼 수 있다.
- 일단 한 번 데이터베이스에 접속하면, 이를 유지하여 재접속 없이 SQL 명령을 여러 번 보낼 수 있다.
- 사용이 끝나면 데이터베이스와의 접속은 끊긴다. 일반적으로 클라이언트를 종료하면 데이터베이스 접속도 끊긴다.

---

## 2. 웹 애플리케이션의 구조
- 웹 애플리케이션은 일반적으로 웹 서버와 데이터베이스 서버의 조합으로 구축된다.
- 웹 시스템은 클라이언트/서버 모델로 구성되며 브라우저가 클라이언트, `아파치(Apache)`나 `IIS`와 같은 웹 소프트웨어가 서버 역할을 한다.
- 웹 사이트가 정적인 `HTML`만으로 구성되어 있다면 웹 서버만으로도 시스템을 구축할 수 있을 것이다. 하지만 웹 애플리케이션이라 부를 정도의 규모라면 데이터베이스가 필요하다.
- 웹 서버에서 동적으로 `HTML`을 생성하려면 제어용 프로그램이 필요하다. 웹 서버에는 `CGI`라 불리는 동적 콘텐츠를 위한 확장 방식이 있는데, 이 `CGI`를 이용하여 프로그램과 웹 서버 간을 연동, 통신하여 처리한다.
- 프로그래밍 언어로서는 `펄(Perl)`이나 `PHP`, `루비(Ruby)` 등의 스크립트 언어가 자주 사용된다.
- 윈도우의 경우는 `ASP.NET`이 많이 사용되며, `자바(Java)`와 `Servlet`과 같은 조합도 있다.
- 실제로 데이터베이스에 접속하는 것은 `PHP`나 `루비` 등의 프로그래밍 언어로 만들어진 `CGI` 프로그램이다.
- 데이터베이스 서버를 사용하기 위해서는 먼저 데이터베이스 서버와의 접속이 성립되어야 한다.
- 그 후 데이터베이스에 필요한 SQL 명령을 전달하고, 실행 결과는 클라이언트로 되돌아간다.
- 이때 웹 서버의 `CGI 프로그램이 데이터베이스의 클라이언트`가 된다.

##### 클라이언트/서버 모델은 유연한 하드웨어 구성을 실현한다!

---

## 3. MySQL 서버와 mysql 클라이언트
- `MySQL` 패키지를 PC에 인스톨하면 서버와 클라이언트 모두 사용할 수 있다.
- `MySQL` 서비스가 데이터베이스 서버가 되고, `mysql` 커맨드가 클라이언트가 된다.
- `MySQL` 서비스는 PC 기동과 함께 자동으로 실행된다. 
- `MySQL` 서버에 접속해서 SQL 명령을 실행하는 방법에는 여러 가지가 있는데, `mysql` 클라이언트가 `MySQL`의 표준 커맨드이다.
- `클라이언트/서버 모델`은 시스템의 하드웨어 구성을 유연하게 변경할 수 있도록 해준다. 클라이언트가 많아져 서버의 능력이 부족해지면 추가로 설치하여 부하 분산해 시스템 전체의 성농을 높일 수 있다.
- PC 한 대로 클라이언트와 서버 모두 실행할 수 있지만 네트워크 기능은 필요하다.
- 클라이언트에서 서버에 접속할 필요가 있는데, 이때 네트워크를 경유해서 PC의 서버로 되돌아오는 형태로 접속하고 이를 `루프 백 접속`이라 부른다.

---