#title 머리말 이 책은 운영계 정보 시스템의 초급 SQL Server 관리자 또는 개발자가 중/고급으로 넘어가기 위한 필수적인 기술의 습득에 목적을 두고 있다. 여기서 말하는 초급이란 T-SQL을 이용하여 저장 프로시저(stored procedure)를 개발하거나 백업/복원 등의 기초적인 관리가 가능한 수준을 말한다. 만약 여러 커뮤니티에서 질문을 하고 있다면 당신은 초급이다. 또한 내가 하고 있는 짓이 잘하고 있는지 모르겠으며, 책에서 그렇게 하고 있고 남들도 그렇게 하고 있다는 이유로 그대로 따라 하고 있다면 당신은 초급이다. 중급 이상이라면 내가 하는 행위에 대한 정당성과 이유를 말 할 수 있어야 한다. 그러기 위해서 필요한 지식 영역은 다음과 같다. * 데이터베이스 및 하드웨어에 대한 기초지식 * 데이터 모델링과 설계 * SQL(Structured Query Language) 작성 및 분석 능력 첫 번째, '데이터베이스 기초지식'은 실제 종이로 된 문서나 파일로 데이터를 관리하지 않고 데이터베이스를 이용하는 것이 왜 더 나은 방식인지를 알게 해주며, '하드웨어 기초지식'은 내가 관리하는 서버에 대한 물리적인 한계를 인식하여 상황에 맞는 적절한 솔루션을 선택 할 수 있도록 해준다. 여기서 말하는 '적절한'은 두 가지 의미를 가진다. 시스템의 자원을 최소한으로 사용하는 것과 시스템의 자원을 최대한 이끌어 내는 것이다. 상황에 따라서 최소한과 최대한의 사이 어느 지점을 선택해야 한다. (Trade-Off) 왜 그렇게 해야 하는지 알려면 역사와 이론을 알아야 한다. 이는 동기부여가 된다. 내 행동에 정당한 이유가 먼저 덧붙여진다면 실행력이 폭발적이 될 것이다. 두 번째, '데이터 모델링과 설계'는 정보시스템 전체에 막대한 영향을 끼치는 부분이므로 두 말할 필요가 없다. 잘못된 데이터 모델링과 설계로 인하여 프로젝트의 투입 자원이 몇 배, 몇 십 배 더 늘어 날 수도 있다. 애초에 모델링과 설계를 잘했으면 하루 밤샐 것을 모델링과 설계의 잘못으로 열흘 밤샐 수 있다는 소리다. 흔히, 데이터 모델링을 '상식적'이라고 말하면서 '어렵다'고 한다. 상식은 어디까지 상식인가? 어려운 것의 기준은 무엇인가? 그 기준은 여러분 자신이다. 내가 모르면 다 어려운 것이고 상식적이지 않은 것이다. 하지만 곧 익숙해 질 것이므로 미리 겁먹을 필요는 없다. 여러분은 단어나 용어를 깊게 생각해보려는 좋은 태도만 있으면 된다. 세 번째, SQL은 DBMS(DataBase Management System)와의 거의 유일한 통신 수단이기 때문에 선택의 여지가 없이 잘 해야만 한다. 미국이라는 나라에서 의사소통을 잘하려면 영어를 능숙하게 사용해야 하듯이 DBMS를 잘 다루려면 탁월한 'SQL 작성 능력'이 필요하다. SQL은 언어 자체가 선언적('무엇'만 보일 뿐 '어떻게'는 숨어 있다)이며, 어휘가 적기 때문에 능숙하게 다루려면 많은 연습이 필요하다. 또한 데이터 처리에 대한 최적화를 DBMS의 옵티마이저(최적화기, Optimizer)가 담당하기 때문에 내가 DBMS로 던지 SQL이 어떻게 처리 되기를 원하고 어떻게 처리 되었는지, 또한 원하는 대로 처리되지 않았으면 어떻게 고쳐야 하는지 알기 위해서는 'SQL 분석능력'이 필요하다. DBMS 제품마다 조금은 다르지만 기본적으로는 SQL은 표준이 있다. 그러므로 공부만 잘 해놓으면 여러 DBMS 제품에 대한 학습이 쉬워진다. 만약 여러분들이 위 3가지 지식 영역에 대한 학습을 진행하면 중급 이상이라고 할 수 있느냐고 묻는다면 필자는 '아직 조금 모자라다' 라고 대답할 것이다. 이 책에서 다루지는 않지만 커뮤니케이션(문서, 프리젠테이션 등) 스킬도 중요하다. 데이터베이스는 '공용'이기 때문에 필연적으로 많은 사람이 사용하게 된다. 전사적인 관점을 유지하면서 서로의 득과 실을 조정하면서 적절한 타협점을 찾아야 할 일이 많기 때문에 사람들과의 상호작용에 많은 자원이 투입된다. 또한 내재화(institutionaliztion) 즉, 몸에 베어 있는 익숙함이 필요하다. 서버 환경에 대한 정보가 주어졌을 때, SQL 어떻게 수행되는지 옵티마이저에 대한 동작방식이 예측이 가능해야 하며, 처리되는 과정이 머리 속에 그려져야 한다. 여러 실전 경험을 통하여 종합적인 판단을 하여, 환경에 가장 적합한 솔루션을 도출하는 연습이 되어 있어야 한다. 정보 시스템은 크게 운영계와 정보계 2가지로 분류한다. 또는 OLTP(OnLine Transation Processing)와 OLAP(OnLine Analytical Processing)로 분류하기도 한다. 운영계는 일상적인 업무를 처리하거나 대 고객 서비스와 같은 업무를 위한 시스템이며, 정보계는 전술과 전략부분을 지원하는 역할을 하는 정보시스템이다. 운영계와 정보계는 모델링과 설계방식, 처리방식, 이용패턴 등이 많이 다르다. 그러므로 필요에 따라서는 정보계에 대한 내용도 다루겠지만, 처음에 밝혔듯이 운영계 위주의 내용을 다루는 책이 될 것이다. 먼저 1부에서는 기본적으로 알아야 하는 부분에 대해서 살펴볼 것이다. 2부의 응용에 관련된 부분에서는 한 가지 주제에 대해서 다음과 같은 3가지 질문에 대한 답으로 구성될 것이다. * 왜 알아야 하는가? * 선수지식은? * 어떤 경우에 실무 활용되는가? 자, 이제 하나씩 파고들어가 보자. ---- 이 책 제목이 무언가요? -- 손님 2011-06-02 14:49:41 ---- 이 써볼까 하는 책입니다. ㅎ -- 이재학 2011-06-02 15:08:32 ---- 써야 책인데 말이죠... 힘이들어서.. -- 이재학 2011-06-02 15:16:11 ---- 아하... 기대하겠습니다. ^^ -- 손님 2011-06-02 17:21:28 ---- 책 제목은 뭘로 하실건데요?? -- 김현섭 2011-08-01 16:07:05 ---- ㅎ 책 제목이요? 미정입니다. 사실.. 머리말만 며칠을 쓰다가.. 힘들어서 그냥 놔두고 있다는.. -- 이재학 2011-08-01 17:37:09 ---- DB뿐다 어떤가요? DataBase Break ㅋ 농담이지만 먼가 통하긴 하진 않나요?ㅋ -- 김현섭 2011-08-02 12:57:20