#title 데이터베이스 전문가가 되기 위해 무엇을 준비해야 하는가? -이상원 [[TableOfContents]] 필자의 지식과 능력의 한계와 짧은 지면 관계로 본 원고에서 “DB 전문가가 되기 위해 무엇을 준비해야 하는가?”라는 질문에 충분한 답을 제공하지 못한다. 다만 전산학의 종합 예술가라는 자부심을 갖고 데이터를 깊이 있게 이해하고, DB 핵심 기술에 대한 탄탄한 이해를 바탕으로 특정 DBMS의 아키텍처를 이해하고 다양한 기술들을 활용해서 주어진 문제를 최적화하고 또 최적화한다는 자세로 자신의 내공을 쌓아가면 언젠가는 전문가의 길에 도달할 것이라 믿는다. ‘DB 전문가가 되기 위해서 무엇을(what), 어떻게(how) 준비해야 하는가’라는 질문에 대답하기 전에, 향후 10년 사이에 여전히 DB 전문가가 필요한 것인지, 개인의 미래 직업으로서 왜(why) DB 분야가 매력적인지에 대한 대답이 선결되어야 한다. 한 기술 분야에 있어서 전문가가 필요하다는 것은 그 분야의 기술이 고도로 발달하고 세분화되어 있어서 전문가와 비전문가에게 똑같은 일을 시켰을 때 그 차이(성능, 안전성 또는 생산성 등의 측면에서)가 현격히 나기 때문일 것이다. ==== 여전히 DB 전문가는 필요한가? ==== 그럼 30년 이상 지속되어온 DB 분야에서 전문가와 비전문가의 차이가 여전히 존재하는 것일까? 필자의 생각으로는 ‘그렇다’이다. 심지어는 전문가와 비전문가의 격차가 앞으로 더 커질 것이라고 본다. 지금까지 DB 애플리케이션은 상대적으로 적은 양의 데이터, 단순한 질의 패턴, DBMS에서 제공하는 기능의 단순성 등으로 인해 전문가와 비전문가가 구사하는 방법의 차이점이 그리 크지 않았을 수도 있다. 하지만 최근의 DB 애플리케이션 분야는 대용량의 데이터, 복잡한 질의, DBMS 기능의 획기적인 발전 등으로 인해 애플리케이션 개발부터 성능 관리, DB 관리 등의 전 분야에 걸쳐서 데이터를 잘 이해하고 DBMS의 신기능을 100% 활용할 수 있는 사람과 그렇지 못한 사람의 차이는 점점 더 커질 수밖에 없다. 이와 같은 기술적인 측면 이외에 DB 전문가가 필요하다고 판단되는 중요한 이유가 있다. 기업의 IT화는 궁극적으로 데이터의 생산, 수집, 가공, 그리고 이를 통한 정보의 생성 및 유통으로 인한 기업 생산성, 수익성 등의 극대화에 있다. 따라서 기업 IT화의 시작과 끝은 결국은 DB이다. 그 외의 모든 기술들은 부수적인 기술들이다. 따라서 앞으로는 기업이나 조직의 모든 데이터를 꿰뚫고 관장할 수 있는 사람이 기업의 비전, 전략, 영업/재무/마케팅 등의 모든 활동을 가능하게 하는 핵심 인재가 될 날이 곧 도래한다. ==== 직업으로 DB 전문가는 왜 매력적인가? ==== 그럼 이제 개인의 차원으로 눈을 돌려 개인 직업으로 DB 전문가는 왜 매력적인가 살펴보자. 이 질문에 대해서는 사람마다 판단이 다를 수 있기 때문에 필자 개인의 의견으로 답을 대신하고자 한다. 우선 재미가 있는 분야이다. 어떤 새로운 방법을 통해서 문제를 해결할 때(예를 들어 SQL 튜닝으로 엄청나게 속도가 빨라질 수 있다) 충분한 만족감을 느낄 수 있다. 둘째로, DB 전문가는 주어진 문제에 대해 trade-off를 통해 궁극적으로 최적화된 답을 구하는 사람인데, 이는 전산학 분야에 대한 폭넓을 이해를 필요로 하는 종합 예술 분야이다. 셋째, 상위 20%의 전문가에만 포함될 수 있으면 경제적인 보상도 괜찮은 분야이다. 마지막으로 DB 전문가로서의 높은 진입장벽만 통과하면 그 다음부터 새로운 기술을 follow-up하는 것 자체가 힘들지 않다. 적어도 RDBMS의 기술은 새로운 DBMS 벤더가 나타나거나 새로운 기술 기반의 DBMS가 나타날 염려가 가장 적은 분야라고 확신한다. ==== 미래의 DB 전문가는 무엇을 준비해야 하는가? ==== 자 그럼 이제 미래의 DB 전문가를 꿈꾸는 사람들은 무엇을 충실히 준비해야 하는가? 이 대답을 하기 위해서는 구체적으로 ‘어떤 DB 전문가가 되기 위해서는 어떤 내용을 준비해야 하는가’라고 답해야 한다. 그러나 DB 전문가의 길은 여러 종류가 있다. 데이터 모델러, 특정 프로그램 언어 환경에서 DB 애플리케이션 개발자, SQL 튜닝 전문가, DB 성능 전문가, DB 백업을 포함해 다양한 관리를 담당하는 관리자, 데이터에 기반한 CRM 전문가, DBMS를 직접 제작하는 엔지니어 등등, 이 칼럼에서 이들 세부 전문기술별로 무엇을 준비해야 하는가를 답하기는 힘들다. 다만 어떤 세부 전문가를 지향하더라도 DB 전문가를 꿈꾸는 사람은 진부하지만 원리 중심으로 준비를 해야 한다는 것이다. 그럼 DBMS의 원리는 무엇인가? 많은 대답이 있을 수 있지만 필자에게 DB의 3대 핵심 기술을 꼽으라면 주저 없이 다음의 세 가지를 꼽는다. 우선 관계형 데이터 모델과 SQL 언어이다. 특정 DBMS는 특정 데이터 모델을 기반으로 하게 되는데, 현재의 모든 상용 RDBMS들은 E.F. Codd 박사가 제안한 관계형 데이터 모델(참고자료 ①)을 기반으로 하고, 그 이론적 바탕 위에 만들어진 SQL(Structured Query Language)이라는 언어를 인터페이스로 사용하고 있다. 두 번째의 핵심 기술은 SQL 언어 처리를 위해 지금까지 개발된 질의 처리 방식과 질의 최적화 기술이다. 마지막으로 트랜잭션 처리 기술, 동시성 제어와 회복 기법을 들 수 있다. 데이터베이스는 다수의 사용자가 동시에 공용의 데이터를 접근하기 때문에 동시 접근 제어 메커니즘을 반드시 포함해야 하고(참고자료 ③), 트랜잭션의 처리 도중에 컴퓨터가 다운되는 경우에 미션 크리티컬한 데이터의 손실을 막아야 한다. 이 기술들은 거의 예외 없이 모든 상용 RDBMS에 비슷한 방식으로 구현되어 제공되고 있다. 참고자료 ①,②,③은 각각의 기술들을 가장 처음으로 소개한 학술적인 논문들이다. 그리고 참고자료 ④,⑤,⑥은 대표적인 DB 분야의 입문서이다. ==== 새로운 DBMS 기술의 경향 ==== 앞에서 제시한 3대 핵심 기술을 어느 정도 이해하고 특정 DBMS에서 이들 기술을 어떻게 제공하는지 이해한 후에는 다음과 같은 DBMS 기술의 동향에도 관심을 가질 필요가 있다. 거대해지는 SQL. DBMS 벤더별로 새로운 버전을 발표할 때마다 끊임없이 SQL 기능을 확장하고 있다. 이는 다시 말해서 지금은 별도의 소프트웨어 툴로서 존재하지만, SQL 언어가 거대한 블랙홀처럼 시장성이 있다고 판단되면 언제든지 해당 기능을 자사의 SQL로 흡수해서 해당 소프트웨어 툴을 별도의 시장으로 남겨두지 않는다는 점이다. 일례로 OLAP 툴과 관련한 기능이다. 스스로 튜닝하는 DBMS. 가장 최근의 DBMS 기술의 화두 중의 하나는 스스로 튜닝(self-tuning) 또는 스스로 관리하는(self-managing) 기술이다. 학습하는 옵티마이저, 자동적인 메모리 자원 관리, 자동적인 스토지리 관리 등 이전에는 전문가의 손을 필요로 하던 부분을 DBMS가 지능적으로 알아서 조절해나가는 기능을 추가하고 있다는 점이다. DB 전문가는 개별 DBMS에 정통한 전문가이기 이전에 주어진 SQL문의 처리 과정을 논리적으로 그리고 알고리즘적으로 충실히 분석하고 판단할 수 있는 사람을 일컫는다. 시중에는 특정 DBMS 기반의 DB 전문서적들이 흔하고, 많은 사람들은 이 책을 위주로 공부를 하는 것 같다. 하지만 필자가 예로 든 DB 입문서들만큼 상세히 DBMS 기술의 원리, 알고리즘, 다양한 매커니즘들에 대한 수학적인 분석 등을 담고 있는 전문 서적은 거의 없다고 본다. 필자는 DB 분야의 전문가가 되기를 꿈꾸는 사람들에게 대표적인 상용 DBMS를 하나 선택하고, 이들 입문서에 있는 내용이 실제로 해당 RDBMS에서 어떻게 구현되어 제공되고 있는지 착실히 공부하기를 권한다. 여기서 간곡히 부탁하고 싶은 것은 한번 더 원리에 충실하기를 바란다는 점이다. 정리 | 조규형 기자 |jokyu@korea.cnet.com ==== 참고자료 ==== ① E. F. Codd, A Relational Model for Large Shared Data Banks, Communications of the ACM, 1970 ② Pat Selinger 외, Access Path Selection in a Relational Database Management System, SIGMOD, 1979 ③ Jim Gray, Raymond A. Lorie, Gianfranco R. Putzolu, Irving L. Traiger: Granularity of Locks and Degrees of Consistency in a Shared Data Base. IFIP Working Conference on Modelling in Data Base Management Systems 1976 ④ Abraham Silberschatz, Henry F. Korth and S. Sudarshan, Database System Concepts(4th edition), McGraw-Hill, 2001 ⑤ Raugh Ramakrishnan, Jonathan Gehrke, Database Management Systems, (3rd edition), McGraw-Hill, 2002 ⑥ Hector Garcia-Molina, Jenifer Widom, Jeff Ullman, Database Systems: The Complete Book, Prentice Hall, 2003