메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

IT/모바일

귀여운 나의 MySQL

한빛미디어

|

2002-12-02

|

by HANBIT

13,505

저자: 전순재

MySQL은 SQL2 기반의 관계형 데이터베이스 엔진이다. 웹의 출현으로 데이터베이스 엔진이 각광을 받기 시작했는데, 그 대표주자가 바로 MySQL이다. MySQL이라는 이름의 유래는 저자조차도 그 이름이 귀여운 나의 딸(이름이 My임)에서 유래했는지 아니면 최초 코드에서 My라는 접두사가 많아서 유래했는지는 확실하게 모른다고 한다. 그냥 귀여운 나의 SQL 정도로 생각해도 좋을 것 같다. MySQL은 가볍고 빠를 뿐만 아니라 무료라는 두 가지 매력 덕분에 인터넷을 움직이는 필수적인 구성요소가 되어 LAMP(리눅스, 아파치, MySQL, Perl, PHP, Python)에서의 M을 당당히 차지하고 있으며, 현재 우리나라에서는 APM(아파치, PHP, MySQL)이라는 삼총사의 일원이 될 정도로 큰 인기를 누리고 있다.
"오라클이나 사이베이스를 사용하는 프로젝트에서는 비용 문제 때문에(라이선스 비용을 줄이기 위해) 단계의 수를 줄이는 편이지만, MySQL에서는 이런 비용은 전혀 문제가 되지 않는다"
제 6장 보안 - 권한 배분에 관한 장에서
MySQL & mSQL
MySQL은 단순히 무료라는 차원을 넘어 자유롭기도 하다. 게다가 운영체제도 리눅스를 넘어서서 윈도우와 맥 OS X에 이르기까지 이식성이 풍부하다. 새로 데이터베이스를 시작하는 사람들에게 어느 모로 보나 매력 만점의 대상은 바로 MySQL이다. 본 기사에서 언급하고 있는 『MySQL 시스템 관리와 프로그래밍: 자바, PHP, 펄, C, 파이썬』은 원래 『MySQL & mSQL』의 개정판으로서 초판의 내용에서 mSQL이 빠진 대신 MySQL에 보다 초점을 두고 저작되었다. 그리고 프로그래밍에 대한 부분이 강화되었다.

구슬이 보배가 되려면...

제목 뒤에 붙은 "자바, PHP, 펄, C, 파이썬"이라는 부제가 참으로 매력적이다. MySQL에 관심이 있기만 하다면, 나머지 언어 중 하나 이상은 경험이 있을 터이므로 누구나 관심을 가질 듯하다. 이 부제는 저자의 의도를 역자가 정확하게 파악하여 의도적으로 붙인 것이리라 생각한다. 저자는 "데이터베이스는 다른 애플리케이션에서 활용해야 그 가치를 제대로 발휘할 수 있다"라고 그 중요성을 언급하고 있으며, 역자는 이 중요성을 "구슬이 서말이라도 꿰어야 보배"라는 말로 정확하게 서문에서 지적하고 있다. 그리고 그 중요성이 "자바, PHP, 펄, C, 파이썬"이라는 부제로 표현되었으리란 짐작이 간다. 그렇지만 책에서의 목차와 배열 순서가 다른 것을 보면 저자와 역자가 생각하는 각 언어의 중요도는 다른 듯하다. 관심있으면 그 순서를 한 번 살펴 보는 것도 재미있을 것이다.

관리자 vs 프로그래머

이 책은 두 가지 측면으로 MySQL에 접근한다. 하나는 데이터베이스 관리자의 관점이고 다른 하나는 애플리케이션 프로그래머의 관점이다. 이 책의 전반부는 데이터베이스 관리자와 프로그래머를 위한 자습서로서, 그리고 후반부는 참조서로서 계획되어 있다. 그렇지만 활용서로의 가치는 독자가 얼마나 응용하느냐에 달려 있을 것 같다.
이 장에서 배우는 내용은 MySQL에만 적용되는 것이 아니라, 일반적인 관계형 데이터베이스 엔진을 사용하는 애플리케이션 프로그래밍에서 중요시되는 주제에 관한 것이다. 데이터베이스 프로그래밍과 관련하여 웹 지향적 데이터베이스 애플리케이션에서 공통적으로 사용하는 기본적인 아키텍처, 복잡한 프로그래밍 모델을 관계형 데이터베이스에 매핑하는 법과 같은 복잡한 주제까지 다루게 될 것이다.
제 8장 데이터베이스 애플리케이션
딱히 한마디로 표현한다면 이식성(portable)이라고 해야겠다. 사실 MySQL을 비롯하여 부제에 나오는 모든 언어가 운영체제에 구애받지 않는다는 점을 주목해야 하겠다. 저자가 더 중요하게 생각하는 것은 MySQL이 아니라 SQL이 아닌가 생각한다. 저자는 MySQL 관리 또는 프로그래밍을 처음 접하는 독자들을 대상으로 MySQL 자체가 목적이 아니라 MySQL을 수단으로 하여 범용적인 데이터베이스 관리와 프로그래밍 방식을 전달하려고 한다.


MySQL 시스템 관리와 프로그래밍: 자바, PHP, 펄, C, 파이썬, 개정판

참고 도서

MySQL 시스템 관리와 프로그래밍: 자바, PHP, 펄, C, 파이썬, 개정판
조지 리스, 랜디 제이 야거, 팀 킹, 휴 윌리엄스


책의 구성

이 책의 내용은 크게 네 부분으로 구성된다. 제 1부에서는 MySQL 소개, 리눅스와 윈도우에서의 설치 방법, MySQL용 SQL에 대한 설명, 그리고 일반적인 데이터베이스 관리방법 등을 다룬다. 제 2부는 MySQL 관리법으로서 성능 조율, 보안, 데이터베이스 디자인등에 관하여 다룬다. 제 3부는 MySQL 프로그래밍으로서, 저자가 중요하게 생각하는 부분이다. 일반적인 데이터베이스 애플리케이션, Perl, Python, PHP, C API, Java, 그리고 MySQL의 확장방법 등을 다룬다. 제 4부는 MySQL 참조서이다. MySQL용 SQL 구문, MySQL 데이터 유형, 연산자와 함수, MySQL PHP API 참조서, C 참조서, 그리고 Python DB-API를 다루고 있다.
    제 1 부 : 소개 (MySQL을 처음 접하는 독자가 대상)
  • 1장. MySQL: 관계형 데이터베이스로의 첫 출발을 위하여 MySQL의 역사, 설계 그리고 특징을 설명했다
  • 2장. 설치:기본적으로 유닉스와 윈도우에서의 설치법을 다루고 있다. 아마도 필자는 맥 OS X가 운영체제인 듯하다
  • 3장. MySQL의 SQL: SQL 기초부분으로 데이터베이스를 생성, 테이블 관리, 데이터 관리와 더불어 질의법, SQL 연산자를 다룬다
  • 4장. 데이터베이스 관리: 서버 시작 및 종료, 로그, 백업, 복구, 테이블 관리 및 복구등에 관하여 간략하게 다루고 있다
    제 2부: MySQL 관리 (데이터베이스 관리자가 대상)
  • 5장. 퍼포먼스 튜닝: 실행 계획에 대한 분석이 압권이다
  • 6장. 보안: 권한 배분방법과 자원보호에 관한 자세한 논의가 볼만 하다
  • 7장. 데이터베이스 설계: 아주 간략하게 데이터베이스 설계의 기초 부분을 다룬다. 정규화는 제 3정규형까지 다루고 있고, 논리적인 데이터 모델링 방법론과, 물리적인 데이터베이스 설계법을 언급한다
    제 3부: MySQL 프로그래밍 (데이터베이스 설계자와 프로그래머가 대상)
  • 8장. 데이터베이스 애플리케이션: 웹 지향적 데이터베이스 애플리케이션에서 공통적인 아키텍처, 복잡한 프로그래밍 모델을 관계형 데이터베이스로 모델링하는 방법 등을 다룬다
  • 9장. 펄: 펄 DBI를 소개하고 DBI와 CGI, 관리가 용이한 펄 프로그램을 위한 일반 모델을 제시한다
  • 10장. 파이썬: DB-API를 소개한다. MySQL 전용 기능과 DB-API 응용방법을 설명한다
  • 11장. PHP: PHP 소개, 설치, DBMS 액세스, 사용자 데이터 보안, 세션 관리, PHP를 이용한 데이터 저장, HTML
    환경 사용법 등등
  • 12장. C API: API 개요와 C API 실전 그리고 고급 주제를 다룬다
  • 13장. 자바: JDBC API, 간단한 데이터베이스 액세스, 동적 데이터베이스 액세스, 방명록 서블릿 등
  • 14장. MySQL 확장: 사용자 정의 함수, 대체 문자 세트
    제 4부: MySQL 레퍼런스
  • 15장. MySQL에서의 SQL 문법
  • 16장. MySQL 데이터 유형
  • 17장. 연산자와 함수
  • 18장. MySQL PHP API 레퍼런스
  • 19장. C 레퍼런스
  • 20장. 파이썬 DB-API : MySQLdb 모듈 레퍼런스
초보에서 전문가까지?

책의 구성과 같이 초보자, 관리자, 프로그래머까지 모두가 독자층으로 어떻게 가능한가? 저자는 MySQL을 "관계형 DBMS의 세계로 올라가는 첫 번째 계단"으로 바라본다. 따라서 독자층을 꼭찝어 지적하자면 가볍게 관계형 데이터베이스로 SQL2를 다루어 보고자 하는 초보자가 될 것이다. 이런 목적으로는 MySQL이 딱 제격이다. 그렇게 시작해서 천천히 DBA로서 그리고 프로그래머로서 성장하는데 필요한 자양분을 제공하려고 한 것이리라 생각한다. 성능 조율에 영향을 미치는 궁극적 요인으로 설계의 중요성을 역설하면서 저자는 다음과 같이 말한다.
여기에서는 MySQL 데이터베이스를 개발할 때 접하게 될 만한 유형과 복잡도를 기준으로 예제를 만들었으며, 소규모 데이터베이스 설계에서는 그다지 중요하지 않은 설계 기법과 개념은 생략했다.
제 7장 데이터베이스 설계
같은 주제임에도 불구하고 각 언어별로 제시되는 프로그래밍 부분 곳곳에서 상이한 차이점들을 찾아보면 흥미롭다. 물론 초보자가 장단점을 비교하는 것은 다소 무리가 있어 보인다. 제 3부 MySQL 프로그래밍에서는 각 언어에 대한 MySQL API만 다룬 것이 아니라 각 언어별로 실전 코드가 많이 준비되어 있다. API가 MySQL에 종속적이지 않음에도 불구하고 각 언어별로 각기 다른 레퍼런스와 각각 다른 설명이 붙어 있다는 점을 주목할 필요가 있다. 아마도 각 언어에 대하여 저자가 따로 있는 것 같다. 같은 주제를 서로 다른 각도로 각 언어의 저자가 바라볼 수 있다는 사실이 자못 흥미롭다. 특히 파이썬의 DB-API를 다룬 장은 다른 API에 비해 눈에 띄게 분량이 적었다. JDBC 역시 MySQL에 종속적이지 않는 범용 API인데도 상당한 분량인데 말이다. JDBC 드라이버의 유형으로 네 가지를 언급하고 있는데 파이썬의 DB-API는 어느 유형의 드라이버를 사용하고 있는지 궁금했다. 초보자를 대상으로 한다고 했지만 프로그래밍에 관한 장은 중급자들은 되어야 이해가 가능할 것 같다.

MySQL, 귀여운 나의 SQL!

날아갈 듯한 속도는 트랜잭션(정확히는 롤백기능)과 같은 고급 기능을 희생한 덕분이었다. 그러나 시대의 흐름을 거스를 수는 없는 것 같다. MySQL 4.01에서부터 트랜잭션(베타버전으로는 MySQL-Max 3.23에서 지원됨)과 SSL 암호화가 지원되며, 4.1에서는 저장 프로시저도 지원할 예정이라고 한다. SQL3에서 지원되는 객체 지향 데이터 유형도 지원할 예정이라고 한다. 이 책에서는 3장과 8장 데이터베이스 애플리케이션에서 트랜잭션을 설명하고 있다. InnoDB나 버클리DB 테이블을 지원하도록 컴파일하면 트랜잭션을 지원받을 수 있다고 하지만 실제로 컴파일 하는 방법에 대한 자세한 설명이 없어서 소스로 컴파일하는 사람들에게는 조금 미진해 보인다. 데이터베이스 관리도구로 phpMyAdmin이나 WinMySQLadmin이 언급되지 않은 것도 조금 아쉽다.

번역티 하나 없이 깨끗하고 매끄럽다. 한글 고유어들을 많이 쓴 것도 읽는데 편안한 느낌을 준다. 오타나 탈자는 손에 꼽을 정도밖에 없을 정도로 교정도 잘 되었다. 이 책의 역자 서환수님은 초판뿐만 아니라, 이외에도 여러 번역본이 있는 베테랑이다. "초박형 클라이언트"라는 번역은 일품이다. 바로 이 때문에 야윈 클라이언트와 뚱뚱한 클라이언트라는 번역이 생생하게 살아난 느낌이다. 책의 후반부에서 C레퍼런스와 PHP 레퍼런스를 비교해 보면 재미있다. (파이썬은 과연 제대로 데이터베이스 API 기능을 할지 의심스러울 정도로 너무나 짧은 분량이다.) 이해가 안 갈 때마다 한 줄 한 줄 쳐 넣으면 바로바로 응답하는 MySQL을 보면 입에서 "귀여운 나의 MySQL"이라는 감탄이 절로 나온다. 아! 정말 기특하다. 그래서 이름이 MySQL인가 보다.
TAG :
댓글 입력
자료실

최근 본 상품0