MySql DB서버를 두고 이걸 관리하는 서버프로그램을 작성할 때 유용하게 보았던 책입니다.
필요한 부분이었던 쿼리문과 C Api를 이용하여 서버프로그램 작성할 때 많은 도움을 받았습니다.
책 내용에는 완전한 하나의 MySql 서버를 구축하여 웹과 연동시키는 것에 대해서 설명이 되어
있지만 꼭 거기에 국한되지 않습니다.
서버 개발자나 웹프로그래머들에게는 참고할 사항이 정말 많다고 생각합니다...
MySQL이란 DB를 쓰는 사람들은
무엇이 장점으로 쓰는 것일까?
단지 무료로 쓸 수 있기 때문에?
그건 아니다. MySQL은 절대 공짜가 아니다.
그럼 왜 MySQL을 사용하는가?
첫번째는 MySQL은 오라클 등에 비교하면 정말 가볍다!!
오라클로 웹 게시판을 돌리는건 도끼로 바늘깎기다.
두번재는 MySQL은 쉽다.
오라클 사용법 배울 시간이면 MySQL은 마스터한다;
세번째는 MySQL은 업데이트가 정말 잘된다!!
그래서 조금만 오류가 있어도 금방 고치고
사용자에게 불편한 것들은 전부 바뀌어 간다.
이 책은 최소한 웹에서 DB를 사용해 보고 싶은 사람이라면
꽤 좋은 자료들을 전해준다.
물론 버젼이 최신 버젼도 아니고
JSP 등의 정보도 없긴 하지만
이 책으로 웹에서 DB를 사용하고 잘 쓰게 된다면
이후에 다른 것들도 쉽게 배우고 쓸 수 있을 것이다.
MySQL은 국내에서는 APM(Apache, PHP, MySQL)로, 외국에서는 LAMP(Linux, Apache, MySQL, PHP)로 불리는 웹 환경에서 중요한 위치를 차지하고 있는 상당히 쓸만한(빠르고 오픈 소스이며 무료로 제공됨) DBMS 이다. 개인 홈페이지, 소규모의 프로젝트 또는 회사 홈페이지 등을 구축하는데 오라클이나 MSSQL 같은 고가의 DBMS는 적절치 않다. 그래서 많이 사용되는 것이 MySQL, mSQL, PostgreSQL 등이 있으며, mSQL은 최근들어 국내에서는 별로 사용되고 있지 않는 것 같다. 이 책은 가장 대중적인 MySQL에 대한 책으로서, 이전버전에서 다루었던 mSQL 은 제외하고 MySQL만을 다루고 있다.
우선 1부와 2부에서는 MySQL의 설치와 명령어, 로그/백업/복구 등 MySQL 시스템 자체에 대한 설명을 많이 포함하고 있다. MySQL은 그 기능이 대형 DBMS에 비해서 그렇게 복잡하지 않기 때문에 1부와 2부에 있는 내용이면 MySQL을 관리하고 필요한 데이터를 데이터베이스에서 추출해 내는데 별 문제가 없을 것이라 생각된다. 다만 MySQL 자체에 대한 서적이기 때문에 2부에서 소개하고 있는 데이터베이스의 설계와 같은 부분은 그다지 내용의 깊이가 없었다. 또한 MySQL의 트랜잭션 지원버전인 MySQL-MAX에 대한 부분은 간단하게 언급만 하고 넘어가고 있는 부분이 아쉬웠다.
3부에서는 MySQL 프로그래밍이라는 이름으로 되어 있는데, 내용은 PHP, Python, Perl, JAVA 등으로 MySQL 을 사용하는 방법에 대한 것들이다. 전체적으로는 각 언어의 MySQL API를 이용해서 DB에 접속하는 법, 쿼리하는 법 등을 다루고 있다. 아쉬운 점이라고 한다면 마지막을 차지하고 있는 ‘방명록 서블릿’ 부분이 별 내용설명이나 코드 없이 아주 간단한 설명과 URL 하나뿐이라는 점이다. 약간 무성의하는 느낌이 들기까지 하는 부분인데, 차라리 빼버렸으면 좋았을지도 모르겠다. 3부의 마지막에는 MySQL에서 제공하지 않는 stored procedure 대신에 MySQL을 확장하는 방법등에 대해서 소개를 하고 있다.
4부는 레퍼런스가 실려있으며 각종 데이터 타입, 연산자, 함수, 그리고 PHP/Python/C의 MySQL API에 대해서 다루고 있다. JAVA 의 경우는 JDBC의 방대한 사이즈 때문인지 지면할애를 하지 않고 있어서 약간은 아쉬웠다.
원서 자체가 그리 어렵거나 한 내용이 아니었고 번역상태도 전체적으로 무난하게 잘 되어있다. 다만 한 두 군데 정도의 번역이 약간 부적절한 것 같았는데, 예를 들어 본문의 3부의 내용중 thin client와 fat client를 설명하는 부분이다. 이 두 용어에 대해 ‘뚱뚱한 클라이언트’와 ‘야윈 클라이언트’라는 표현을 썼는데, 그냥 원래의 용어 그대로 씬 클라이언트와 팻 클라이언트라고 하는 것이 더 나았을 것 같다.
MySQL을 개인 홈페이지 운영에 사용하고 있거나 혹은 프로젝트나 회사 인트라넷 등에 사용하고 있는 사용자라면 가까운 곳에 두고 항상 참고할 수 있는 서적인 것 같다.
“MySQL에서 rollback이 되지 않는 다는 사실을 알고 기절하는 줄 알았다.”
“트랜젝션도 지원되지 않는 MySQL을 오라클이나 인포믹스, MS-SQL 등과 비교한다기 보다는 MS-Access 정도와 비교해야 하지 않겠느냐.”
오라클에 익숙한 사람들이 MySQL에 대해 위와 같이 말하는 경우를 많이 들어보았을 것이다. 물론 MySQL은 많이 사용되는 기본적인 기능을 보다 빠르게 실행하기 위해 상용 DBMS가 지원하고 있는 여러 기능들을 지원하지 않는 다는 것을 알고 있지만, 가끔 그 일부 기능들에 대해 아쉬움을 갖게 되는 것도 당연한 이치라고 할 수 있겠다.
하지만 웹 서비스를 구축하는데 있어서 MySQL은 가장 가볍고, 사용하기 편리하며, 좋은 성능(특히 가격 대비 성능)을 낸다는 것에 다른 이견이 있는 사람이 없을 것이다. (물론 트랜젝션도 지원이 된다. ^^;;) 한편, 이 책을 선택한 이유는 내가 너무 MySQL을 편식하고 있다는 생각을 하게 되었기 때문이다. MySQL을 처음 접하게 된 것이 A.P.M을 통해서였기 때문인지 MySQL을 PHP프로그래밍을 위한 DBMS로만 이용해 왔고, 이 이상도 그 이하도 아니라고 생각하게 된 것 같다.
MySQL은 대부분 소개되기를 독자적인 DBMS라기 보다는 A.P.M, 즉 리눅스 환경에서 아파치, PHP와 함께 웹사이트를 구축하는데 있어서 빠질 수 없는 조합으로 알려지게 된 것 같다. 실제로 많은 웹 프로그래머들이 MySQL을 따로 배우거나 별도의 책을 구해 공부하기 보다는 PHP책에 함께 소개된 내용으로 공부하게 된다. 그에 반해 이 책은 MySQL을 A.P.M환경의 DBMS 파트로서가 아니라, 그 자체를 소개하고 있다.
책은 크게 4부로 나누어져 있다.
1부에서는 MySQL의 기본적인 소개와 설치, SQL 등의 개념 등으로 구성되어 있고, 2부는 MySQL 관리 부분으로써 퍼포먼스 튜닝과 보안, 데이터베이스 설계에 대해 언급하고 있다. 3부는 이 책을 선택하게 된 주된 이유라 할 수 있는 MySQL 프로그래밍에 관한 부분으로 구성되어 있는데, 펄과 파이썬, PHP, C API, 자바 등의 프로그래밍에 있어서 MySQL을 활용하는 방법에 대해 설명되어 있다. 4부는 레퍼런스에 해당하는 부분으로 SQL의 기본 문법과 MySQL 데이터 유형, 연산자와 함수, MySQL PHP API 레퍼런스, C 레퍼런스, 파이썬 DB-API에 관한 부분으로 구성되어 있다.
MySQL을 처음 접하는 사용자라면 1부부터 차근차근 읽어 나가는 것이 도움이 되겠지만, 어느 정도 MySQL을 사용해 본 사람이라면, 3부부터 읽어 나가도 무방하다는 생각이다. 그런데 한편으로 책의 타깃이 참 애매모호하다. MySQL을 어느 정도 알고 있는 사람들한테는 책의 절반에 해당하는 1.2장이 별로 의미가 없을 것이며, 또 여러 가지 애플리케이션 제작 환경에 대해 궁금해 하는 독자들을 상대하기엔 부제에 해당하는 :자바, PHP, 펄, C, 파이썬 부분에 해당하는 3,4장이 좀 빈약하다는 느낌을 지울 수가 없었다. 결국 나는 오라클이나 기타 여느 DBMS와 C, 자바, 파이썬, 펄 등에 대해 어느 정도 기본이 있는 사람이 MySQL을 처음 접하고자 할 때, MySQL의 가능성을 살펴보는데 필요한 책이라는 결론을 내렸다.
국내에는 MySQL을 주제로 출판된 책이 많지 않다. 그도 그럴 것이, MySQL만 가지고 어떤 의미를 가지기 보다는, PHP와 함께 웹에서, Java나 파이썬, C와 함께 애플리케이션을 위한 DB로써 활용되기 때문이다. 그리고 그와 관련된 내용은 MySQL을 통해 배우기 보다는 해당 프로그래밍 언어를 통해 MySQL로 접근하는 형태로 안내되고 있기 때문이 아닐까.
약간은 수박 겉핥기 식의 Wrox의 Beginning시리즈는 보는듯한 아쉬움이 있으나, 나름대로 MySQL에 대해 정리해 볼 수 있는 기회가 된 것 같다.
내가 "MySQL 시스템 관리와 프로그래밍 : 자바, PHP, 펄, C, 파이썬"을 빌라 관리실 아저씨로부터 받았을 때, 맨 처음 떠오른 감정은 "자괴감"이였다. 내가 이런 책을 사게 되다니. 난 결코 MySQL 관련된 책을 사지 않을 거라고 생각했기 때문이다. 나는 전산 전공자가 아니라 회사에 들어가면서 전산을 시작하게 되었다. 그리고 대규모의 상업용 애플리케이션을 개발하면서 MySQL를 사용하지 않았다. 직장에서 접하는 관계형 데이터베이스는 오라클이 전부이고, 교육받은 것으로 범위를 넓혀도 MS사의 SQL2000 뿐이다. 내가 MySQL를 처음 접하게 된 것은 홈페이지 호스팅을 받기 시작하면서이다. 오라클에 익숙한 나에게 MySQL은 데이터베이스가 아니라 무슨 애들 장난감 같다는 느낌이 강했다. 그렇게 감탄하던 대부분의 기능들은 MySQL에서는 지원되지 않았다. 몇 가지 되지 않는 기능을 굳이 책을 살 필요가 있을까? 또한 PHP 책을 샀는데, 기본적인 설명은 나와 있었고, 그것으로 충분했다. 그런데 왜 MySQL 관련 책을 사게 되었을까?
뭐 거창한 이유가 있었던 것은 아니다. MySQL에 대해 체계적으로 알아야 봐야 되겠다는 생각이 들어서였다. 그리고 분명 체계적으로 알 필요가 있다. 이 책은 여러 프로그래밍 언어와 MySQL이 어떻게 사용되어야 하는지 보여주고 있다. 이 부분은 약간 자세하긴 하지만, 이 책의 일부일 뿐더러, MySQL의 일부이다. 내가 이전에는 결코 생각하지 못했던 설정, 백업, 로그, 복구, 퍼포먼스 튜닝, 보안 등 데이터베이스의 대부분의 기능을 제공하고 있다. 그런 면에서 이 책은 MySQL에 대한 시각을 넓혀준다. 그러면서도 직관적으로 알 수 있는 다양한 예제를 통하여 마치 요리책처럼 사용될 수 있다. 나도 이 책의 전부를 보지 않았다. 1부 소개는 대충, 2부 MySQL 관리는 꼼꼼히, 3부 MySQL 프로그래밍은 콕 집어서, 4부는 휙휙.
오라클에 비하면 MySQL은 분명 왜소해 보인다. 그렇다고 MySQL이 나쁘다는 것은 아니다. 처음 손쉽게 관계형 데이터베이스를 사용하고자 하는 사람, 프로그래밍 언어를 배우기 위해 데이터베이스가 필요한 사람, 자신만의 크지 않은 사이트를 구축하고자 하는 사람, 또 나처럼 시스템의 사양이 좋지 않은 사람에게 MySQL은 최고의 솔루션을 제공할 것이며, 이 책은 최고의 설명을 제공할 것이다. 결코 MySQL를 얕보지 마라.