데이터베이스
데이터베이스는 다양한 시스템에서 사용됨
데이터베이스는 저장장치 내에 정리되어 저장된 데이터의 집합, 이를 효율적으로 관리하는 소프트웨어를 → Database Management System(DBMS)
DBMS가 필요한 이유
SQL → Relational Database Management System과 관계가 깊음.
SQL, IBM이 개발한 SEQUEL이라는 관계형 데이터베이스 조작용 언어를 기반으로 만들어졌음. 현재는 표준화된 언어.
— SQL 명령의 종류
DML (Data Multipualtion Language) : 데이터베이스에 새롭게 데이터를 추가하거나 삭제하거나 내용을 갱신하는 등, 데이터를 조작할 때 사용함.
DDL (Data Definition Language) : 데이터베이스는 데이터베이스 객체라는 데이터 그릇을 이용하여 데이터를 관리하는데 이 같은 객체를 만들거나 삭제하는 명령어.
DCL (Data Control Language) : 데이터를 제어하는 명령어. DCL에는 트랜잭션을 제어하는 명령과 데이터 접근권한을 제엉하는 명령이 포함되어 있음.
DBMS는 데이터 저장 방법에 따라 몇 가지로 분류
계층형 데이터베이스
관계형 데이터베이스
객체지향 데이터베이스
XML 데이터베이스
키 - 밸류 스토어
RDBMS는 역사가 깊은 만큼 다양한 시스템에서 사용됨. 메인프레임은 대부분 RDBMS를 사용함. 기업의 기반 시스템으로 채택되는 것은 아주. 일반적인 일. 다만 최근 들어 메인프레임 자체를 찾아보기 어려워짐. 다운사이징으로 인해 소형 워크스테이션으로 대체된 것. 그래도 여전히 데이터베이스 서버로는 RDBMS가 사용되었는데, 이때부터 클라이언트/서버 구조로 유행하기 시작.
웹 시스템과 연결하여, 소규모로 자주 이용되는 경우가 늘었다는 걸로 해석됨.
대표적인 데이터베이스로는 DB2, SQL Server, PostgreSQL, MySQL, SQLite 등이 있다.
키워드 등이 생략된 방언이 존재함.
많은 RDBMS가 클라이언트/서버 모델을 채택해 가동 중. 특히 웹 시스템과 연동하는 RDBMS라면, 접속자 수가 수백명에 달하는 전용 데이터베이스 서버를 운용하는 일도 드물지 않다.
RDBMS는 복수의 클라이언트가 보내오는 요청에 응답할 수 있도록 클라이언트/서버 모델로 동작. 클라이언트는 서버에 접속 요청이나 SQL 명령 실행 요청을 보낼 수 있음. 서버는 이를 처리하고 클라이언트에 그 결과를 반환.
복수의 컴퓨터 상에서 하나의 모델을 구현하는 시스템
— 웹 시스템에서의 클라이언트/서버
웹 시스템이란 브라우저와 웹 서버로 구성되는 클라이언트/서버 모델의 시스템
클라이언트/서버 모델은 클라이언트와 서버로 구성된다!
웹 시스템에서 클라이언트 기능을 하는 브라우저는 사용자가 지정한 URL과 연결된 웹 서버에 요청을 보냄(Request) → 클라이언트의 요청을 받은 웹 서버는 요청을 처리하여 응답(데이터를 반환, Response)
요청과 응답을 주고 받으며 통신이 이뤄짐
RDBMS의 클라이언트/서버
웹 시스템과 대동소이. 하지만 단순히 요청과 응답을 되풀이하는 것은 아님.
사용자 인증 필요.
웹 애플리케이션은 일반적으로 웹 서버와 데이터베이스 서버의 조합으로 구축
웹 시스템 = 클라이언트 + 서버이며 브라우저가 클라이언트, 아파치(Apache)나 IIS와 같은 웹 소프트웨어가 서버 역할을 함. 클라이언트가 서버에게 요청하면 웹 서버는 클라이언트에게 응답.
웹 서버에서 동적으로 HTML을 생성하려면 제어용 프로그램이 필요, CGI라 불리는 동적 콘텐츠를 위한 확장 방식이 필요. 이 CGI를 이용하여 프로그램과 웹 서버 간을 연동, 통신하여 처리함
실제로 데이터베이스에 접속하는 것은 CGI 프로그램
데이터베이스 서버를 사용하기 위해서는 먼저 데이터베이스 서버와의 접속이 성립되어야 한다. 그 후 데이터베이스에 필요한 SQL 명령을 전달하고, 실행 결과는 클라이언트로 되돌아간다. 이때 웹 서버의 CGI 프로그램이 데이터베이스의 클라이언트가 된다.
클라이언트 / 서버 모델은시스템의 하드웨어 구성을 유연하게 변경할 수 있도록 도와줌.
아사이 아츠시, SQL첫걸음
https://ko.wikipedia.org/wiki/클라이언트서버모델
http://www.w3big.com/ko/python3/python3-cgi-programming.html
https://flylib.com/books/en/1.108.1.149/1/