[SQL첫걸음] 3강 데이터베이스 서버스

데이터베이스_서버

많은 RDBMS 가 클라이언트 / 서버 모델을 채택해 가동중이다.

RDBMS는 복수의 클라이언트가 보내오는 요청에 응답할 수 있도록 클라이언트 / 서버 모델로 동작한다.

클라이언트 / 서버 모델에 더 알아보자.

1. 클라이언트 / 서버 모델

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

: 웹 시스템에서 클라이언트 기능을 하는 브라우저는 사용자가 지정한 URL과 연결된 웹 서버에 요청을 보낸다. (요청내용의 대부분은 ‘이 페이지를 열람하고 싶다’이다.) 이때 클라이언트가 보내는 요구사항을 웹 용어로 ‘리퀘스트(request, 요청)’ 이라고 한다.

: 클라이언트의 요청을 받은 웹 서버는 그에 맞게 처리한다. 요청받은 내용이 ‘이 페이지를 열람하고 싶다’ 이므로 서버는 HTML로 된 데이터를 클라이언트에 반환한다. 데이터는 네트워크를 통해 전송된다. 서버의 응답을 웹 용어로 ‘리스폰스(response , 응답)’이라고 한다.

RDBMS 의 클라이언트 / 서버

: RDBMS도 웹 시스템과 마찬가지로 클라이언트 / 서버 모델로 시스템이 구성되는데, 그러나 여기서 중요한건 RDBMS 의 클라이언트 / 서버 모델은 사용자 인증이 필요하다. RDBMS는 사용자 별로 DB 접근 제한이 가능하기 때문에 사용자 인증이 필요하고 이는 사용자 ID와 비밀번호로 실행된다. 인증 실패하면 DB에 접속할 수 없다.

SQL 명령 실행

: RDBMS 에 접속하면 SQL 명령을 서버에 보낼 수 있다.

2. 웹 애플리케이션의 구조

: 정적인 HTML만으로 구성된 웹 페이지라면 웹 서버만으로 시스템을 구축할 수 있지만, 웹 애플리케이션이라 부를 정도의 규모라면 DB가 필요하다.

웹 서버에서 동적으로 HTML을 생성하려면 제어용 프로그램이 필요하다. 웹 서버에는 CGI라는 동적 콘텐츠를 위한 확장 방식이 있는데 , 이 CGI를 이용하여 프로그램과 웹 서버 간을 연동, 통신하여 처리한다.( 제어용 프로그램 = CGI 프로그램 )

CGI 프로그램을 만드는데 펄(perl)이나 PHP, 루비 등의 Script 언어가 자주 사용되고, 윈도우의 경우 ASP.NET 이 사용되며 자바와 Servlet의 조합도 있다.

3. 웹 애플리케이션에서의 DB

: 실제로 DB에 접속하는 것은 PHP나 루비 등의 프로그래밍 언어로 만들어진 CGI 프로그램이다. 웹 서버의 CGI 프로그램이 데이터베이스의 클라이언트가 된다는 것이다. 물론 DB 서버를 사용하기 위해서는 DB 서버와의 접속이 성립되고, 그 후 DB에 필요한 SQL 명령을 전달하고, 실행결과는 클라이언트인 CGI 프로그램에 돌아간다.

클라이언트와 서버가 네트워크로 연결되어 있다면 서로 다른 머신에 두어도 무방하다. 그리고 웹 서버와 데이터베이스 서버를 서로 다른 머신에 두면 처리가 분산(Load Balancing)되어 시스템 전체 성능이 향상된다. 실제로 대규모 시스템에서는 그런 경우가 많다.

4. MySQL 서버와 mysql 클라이언트

: 클라이언트 / 서버 모델은 시스템의 하드웨어 구성을 유연하게 변경 할 수 있는 장점이 있다. 따라서 클라이언트가 많아져 서버의 능력이 부족해지면 추가로 머신을 설치하여 부하 분산(Load Balancing)해 시스템 전체의 성능을 높일 수 있다.

PC 한 대로 클라이언트와 서버 모두 실행할 수 있지만 네트워크 기능은 여전히 필요하다. 클라이언트에서 서버로 접속할 필요가 있는데, 이때 네트워크를 경유해서 PC의 서버로 되돌아오는 형태로 접속한다. 이를 ‘루프 백 접속’이라 한다.

루프 백 인터페이스 ( Loop Back Interface )