현재 밥벌어먹고 살고 있는 것 중 하나로 MySQL 입니다.
잘 하느냐~
그저 기본만 사용 하고 있습니다.
혼자서 기획하고 개발하고 다 하니 딱히...
이번 기회에 어떤 기능들이 있는지 어떻게 활용하면 좋을지 알아 보기 위해 <러닝 MySQL>을 신청 하였습니다.
저자분들이 이력이~
이정도면 믿고 볼 수 있는...
새로운 데이터베이스가 많이 나오긴 했지만 기존의 데이터베이스가 쉽게 사라지지 않을거라고 하네요.
저의 생각은 기존의 데이터베이스가 좋아서라기 보다는 그것을 바꾸는게 힘드니까...
그리고 이미 그렇게 개발해온 사람들이 있으니...
새로운 시스템을 만들때는 새로운 데이터베이스를 이용하겠죠?
하지만, 그만큼 기존의 데이터베이스들도 발전을 하고 있습니다.
대상독자는...
지금 사용하시는 분들과 처음 하시는 분? 결국 모두잖아~ ^^;
무엇보다 이 책에서는 설치부터, 설계, 백업, 복구, CPU성능분석, 버그까지...
많은 부분을 다루고 있습니다.
많은 부분을 다루고 있어서 부족하지 않을까 했지만 꼭 그렇지만은 않습니다.
기본서 처럼 두고두고 볼 수 있는 책이 될것 같습니다.
목차는 아래와 같습니다.
책은 그리 두껍지 않은데 600페이지가 넘습니다.
종이가 얇아진 덕분(?)이긴 한데...
약간 보기가 불편할때도 있습니다. 뒷면이 비춰서...
하지만, 아무래도 가볍고 얇은게 좋죠~
대학 교재로 사용한다면 역시나 가벼운게~ ^^;
Previous imageNext image
기본적인 설치 과정입니다.
오픈소스이면서도 배포 패키지의 경우 많은 OS에서 쉽고 빠르게 사용할 수 있도록 잘 되어 있습니다.
물론, 해당 OS를 다룰줄 아는 사람 기준이겠죠? ^^;
간단하게 플랫폼과 버전을 선택하면 내가 원하는 MySQL을 쉽게 설치 할 수 있습니다.
다행히 기본적인 OS 들에 대해서는 어떻게 설치 해야 하는지 설치 과정들이 잘 나와 있습니다.
리눅스에서의 설치~
맥에서의 설치~
윈도우에서의 설치~
MySQL을 설치 하고나면 그래도 사용을 해봐야 하니...
가장 기본적인 SQL 셀입니다.
몇몇 데이터베이스 프로그램을 설치하지 않았다면 사용해야할 부분이겠죠?
도스 혹은 리눅스 명령라인과 비슷합니다.
샌드박스...
새로운걸 알아갑니다.
저의 경우 여러 시스템을 만들면서 이런 부분에 대해서는 사용하지 않았습니다.
규모가 그리 큰게 아니기 때문에 개발 PC가 테스트 환경이고, 서버가 실제 환경이다보니 이런 부분을 필요치 않았기에 알아볼 필요도 없었지만, 이번 기회에 이런것도 있다는걸 알게 되었습니다.
업그레이드 관련 부분도 있습니다.
상당히 겁이나는 작업이기도 하죠.
업그레이드 했는데 동작 안하면 어쩌지?
설정 문제가 생기면 어쩌지?
버전에 따른 기능 여부가 달라서 동작 안하면 어쩌지?
그래서 거의 하지 않았던 부분이죠.
업그레이드를 하기 보다는 서버 교체시 업버전의 MySQL을 설치하고 오픈하기 전까지 테스트를 거쳐 오류 처리하고, 그랬던것 같네요.
데이터베이스 모델링과 설계~
시직하자마자 실패 사례부터 보여줍니다.
데이터베이스의 설계 뿐만 아니라
프로그램 기획 자체도 이와 같죠.
그렇게 각각 세부적으로 나뉘어도 결국 이 설계 과정을 따를겁니다.
저에게는 가장 힘든 요구사항 분석..
어찌 클라이언트들이 하나같이 잘 모르니, 가르쳐주면서 진행을 해야 하니...
객체가 존재하지 않거나 알 수 없는 경우가 많은가? ^^;
"이런이런 일이 일어나나요?"
"아니요~"
나중에 보면 일어난다.
"이런이런 일이 일어나지 않는다면서요~"
"거의 안일어나서..."
"하~"
이런 문제들이 많았습니다.
그래서 이제는 클라이언트들보다 더 많이 생각하고 더 많이 물어보고 더 많은 경우의 수를 생각합니다.
SQL 표준..
어느정도 표준화된 문법이라 다른 데이터베이스도 어느정도 손쉽게 적용할 수 있습니다.
헌데, 생각외로 기능적으로는 안되는 것들도 많더라구요.
저도 최근에 들어서는 약어나 짧은 표현들은 잘 사용 안하려고 하고 있습니다.
처음에 어설프게 배우다보니 업그레이드 되거나 버전업 등이 되었을때 표준을 지키지 않은것들이 오류가 발생하는 경우가 있어서...
대규모로 수정작업을... ㅠㅜ
가장 기본이 되는 SELECT~
다양한 내용을 불러올 수 있죠~ ^^;
늘 사용이 어려운 JOIN~
Inner Join, Outer Join, Left Join, Right Join ...
아~
쉽지 않네요.
뭐 물론 대부분읜 LEFT JOIN 사용이 전부긴 합니다.
SELECT 하기 위해 당연히 데이터가 있어야 겠죠?
INSERT~
등록된 내용에 대해 수정하는 UPDATE~
아~
AUTO_INCREMENT가 MySQL의 기능이였군요.~
MS-SQL 할떄 늘 불편했던...
일일이 SELECT 해서 수량이 몇개인지 확인하고 다음값을 이용했다는...
그런데 이 AUTO_INCREMENT를 만나고 나서는 신세계죠~
어~
CREATE 부분을 빼먹었나? 생성도 안했는데 구조변경이라... ^^;
만들어진 테이블의 구조를 변경하기 위한 명령입니다.
기본적인 쿼리를 벗어나서 좀 더 고급적인 쿼리로 갑니다.
함수를 사용하거나 별칭을 이용해서 동일한걸 여러개 사용하거나, 조인을 하거나...
조인에 대해 비교 설명을 해주고 있습니다.
잘 읽어보면 조인에 대해 앞으로 더 잘 활용할 수 있을 것 같네요.
사용자 변수가 있는 줄 알고 있었지만 쓸일이 없어서 홀라당 까먹었었던 기능...
음...
개발자 입장에서 Lock은 DBA가 해줬으면 하는 분야이죠.
저의 경우는 아직 대규모나 규모가 크다 하더라도 사용자가 한꺼번에 몰리거나 하나의 데이터를 여럿이 건드릴 일이 없어서 딱히 이용할 필요가 없었지만,
규모가 크다라고 한다면 꼭 확인해봐야 할 부분입니다.
(그나저나 구글워드 등의 공유 및 편집 기능은 어떻게 하는거지? 동시에 수정이 가능한데..)
추가 활용법이라기 보다는 추가 기능? 고급기능2?
데이터를 하나하나 어플리케이션 등에서 입력하는게 아닌 텍스트 파일로 대량으로 입력 할 수 있는 방법 입니다.
저의 경우는 CSV 파일 보다는 그냥 쿼리문 작성해서 넣는 편이긴 합니다.
특히나 특수문자들 때문에...
EXPLAIN~
분석하는데 있어서는 상황에 따라 여러 형태를 취할 수 있음으로 자세한 얘기는 안한답니다.
사실, 이 부분만으로도 책 한권 이상이 나올 수 있으니...
그나저나 저도 한번 써먹어봐야겠습니다.
가끔 너무 오래 걸리는 녀석들이 있기도 해서...(물론, 데이터가 많으니.. ^^;)
이 역시 다른 RDBMS와 MySQL이 구별되는 특징이라고 하네요.
다양한 스토리지 엔진을 지원...
그나저나 이게 뭐지?
InnoDB를 사용한건 나도 알지... 그럼 나머지는?
음.. 그래서 책을 읽어야 하나 봅니다.
참..
이 분야도 잘 사용해야 하는데, 혼자서 관리하다보니 썩~ 안써지는 부분이고
처음 배울때도 이 부분에 대해서는 딱히 배우지도 않았고,
무엇보다 처음 배울때 리눅스에서 배우다보니 사용자나 권한 이쪽에 대해 많이 힘들었죠.
아하~
그래서 사용자 및 권한에 대한 설명부터 나옵니다.
사실 윈도우 환경에서 공유 부분을 제외하고는 사용자나 권한 등에 대해 들어본적도 없는게 대부분이죠.
그러기에 더더욱 이해가 안갔던 부분이고...
찬찬히 읽어봅니다.
데이터베이스 답게 권한을 부여 하는 테이블이 별도로 있습니다.
옵션파일~
처음 들어봅니다.
설정파일 정도인것 같네요~
간혹 새로운 버전 사용하면서 기존에 잘되던 것들이 안될떄 한번은 열어봐야 하는 부분입니다.
백업 및 복구
항상 어떤 일에든 대비해야 합니다.
사건, 사고~!!!
지금 저의 경우는 사용하는 데이터베이스의 전체 용량이 그다지 크지 않기에 전체 백업을 하고는 있습니다.
물론, 아직까지 복구를 해본적은 없습니다.
(아~ 초창기 한번 있구나...)
이전에 프로그램 만드신 분이 너무 이상하게 만들어서 데이터에 고유번호가 없는 겁니다.
한번 입력하고 삭제 하려면 레코드를 입력한 수량만큼 삭제를 해야 하는 일이 발생하죠.
그러다 잘못해서 다 날려버린적이... 그떄 정말 가슴이 철렁~
그때 한번 복구 한적이 있기는 합니다.
그 이후로 복구한적이 없지만, 늘 백업을 하고 있음으로 마음의 안정감이 있습니다.
mysqldump 를 통해 데이터베이스를 원하는 형태로 백업할 수 있습니다.
콜드 백업 및 시스템 스냅샷~
그때 그때 필요에 따라서 원하는 형태로 백업을 하면 됩니다.
무조건 이걸로만~ 이럴 필요는 없다는 것이죠.
각각의 백업 형태에 따라 특징들이 있으니 잘 읽어보세요.
강력한 백업 전략~!!
백업이 매우 중요 합니다.
하지만, 데이터가 많거나 한다면 이 백업 작업도 부하가 많이 걸릴 수 있으니 적절히 잘 완벽한 백업에 대한 전략을 세우고 진행 해야 합니다.
서버에 대한 구성과 튜닝까지 다루게 됩니다.
상당히 고급 레벨까지 나오네요.
모니터링을 통해 향후 MySQL 의 튜닝이나 서버 튜닝, 등에 대해 미리 알아 볼 수 있습니다.
저의 경우는 아무래도 쉽지 않은 부분이긴 합니다.
한단계 더 발전하기 위해서는 모니터링을 통해 분석하고 수정해야 하는데 말이죠~
쉽기도 하고 어렵기도 하다라...
그냥 어렵던데~
모니터링의 부분도 소개 하고 있으니 잘 확인해서 적용해보도록 해야겠네요.
mysqladmin에서도 가능하다니..
물론, 최신 버전이겠죠?
전 아직 예전 버전과 최신 버전 둘다 사용하고 있으니 한번 확인해봐야겠습니다.
클라우드에서도 MySQL을 사용할 수 있고 또 어떻게 구성하는지 안내하고 있습니다.
점점 더 규모가 큰것에 적용 가능한것들이 나옵니다.
MySQL 로드밸런싱~
저도 아직까지 데이터서버, 데이터베이스서버 만 분리 해봤지 데이터 서버 조차 로드밸런싱 해본적이 없는데...
데이터베이스 조차 로드밸런싱을 해야 하는 규모라... ^^;
그래도 어떤것인지는 알고 있어야 나중에라도 도움이 되겠죠?
아~
적절한 종료 명령 없이...
음... 내가 늘 중료를 했던가?
안했던것 같은데... 앞으로 종료도 꼬박꼬박(이게 정석이죠... 어디서 대충 배워와서~ ^^;) 종료도 해줘야 겠군요.
그나저나 우주 방사선으로 인해 충돌이 날 수 있다?
뭔 얘기지? 들어가봐야겠네요~ ^^;
MySQL ...
오라클이나 MS-SQL 만큼이나 성능 좋고 유명하고 많이 사용하지만 무료라는...
저 역시 향후 앞으로도 계속 사용할 것 같기는 합니다.
이번 <러닝 MySQL:한빛미디어>의 경우 책꽂이 한쪽에서 늘 저의 손을 기다리는 책이 될 것 같네요.
아니 제가 필요로 하는 책이 될 것 같네요.
MySQL의 기본적인 내용을 다루고 있기에 기본을 파악하고 자세한 내용을 찾아 볼 수 있게 해주는 것 같습니다.
어설프게 배웠던 저에게 많은 다양한 MySQL의 기능을 알려주고 그것을 활용해볼 수 있는 기회를 준것 같습니다.
책의 모든 내용을 다 볼 필요는 없을 것 같지만,
소장해두면 내가 필요로 할때 필요한 내용을 바로 얻을 수 있을 것 같네요.
"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."