|
문제를 두려워 하는 것은 문제에 해결방안이 없다고 생각하기 때문이다. | ||
오래간만에 시작하는 새로운 MSSQL2000 이야기 입니다. 항상 주절거리기를 좋아하는 제가 또 한번 주절거리겠습니다. ^_^
제가 하고 싶은 이야기는 딱 한가지 입니다. SQL서버를 다루시다 보면 많은 문제와 난관에 분명히, 한번도 아니고 여러번 만나게 되실 겁니다. 그때마다 어떤 생각을 하시나요? "방법이 없구먼.. 지우구 다시 깔아야쥐... -_-" 라고 하시나요? 아니면 찬찬히 문제를 파악하고 에러 메세지를 보시면서 문제를 해결하기위해 노력 하시나요?
어떠한 극한 상황이라도 꼭 방법은 있다고 믿으세요. 그리고 이곳에서 그 극한상황을 만나지 않기 위한 방법과 만나더라도 빠르고 정확히 해결하기 위한 방법을 연습하시면 그걸로 저는 해피할 검당 ^_^
이제 공부하실 차례를 제가 설명을 드릴 차례 이지요? ^_^
0. SQLServer2000 시작하기 전에 에서는 데이터베이스를 사용하는 이유와 SQL서버2000이 나오기 까지의 간략한 이야기 아울러 Windows2000 시스템과 SQL2000 과의 관계를 그리고 Windows DNA의 간략한 소개와 이중 Data Tier를 완전히 커버하는 SQL서버2000의 유기적인 관계를 소개해 드리고 끝으로 다른 DBMS와의 비교를 조금 하겠습니다.
1. SQLServer2000 특징, 설치 부분 에서는 SQL서버를 광고하는 듯한? 느낌이 드실지 모르겠지만.. 많은 분들이 잘못 알고 계시는 SQL서버의 기능을 간략히 소개해 드리고 싶으며 새로워진 SQL서버2000 의 기능에 대해서도 언급할 예정 입니다. 아울러 설치에서는 1. 설치전 점검사항 2. Windows2000 서버에서 SQL2000 Server 설치 3. WindowsNT 서버에서 SQL2000 Server 설치 4. Windows9X 에서 SQL2000 Server 설치 5. SQL7에서 SQL2000으로 업그레이드에 대해서 다룰 예정이며 바로 SQL서버의 툴에 대한 간단한 소개와 사용방법을 다룰 예정입니다.
2. 데이터의 검색 에서는 개인적으로 가장 중요하고 많이 사용한다고 생각하는 다양한 SELECT 구문에 대해 스터디를 할 예정이구요.
3. 데이터의 삽입, 삭제, 수정 에서는 데이터를 삽입하는 INSERT구문, 데이터를 삭제하는 DELETE구문, 데이터를 수정하는 UPDATE 구문에 대해 스터디할 예정입니다.
4. 데이터베이스 생성과 관리 에서는 실제 테이블과 같은 객체의 저장소인 데이터베이스에 대해 깊은 이야기와 이를 관리하기위한 다양한 방식을 소개해 드리겠습니다.
5. 테이블생성과 관리 이곳에서는 DB의 가장 중요한 객체이며 실제 데이터가 저장되는 테이블에 대해 깊은 이야기를 드릴 생각 입니다.
6. 데이터 무결성을 위한 참조무결성, 데이터형, 체크제약과 규칙, 디폴트, 트리거 많은 분들이 어려워하시고 개념을 잘 못잡는 경우가 많은 무결성의 구현과 각종 데이터를 제약하기위한 여러 비즈니스 로직을 구현하는 다양한 방식을 알아 보겠습니다.
7. 뷰, 저장프로시져, 커서, T-SQL 프로그래밍 이부분에 대해서 이전에 SQL7 강좌에서 깊이있게 많은 예제와 샘플을 많이 다루지 못해서 아쉬웠는데요. 이번 강좌에서는 특히 저장 프로시져 등의 중요한 개체에 대해 알아보겠습니다.
8. 관계형 데이터베이스(RDBMS) 이해 이전 SQL7 강좌에서는 이 DB를 설계하고 이해하기위한 부분을 맨 앞에 두었습니다. 바로 관계형 이야기 이지요. 많은분들이 가장 어려워 하시고 난해해 하는 부분 입니다. 일부러 뒤쪽으로 빼두어서 부담을 조금 줄였구요. DB모델링의 기본적인 이야기부터 난해한 이야기 까지 해드릴 예정이며 특히 모델링 툴중 MSSQL서버의 Design 툴과 ER-Studio 두개 정도의 모델링 툴을 다룰 생각 입니다.
9. 색인 생성과 관리 상당한 서버측 퍼포먼스 작업인 색인에 대해 이전강좌에서 제 경험이 딸려 많이 얘기를 못드린 부분에 대해 깊이있는 이야기로 다루어 볼 생각 이랍니다. 많은 내부적인 로직에 대해 깊이를 가지고 다루겠습니다.
10. 백업과 복구 이를 앞으로 뺄까 고민 했는데요... 실제로 백업과 복구는 독립된 부분이라고 생각을 하고 있고 빠르게 읽고 테스트 해보실 수 있도록 다양한 전략수립에 대해 샘플과 테스트를 보여드릴 예정입니다. 이번엔 꼬옥 스탠바이 서버와 클러스터링 이야기를 드리고 싶네요 ^_^
11. 트랜젝션과 잠금처리 기존 SQL7 중급강좌에서 상당히 이론적인 이야기만 드렸는데 조금 주제를 바꾸어서 실제 업무에서 일어나는 다양한 잠금의 처리와 이를 회피하는 여러 방식에 대해 소개해 드리겠습니다. 잠금처리 아무것도 아닌듯 하지만 아주 중요한 처리랍니다. ^_^
12. DTS(Data Transfer Service) 데이터를 전송하고 처리함은 가장 중요한 DBMS의 기능입니다. OLE-DB기능의 확장을 보시면서 다양한 여러가지 DTS의 방식을 보여드릴 예정입니다.
13. XML과 SQLServer2000의 통합 개인적으로 많은 관심이 가는 XML과의 통합성에 대한 이야기 입니다. XML의 기본적인 이야기와 사용하는 방식, 샘플보기와 SQL서버가 데이터를 정의하는 부분에 대해 어떻게 이를 처리하는지에 대한 샘플을 보여드릴 예정입니다.
14. VB, JAVA, ASP, JSP, PHP와 SQL2000의 연결 이부분은 ADO이야기만 할까 하다가 제가 많은 질문을 받은 경험이 있어서 이번기회에 아예 강좌로 제공할 생각 입니다. MS 제품군에 대해서는 ADO에 대한 예제를 주로 다룰 예정이며 물론 ADO의 기본적은 아키텍쳐를 다루어야 겠지요 ^_^ 개발하시는 분들의 많은 도움 되시길 바라구요.
15. 전문검색(Full Text Search) 이는 제가 조금 사용해본 경험을 위주로 말을 드릴 예정입니다. SQL2000에서는 이 전문검색의 저장소가 변경되었지요. ^_^ 실제 메리트는 예상보다 적지만 여러가지 저의 생각을 적어볼 예정입니다.
16. 복제(Replication) 데이터를 이기종이나 동종의 DBMS에 보내고 이를 필터링하고 처리가 가능하게 하는 중요한 SQL서버의 데이터 전송및 처리 기법 입니다. 이번엔 제가 사용가능한 컴터가 3개가 되니.. -_-;;; 트랜젝셔널과 스냅샷, 머지복제에 대해 소개를 쭉~ 해드릴 예정이랍니다. ^_^
17. Analysis Service, 영문 자연어 질의(English Natural Query) 기존의 OLAP시스템이서 이번 SQL2000 부터 Analysis Service로 이름을 바꾸었습니다. 물론 기본적인 데이터 마이닝기능이 포함되었지요. 개인적으로 관심이 가는 부분이랍니다. 아울러 또 상당히 길어질 듯 한 강좌이기도 하군요.. 영문자연어 질의에 대해서는 맛만 보는 정도로 지나갈 예정이랍니다. ^_^
18. SQLServer2000 관리와 모니터링 실제로 관리자의 입장에서 로긴, 유저, 롤, 퍼미션등의 관리자 작업과 자동화의 처리, Job, Alert, 메인트넌스 플랜을 이용한 DB관리, SQL Mail 설정, 다중서버와 다중서버의 자동화 관리, 퍼포먼스 모니터링등의 다양한 주제를 가지고 관리자의 임무를 소개해 드릴 예정입니다.
19. 마치는글 이글을 쓰게되면? 아마 두다리 쭉 뻗고 잠잘 수 있지 않을까 하네요.
개략적인 스터디의 차례 였습니다.
도움 되셨길 바라구요.. 그럼 다음 코난이의 이야기에서 뵙도록 하지요 ^_^ |
****************************************************************************
1. 왜 데이터베이스를 만들었으며 왜 사용하는가? | ||||
이번에 소개해 드릴 내용은 왜 데이터베이스라는 녀석을 만들게 되었으며 왜 사용하는지 그리고 현재의 DBMS의 일반적인 기능들에 대해 간략히 알려 드릴 예정입니다.
보통 자료라는 말을 많이들 쓰지용 ^_^ 자료(Data)와 정보(Infomation) 에 대한 간단한 구분을 짓자면? 정보는 자료가 정제된 단계이다 라고 합니다. 즉 자료를 분석하고 처리해 정보를 만든다는 것이지요 ^_^ 사실 꼭 구분을 둘 필요는 없지만 이렇게 구분을 한답니다.
데이터베이스(Database)는 뭘까요? 데이터베이스는 자료나 정보를 저장하기위한 저장장치 또는 저장소 라고 불린답니다. 아울러 이러한 데이터베이스들을 관리하기위한 시스템을 데이터베이스 관리시스템(Database나 Database management System) 이라고 하지요. 보통 DB나 DBMS 이라고도 하는데 많은 분들이 줄여서 기냥 줄여서 "뒤비" 라고 말하는게 보통이 되었습니다. ^_^
MSSQL2000은 데이터베이스를 여러개 생성하고 총체적인 관리가 가능하니 DBMS가 되는 것이지요.
그렇다면? 저 DBMS라는 녀석을 왜 만들게 되었는지 찬찬히 생각을 해 볼까요? 멀리 가실 필요 전혀 없습니다. 바로 집에서 거실이나 안방에 놓고 사용하시는 전화기를 생각해 보시고 전화기 옆에 항상 같이 두는, 친구나 친지들의 이름과 전화번호를 적어두는 전화번호부를 생각해 보지요 ^_^ 이 전화 번호부는 왜 만드셨나요? 간단하지요. 친구나 친지의 전화번호를 한번 적어두고 필요시마다 이를 보고 전화를 걸기 위함 입니다. 약간 바꿔 말하자면? 한번 저장해둔후 필요시마다 보기위한 장치라는 겁니다.
자 그런데 문제가 생겼습니다. 친구나 친척들의 전화번호가 많아 지면서 1,000개의 전화번호를 적게 되었습니다. 안타깝게도 순서 없이 이름을 적어 두다 보니 은정범, 이재형, 이동혁, 김대우, 코나니 의 이름이 섞여서 전화번호부를 첫장부터 맨 뒷장까지 뒤적뒤적 거려야 전화걸 사람의 이름을 찾게 되버린 겁니다. 이를 조금 생각 하신다면? 운이 좋으면 맨 첫이름이 찾는 이름일 수도 있고 운이 나쁘면? 맨 나중의 즉, 천번째 이름이 찾는 이름일 수도 있겠지요? 평균을 낸다면? 500번째 정도에서 아마도 찾게 될겁니다. 그래서 약간 더 머리를 굴려서 전화번호부를 ㄱ, ㄴ, ㄷ 순으로 나눈후 이름을 분류에 적어두게 하였습니다. 그래서 찾을때 조금더 빠른 순서로 찾을 수 있게 된거지요. 또한번 생각을 해 보신다면? 빠르게 찾기위한 도구를 마련하게 되었다는 것이지요 ^_^
자 전화번호부 정리도 좋고 다 좋았는데.. 어느덧 시간이 지나 자식이 하나둘 생겼다고 가정해 볼까요? ^_^ 저는 아직 총각이쥐만.. 열시미 인구계획 무시하고 10명을 낳았다고 가정해 보죵 ^_^;; 어느덧 자식들이 자라 친구들에게 전화를 하게 되었습니다. 그런데 제가 지금 전화번호부에 새로 알게된 친구와 친지의 전화번호를 적고 있는데 자식녀석이 전화를 건다고 떼를 쓰는 겁니다. 그것두 자식을 많이 나아서 동시에 자식 10명이 전화번호를 찾겠다고 하는 겁니다. 그래서 새로운 생각을 또 하게 되었습니다. 전화번호부가 페이지별로 분리가 가능하게 만든 겁니다. 저는 ㄱ 페이지에 김태영이란 아는 형아를 적고 이름이 자식1인 녀석은 ㅈ 페이지를 보고 이름이 자식2 인 녀석은 ㅎ를 보게 하였습니다. 비록 제가 ㅈ 에 새로 알게된 친구의 이름을 적으려면 자식 1 녀석이 다 볼때 까지 기다리거나 ㅈ페이지를 뺏어서^_^;; 보거나 하면 되겠지요? 이러한 동시 공용성에 대한 관리도 가능하게 하였습니다.
자 전화번호부 이야기를 조금 접고 정리를 해 볼까요?
첫째로 데이터를 삽입, 삭제, 수정이 가능하게 만드는 것이 목적 이었습니다. 두번째는 색인(INDEX)를 이용한 빠른 검색이 가능하게 하였습니다. 세번째는 동시에 여러사람이 사용 가능하게 하는 공용성과 자원의 효율적인 관리를 위함 입니다.
간단 하지요? 이러한 요구사항을 만족하기위해 어떤 일들이 생겼을까요? 자 이를 구현하기 위해 대두 된 것이 바로 화일 시스템 입니다. 윈도우를 이용해 텍스트 문서를 만들어 두거나 아래한글로 워드 문서를 만드신후 이를 관리해 보신 경험이 있으실 겁니다.
보통 이러한 화면이 될 수 있겠지요? 아래한글 프로그램이 아래한글 화일 하나를 사용이 가능하게 될겁니다. 그런데 문제가 생긴 겁니다. 바로 데이터의 종속성(Data Dependency)문제와 데이터의 중복성(Data Redundancy) 문제가 생긴 겁니다. 데이터의 종속성이란 간단히 아래 한글 화일을 친구네서 가져 왔는데 이녀석이 아래한글 3000 용 화일인 겁니다. 저는 아래한글 97을 사용하는데 이 화일을 보기위해 아래한글 3000을 가져다 설치 하거나 해야 하는 데이터의 변환으로 인해 응용프로그램을 변화해야 하는 종속성 문제가 생긴 겁니다. 데이터의 중복성이란 저렇듯 하나의 응용플그램이 하나의 데이터 화일을 사용해야 하는 룰 때문에 여러 응용프로그램이 같은 데이터 화일을 사용하기 위해선? 중복되게 데이터 화일을 두게되는 문제가 생긴 겁니다.
바로 이러한 가슴아픈 상황이 발생하는 것이지요.
자 이를 해결해 봅세라는 마음가짐하에 개발을 계속하여서 결국 비밀병기인 화일관리 시스템이라는 비밀무기를 개발하게 됩니다.
음 보시기에도 무쟈게 깔쌈해 보이실 겁니다. 그러나 비밀 병기도 약점은 있는법. 여러 응용 프로그램들이 사용하는 모든 데이터 화일들에 대한 공동 접근 루틴을 제공하면서 이를 해결해 보려 하였는디... 같은 데이타에 대해 각 응용 프로그램이 요구하는 서로 다른 형태의 데이터 구조를 지원하지 못하는 문제와 같은 구조의 데이터 파일을 서로 다른 응용프로그램에서 사용하기 위해서 데이터를 복제해서 데이터의 중복성의 문제가 생기게 된 것입니다. 즉, 저장공간의 낭비, 데이터의 불일치 문제 가 여전히 숙제로 남게 된 것이지요.
자 이를 완전히 해결하기위해 과학자들은 다시 건물안으로 숨어들어서 비밀병기를 다시 개발하게 됩니다. 바로 우리가 현재 사용하고 있는 DBMS를 만들게 된 것이지요.
응용 프로그램들과 데이터의 중재자로서의 역할을 수행하는 소프트웨어 시스템으로 화일 관리 시스템이 해결하지 못한 모든 문제점인 데이터의 종속성과 중복성을 해결하기 위해 만들어 지게 됩니다. 화일이 아닌 데이타베이스에 대한 연산 수행하지요. 그림이 정말 조아지는 듯 합니다.
이제 여지껏 나왔던 방식을 비교해 보신다면? DBMS의 특징으로
이러한 결과를 보실 겁니다. 제가 좋아하는 샘플인 인터넷상에서 자주 볼수 있는 게시판을 생각해 보세용~ 게시물을 볼때 실시간으로 보여 주지요? - 실시간 접근성 누구나 글을 적을수 있지으며 누구나 동시에 사용이 가능하지요? - 동시 공용성과 계속적인 변화 아울러 게시물 찾기를 할때 01번 하드디스크 섹터 FEFF의 데이터를 차자라.. 라고 하나요? 글중에서 원하는 단어가 있는지.. 등으로 검색 하시나요? 어떠세용? 조금은 구별이 되셨는지요? 그렇다면 조금더 저 DBMS라는 중간 매개체인 녀석을 더 생각해 보지요. 이녀석이 하는 일은
이러한 기능이 있답니다.
저러한 DBMS의 기능에 대해 장점을 고려해 보신다면?
이러한 장점을 꾸며댈 수 있겠지요? ^_^
장점만 있는가 그렇지도 않습니다. 단점에대해 말을 드리자면
이러한 단점도 고려가 가능하지요. 하지만 대부분의 기업이, 즉 돈을 벌기위한 조직체는 거의 대부분이 DBMS를 사용하고 있습니다. 계산기로 + - 해본 결과 + 된다고 판단한 거겠지요?
자 이렇게 해서 DBMS에 대해 왜 만들었으며 왜 사용하는 지를 제 나름대로 소개를 드렸습니다. 조금 이해가 되시는지요? ^_^
DBMS시스템에 대한 조금더 깊은 이야기는 8장 관계형 데이터베이스(RDBMS) 이해 부분에서 다룰 예정이니 이정도의 맛뵈기(?) 정도로 이야기를 접을까 합니다. |
****************************************************************************
2. SQLServer 2000이 나오기까지 |
SQL2000이 나오기까지 시간이 오래 걸렸다고만 말하면? 저한테 폭탄 날라 오겠졍? ^_^;;
자! 이곳에서는 SQL서버의 발전사를 알아 보구요. 아울러 SQL2000의 새로운 기능들에 대해 언급하는 시간을 가지겠습니다. ^_^ 먼저 SQL서버 1부터 알아 볼까요?
SQL 서버 1.0 음.. 아주 오래전의 얘기 같지용? 사이베이스의 32bit UNIX 버전을 16bit OS / 2 버전으로 변환해서 릴리즈가 되었습니다. 실제는 사이베이스의 이름으로 나왔다고 보셔도 무방합니다. 사이베이스는 사이베이스 한국 사이트 를 참고하시길 바랍니다.
SQL서버 4.2 자 이때부터 NT용으로 SQL서버가 NT에 탑재가 됩니다. 이때 까지는 MS가 사이베이스의 DBMS 엔진을 협력하여 NT에 탑재하게 된 겁니다. 아직까지는 사이베이스의 코드 베이스이지요.
SQL서버 6.0 자 이제 조금 달라 지는데요. 사이베이스의 RDBMS 엔진 라이센스를 구입한 후 MS가 개발하게 됩니다. 기존에는 없었던 GUI제공으로 NT에 어울리는 SQL서버를 구성하게 되며 NT가 네트웍 OS이며 노벨 네트웨어를 대상으로 중소 넷웍을 잠식 하면서 SQL서버 역시 회사나 서브넷상의 SQL서버를 관리하기위한 통합 지원을 가능하게 하였습니다. 클라이언트를 DOS부터 win98 까지 사용이 가능하게 하였구요.
사실 6.0 까지는 엔터프라이즈 시장에 진입하기위한 난제가 많이 있었습니다. 사실 NT베이스는 이때까지 문제도 많이 있었으며 안정화 역시 많이 부족했지요. 달라지는 부분은 바로 SQL서버 6.5 부터 입니다.
SQL서버 6.5 1996년 4월 출시 되었으며 SQL서버 6.0의 성향을 유지하며 새로운 요소가 추가되었습니다. 이때즈음 해서 완전히 새로운 요구가 등장하게 됩니다. 아울러 NT역시 어느정도 커널(오퍼레이팅 시스템의 핵심부) 자체의 안정화가 되어 가지요. 새로운 요구란 바로 인터넷이라는 무서운 아이가 하루가 다르게 커나가는 거지요. 에따라 인터넷과 데이터 보안관련 요구의 엄청난 증가로 이를 지원하게 되며 ANSI SQL규격에 맞는 인증 획득하게 되어서 상당한 SQL구문 범용성에도 다가서게 되구요.. 분산 트랜젝션(Distribute Transaction)이 사용 가능하게 되었습니다.
개인적으로 6.5 부터 사용했는데 정말 6.5에서 7.0의 차이는 하늘과 땅차이 랍니다.
SQL 서버 7.0 (98년 12월) 7.0은 6.5에 바할 수 없을만큼 많은 부분이 변화 되었습니다. 거의 새로운 버젼이라고 보셔도 무방할 정도로요... 아울러 6.5와의 데이터베이스 호환성이 많이 떨어집니다. 데이터베이스 기본부터 DAT라는 디바이스개념이 아닌 mdf , ldf인 NT상에 데이터베이스 단위로 저장이 되는등... 기본적인 아키텍쳐에서부터 상당히 많은 변화를 가지게 됩니다. 대략적인 말을 드리면 OLAP서비스의 구현, 영문 자연어 질의, 풀텍스트 서치등의완전히 다른 엔진을 모듈화해 사용이 가능해 졌지요.
여기에 이기종 DBMS서버와의 연동을위한 분산질의, 해시조인과 머지조인의 조인 방식의 추가, 거기에 DB자동 증가와 기본 IO가 2K에서 8K로 확장이 되었으며 시스템의 메모리를 기존의 정적인 할당과 동적 할당 모두 가능하게 하였으며 행단위 잠금기능, 자동 통계정보 갱신, 완전한 DB관리를 위한 관리계획의 자동화, 특히나 인덱스 튜닝 위져드라는 상상을 초월하는 색인마져도 자동으로 분석해 지정이 가능하게 추천까지 하는 기능과 웹 출판 기능등 새로워진 기능을 하나하나 따진다면 정말 셀수 없을만큼 많은 기능이 추가 되었습니다. 새로워진 기능 적기도 많아서 힘들군요.^_^;;; 좀더 찾아보면 저거의 배 이상은 새로운 기능이 많을 겁니다. 그리고 2000년이 되어서 이제 SQL2000으로 넘어가게 되지요.
MSSQL서버 2000 (2000년.) 코드명 실로(Shilo)라는 이름으로 SQL7의 다양한 기능이 거의 안정화 되었으며 무엇보다도 진정한 엔터프라이즈용 이라는 이름에 걸맞는 평가를 받는 중이지요. 살짝 맛보기를 보여 드리자면? 먼저 OLAP시스템의 발전인 데이터 마이닝 기능 입니다. SQL서버 7이 데이터 웨어하우징의 버젼이었다면? SQL서버 2000은 바로 데이터 마이닝의 버젼 입니다. 개인적으로 SAS나 SPSS같은 다양한 마이닝 알고리즘과 통계분석은 불가 하지만 모델 브라우징 기능등 기본적인 마이닝 기능의 사용이 가능해 졌습니다. 이에 못지 않게 정말 환영할 새로운 기능인 XML과의 통합성입니다. IIS + XML + MSSQL이라는 궁합으로 XML데이터를 SQL서버를 이용해 생성해 낸후 이를 IIS로 처리가 가능하게 하는 방식 이지요. 이 두가지를 개인적으로 가장 큰 SQL2000의 새로운 점이라고 생각하고 있답니다. 사용자가 함수를 정의할 수 있는 기능과 8Byte를 사용하는 bigint라는 새로운 자료형, 아울러 variant형의 자료형으로 가변형 자료형 이라는 천의 얼굴을 가진 자료형도 추가가 되었고 계산된 컬럼에 대한 색인의 구축이 가능해 졌으며 오라클에서 지원하는 파티션드 뷰의 기능, 다국어 처리를 위한 컬럼별, DB별 문자셋과 정렬순서등의 컬렉션 지정이 가능해져서 하나의 테이블의 A컬럼은 한글완성형으로 B컬럼은 일본어로 지정이 가능하게 되었습니다. 풀텍스트 서치에서는 기존 변경이나 삽입건에 대해 스케쥴을 사용한 파퓰레이션이 필요 했으나 이젠 자동으로 이를 트레이스해서 자동 갱신이 가능해 졌습니다. 텍스트 형에 대해서는 기존 SQL서버 7 에서도 Image형이나 Text형은 별개의 익스텐츠에 저장을 하였으나 SQL2000부터는 작은 Text형에 대해서는 같은 익스텐츠에 저장이 가능해 졌습니다. 언급된 새로운 기능들은 실제 강좌에서 자세히 다루게 되니 조금만 더 기다리시면 되실 겁니다. ^_^
이런 여러가지 새로운 기능보다 중요한 이야기가 있지요. NT시스템에 대해 관심이 많으신 분들 이라면? 기존의 NT3.51과 NT4는 중소회사의 넷웍 솔루션인 노벨사의 네트웨어의 시장을 목표로 하였으며 이는 NT4에서실현이 되었습니다. 그렇다면? WINDOWS2000은 어떤 시장을 목표로 개발된 것일까요? 바로 UNIX와 같은 메인 프레임급 시스템을 목표로 하는 것입니다.
WIN2000 부터는 매우 상당히 서버의 안정성이 좋아 졌습니다. 가비지 메모리(누수된 메모리) 처리 등등 서버의 안정성에 매우 신경을 쓴 흔적이 보이구요. 이런 안정성이 있는 시스템에 새롭게 사용될 SQL2000은? 개인적인 생각이 될지 지금 베타 2의 시점에서는 어떨지 모르지만.. SQL2000의 성능과, 가격대 성능비라면? 충분히 엔터프라이즈 시장 점유율을 상당히 높일 것으로 기대 됩니다. 거기에 다국어용으로 한글버젼역시 지원이 되니 한때 비주얼 베이직 한글버젼이 출시 될 때처럼 많은 국내의 벤더가 이를 사용할 것으로 기대가 되는군요.
아울러 각종 오퍼레이팅 시스템과 DBMS의 성능을 비교하는 TPC사이트를 참고하시면? 새롭게 Windows2000과 SQL2000의 결과를 보실 수 있을 겁니다. http://tpc.org 의 벤치마크 결과로 말을 드린 거랍니다. ^_^
자. 새로운 기능도 살짝 말을 드렸고. SQL서버의 발전 과정도 살짝 말을 드렸으니 이제 다음 이야기인 Windows2000과 SQL2000의 이야기를 드려야 겠지용?
아시다시피 SQL서버는 오로지 NT와 Windows 시스템에서만 사용이 가능합니다. 뭔가 많은 부분이 유기적으로 얽혀 있다는 의미 이지요. ^_^ 다음 이야기에서는 이 부분에 대해 풀어 보겠습니다. |
****************************************************************************
3. Windows2000(NT)과 SQLServer2K |
이번에 소개해드릴 내용은 많은 분들이 질문 하시는 NT4 시스템 또는 Windows2000 시스템과 SQL2000시스템에 대한 이야기 입니다.
이하 특별한 언급이 없는한 윈도우 2000시스템도 우선적으로는 NT시스템이라 부르겠습니다.
아울러 이하의 내용은 NT쪽의 깊은 이야기가 될듯 합니다. 혹시 내용이 이해가 가지 않으신다면? 다음 강좌를 보셔도 무방 하구요... 하지만 NT시스템과 SQL서버 시스템은 뗄레야~ 땔 수 없는 그런 관계이니 어려우시더라도 한번쯤 읽어 보심 추후 문제가 생길시 적절한 판단을 내리실 수 있을 겁니다.
SQL서버는 NT에서만 설치및 사용이 가능 합니다. 자 많은분들이 알고 있는 이야기이며 이게 끝이에용~~~ 하면? 짱돌 날라 오겠죵?
첫번째로 SQL 서버는 NT시스템의 인증을 그대로 사용 가능 합니다. 개인적으로나 작은 회사에서? NT를 개인용 PC보다 안정적 이어서 개인용으로 또는 프린터 서버나 웹서버 정도로 사용하시는 분들이 상당히 많을 겁니다. NT의 인증방식은 상당히 복잡한 수치계산 알고리즘으로 이루어져 있으며 이는 미 국방성에서 지정한 C2라는 미국방성 사용가능 인증제도라 불려서 상당히 높고 신뢰있는 인증체계 입니다. 아마 이글을 보고 계신 분중 많은 분들이 개인용 NT에서 Administrator의 암호를 오늘도 치셔서 로긴 하신후 이글을 보고 계시겠지용? ^_^;;
중요한것은? 개인용이나 10명이하의 작은 그룹이 사용하는 NT이면 좋겠지만? 회사전체가 단일 NT인증 기반 서버로 회사내의 전 직원이 NT에 로긴한후 사용할 경우 입니다. 이때 유저가 몇명이나 등록이 되어 있을까요? 수천에서 수만명도 될수 있지요.
저는 NT계정명이 KRSEMA9800001식의 계정명을 본적이 있습니다. 바로 KR(국가) SE(서울지역) MA(지사명) 9800001(사번) 의 식으로 구성이 되어 있는 NT인증명이었지요. 자신의 로긴명 외우기도 쉽지 않겠죵? ^_^;;; 이런식으로 상당히 NT의 도메인(Domian) 구조나 윈도우즈 2000의 액티브 디렉토리(Active Directory) 구조를 잘 설계한 회사라면? 수천명이 하나의 NT서버에 또는 BDC(백업 도메인 컨트롤러)에 인증을 받아 사용하게 됩니다. 이 많은 계정을 회사 메인 SQL서버에 인증을 시키기 위해 다시 새로운 계정을 생성해 그룹을 설정하고 권한을 설정한다는 것은? 말 그대로 닭질이 되는 것이지요. 저정도 닭질이면? 정말 닭이 될지도 몰겠군요. 이러한 인증 체계를 NT의 인증 그대로 사용이 가능하며 아울러 단순히 NT의 그룹을 SQL서버의 롤과 매핑을 시켜 권한의 설정이 가능해 진다는 장점이 있습니다. 물론 C2 인증체계의 높은 보안성 역시 그대로 사용 가능하지요.
기존 Domain 체계의 많은 문제로 인하여(여러개의 도메인을 관리해 보셨다면 그 고충을 아실 겁니다.아직도 트러스트 개념잡을때의 그 고통이 T.T) Windows2000부터 새롭게 등장하는 액티브 디렉토리를 이용하면? SQL서버의 관리를 더 쉽게 하실 수 있게 됩니다.
액티브 디렉토리는 네트웍의 여러가지 개체들을 계층화시켜서 관리가 가능하게 하는 디렉토리 서비스 입니다. 특히 DNS와 통합이 되어 사용이 가능하며 특정 노드 등의 자원에 대해 위임등의 처리가 가능하구요. 아울러 기타 디렉토리 서비스와의 연동도 가능해 집니다. 대형 디렉토리 서비스를 관리해 보셨다면 아실 겁니다. 이러한 제한은 개개인이 보기엔 갑갑하고 일케까지 해야하나... 일지 모르지만? 관리자의 입장이라면? 상당히 중요하고 크리티컬한 문제가 될 수 있기 때문입니다. SQL서버역시 마찬가지 입니다. 이러한 액티브 디렉토리의 확정성과 관리기능을 그대로 사용이 가능하며. 자원의 검색역시 가능해 집니다.
액티브 디렉토리는 사실 노벨 네트웨어의 글로벌 디렉토리 서비스 인가 하는 녀석을 보고 이를 MS의 디렉토리 시스템으로 만든것(? - 진실은 아무도 모르죵) 입니다. 물론 문제는 계속 생겨 나겠지만? 상당히 좋은 구조랍니다. 액티브 디렉토리에 좀더 관심이 많으시다면? 액티브디렉토리 기술정보사이트 에서 많은 정보를 얻을 수 있으실 겁니
두번째로 NT의 이벤트 로그를 사용 가능합니다.
이렇게 알림의 경우 NT의 이벤트 로그와 통합이 가능해 지지요.
세번재는 성능 모니터링 도구의 포함입니다.
NT의 자체적인 퍼포먼스 모니터링과 SQL서버의 모니터링을 같은 모니터링 도구로 사용이 가능해 집니다. 퍼포먼스 모니터링은 상당히 중요한 문제파악의 시작점이 됩니다. 이곳에서 병목지점을 잡은후 이를 분석해 새로운 튜닝 결과를 만드는데 일조를 하게 하지요.
네번째는 NT의 IIS와 통합된 XML에서 SQL서버를 사용하는 샘플 입니다.
보시는 바와 같이 NT의 IIS상에 단순한 컨피그만을 통해 SQL서버의 데이터를 XML문서로 표현이 가능해 집니다. 여기에 XSL로 뷰만 시켜주면? 하나의 완전한 문서가 되는 것이지요.
다섯번째는 메모리와 CPU등의 시스템 성능과 직결되는 부분에서의 SQL서버 입니다. 다른 DBMS와는 틀리게 SQL서버는 NT서버의 CPU와 MEMORY를 그대로 사용 합니다. SQL서버2000 엔터프라이즈의 경우는 프로세서가 32개까지 있는 SMP 시스템까지 스케일 업이 가능하며... 메모리의 경우는? 64GB까지의 RAM을 사용하여 트랜잭션 로드를 처리가 가능해 지지요. 64메가가 아니라.. 기가더라구요.. ^_^;;
이러한 시스템의 성능과 직결이 되는 부분을 NT가 동적으로 처리하면서 구성영역을 마련해 특별한 작업없이 성능을 완전히 사용 가능해 진다는 것입니다.
자 이정도면 대강의 NT와의 관계를 어느정도 풀었군요. 여기서 SQL서버의 DB는 NT의 화일시스템에 써진다는 둥의 당연한 이야기는 제외해도 큰 문제 없을듯 하지용? ^_^;;;
그리고 중요한 앞으로의 상황으로 기업용 솔루션의 아키텍쳐 전반에 걸치는 Windows2000 DNA라는 방법론에서 Data Tier를 커버하는 SQL서버에 대한 전반적인 이야기를 드릴 생각 입니다. 물론 이러한 개발의 방법론에 SQL관리자는 필요 없는 이야기~ 라구 생각하실지 모르지만? 이는 분명 SQL서버를 이용하시는 분이라면 꼭 알고 계셔야 할 중요한 아키텍쳐 입니다.
그럼 다음 이야기인 Windows DNA와 SQL2000 이야기에서 뵙도록 하지요 ^_^ |
****************************************************************************
4. Windows DNA와 SQLServer2000 |
안녕하세요 ^_^ 이번에 소개해 드릴 내용은? ^_^ 기업용 솔루션의 아키텍쳐 전반에 걸치는 웹사이트 구축에 이용되는 Windows2000 DNA라는 개발의 방법론을 말을 드릴 생각 이구요.. 이 Windows DNA의 응용 플그램으로 Data Tier를 커버하는 SQL서버에 대한 전반적인 이야기를 드리겠습니다.
중요한것은 SQL서버만 보시는게 아니라 기업용 솔루션 전체의 흐름을 보시라는 겁니다. 나무만 자세히 보시다보면 종종 숲을 놓치실 수 있습니다. 여기서는 숲을 보세요.
먼저 Windwos2000 DNA 이야기를 먼저 드려야 겠지요.
Windows DNA(Distribute Internet Architecture) : 비즈니스 인터넷 구축을 위한 플랫폼 이라는 아주 거창한 이름이 붙어있는 녀석 입니다. 이녀석의 목표는? 1. 높은 성능을 끌어내며 2. 빠르게 개발을 하여 빨리 솔루션의 출시가 가능하게 하며, 3. 기존의 보유 시스템에 통합이 가능하여 상호 운영이 가능하고, 4. 유지보수가 쉬운 웹기반 솔루션을 만들자 라는 것이 바로 윈도우즈 DNA 입니다. 저 네가지 이유는 오너의 입장에서 보나 개발자의 입장에서 보나 가장 이상적인 솔루션의 구축이 되겠지요? ^_^;;
이는 간단히 MS에서 제공하는 개발툴, 서버, OS를 이용하여 1. 메시징2. 데이터 관리 3. 웨어하우징 4. 다른 기업 응용 프로그램과의 통합 5. XML을 통한 정보 교환 6. 웹 브라우저, WAP 사용 휴대폰 그리고 셋톱 박스를 통합한 모든 종류의 클라이언트를 통한 프레젠테이션 위의 6가지를 포함하는 인터넷 솔루션 개발 측면의 방법론을 의미한답니다.
중요한건 윈도우즈 DNA는 방법론이라는 사실 입니다. 기존의 방법론부터 차근차근 생각해 보지요.. ^_^ 기존 IBM 유닉스 시절을 생각해 보세요.. 메인프레임 이라는 하나의 서버에 텔넷으로 로긴해 모든 회사의 작업과 개발은 이 메인프레임이라는 하나의 대용량 서버에서 이루어 졌습니다. 즉, 모든 개발작업이 하나의 서버에서 모두 이루어 지므로 상당한 중앙 집중식 방식의 운영이 이루어 지지요. - 하지만 문제 상황으로 서버측의 과부하와 메인프레임 서버가 다운되었을 경우? 전체 회사의 프로세스가 다 사라지게되는 문제가 발생하게 된 겁니다. 이를 보통 1세대 중앙집중식 방식 또는 메인프레임 방식이라고 부른답니다.
이를 보안하기 위해 좀더 정확한 이유를 말하자면? 개인용 PC의 사양과 성능이 많은 발전을 이루면서 클라이언트 / 서버라는 방식으로 운영이되게 되었습니다. 클라이언트 / 서버라는 방식은 간단합니다. 서비스를 요청하는 쪽은 클라이언트라 불리게 되며 서비스를 제공하는 쪽은 서버가 된다 라는 의미 입니다. 간단히 SQL서버가 서비스를 제공하면? 이는 서버가 되며.. 코난이가 SQL서버에게 데이터를 요청한다면? 이는 클라이언트가 되겠지요 ^_^ 하지만 약간의 오해의 소지가 있을 수 있는 부분인데요.. NT4가 설치된 컴에서 네트웍 프린터가 설치된 윈95 컴퓨터에게 프린트를 해달라고 요청 한다면? 어느녀석이 서버이고 어느녀석이 클라이언트 일까요? NT4는 요청하고 윈95가 제공하니 윈95가 서버로 불리게 되는 것입니다. 보통 이런식을 클라이언트 서버 환경으로 불리게 되었지요.
그리고 시간이 흘러흘러 오늘날이 되었습니다. 바로 3-Tier 클라이언트 서버 시스템 또는 N-Tier 클라이언트 서버 시스템이 되는 것인데요. 바로 윈도우즈DNA의 이야기 입니다. 간단히 3-Tier에 대해 설명을 드리지요. 느끼시겠지만? 3가지의 계층으로 되어 있답니다. 심오한 이야기지요 -_-;;;;
첫번째 Data Tier 입니다. 이는 데이터가 저장되어 있는 공간을 의미하며 웹 어플리케이션이나 기타 어플리케이션이 사용하는 데이터를 저장하는 계층 입니다. 느끼시다시피 SQL서버 생각이 조금 나시나요?
두번째 Business tier 입니다. 업무의 규칙을 담당하는 계층으로 가장 중요한 3-Tier의 계층입니다. NT4 에서는 MTS가 이기능을 담당 하였으며 MS의 COM으로 등록되어 사용 됩니다. 이는 Windows2000부터 구성요소 서비스로 통합되었습니다.
윈도우즈 2000 서버의 구성요소 서비스.
세번째는 Presentation Tier 입니다. 보통 우리가 사용하는 웹 어플리케이션이나 일반 어플리케이션 이라고 생각하심 됩니다.
그렇다면? 이러한 3-Tier가 왜 대두된 것일까요? 바로 위에서 살짝 언급해 드린 1. 높은 성능을 끌어내며 2. 빠르게 개발을 하여 빨리 솔루션의 출시가 가능하게 하며, 3. 기존의 보유 시스템에 통합이 가능하여 상호 운영이 가능하고, 4. 유지보수가 쉬운 웹기반 솔루션을 만들자 라는 이유가 되었지요.
그러나...
3-Tier 솔루션의 개발중 특히나 중요한 부분인 비즈니스 로직을 구축하는 부분역시 그리 쉽지는 않았습니다. 이는 상당히 고도의 기술과 프로그래밍 능력, 솔루션 전체를 관철할 수 있는 상당히 숙련된 개발자가 필요하기 때문입니다.
하지만 이런 문제와 내부적으로 필요한 기술들은 MS에서 MTS를 발표하면서 많이 쉬워 졌지만 아직 그 내공수준의 개발자를 찾기는 거의 하늘의 별따기 수준 이지요.
따라서 이러한 3-Tier의 개발은 상당히 고도의 기술이 되었으며 그 비용과 시간 역시 만만치 않은 문제가 되게 됩니다.
하지만 MTS와 같은 미들웨어를 이용한 솔루션은 기업용 솔루션에서는 빠질 수 없는 중요한 옵션 입니다. 이는 3-Tier를 구축하는 이유중 특히나 많은 동시사용자(50명이상) 사용시 성능의 사용에서 특히나 중요한 옵션 이지요.
이 구현을 살짝 제시한것이 바로 윈도우즈 DNA이지요. 그럼 이제 우리의 관심사인 윈도우즈 DNA를 살펴 보지요. 윈도우즈 DNA는 다음과 같은 솔루션이 필요하며 다음과 같이 변화했습니다.
쓰윽 보시면 느낌이 오시겠지만?
앞으로의 환경은 Windows2000을 이용한 웹 응용프로그램 서버. 상당히 쓸만한 성능을 보이는 데이터베이스는 SQL서버2000. XML을 이용한 회사간 데이터 전송은 Biztalk Server. 윈도우즈 DNA의 서버 클러스터링과 관리는 Application Server. 이기종의 메인프레임 시스템과의 통합을 위한 Host Integration Server 2000. 온라인 비즈니스를 위한 Commerce server 2000. 솔루션 개발은 비주얼 스튜디오의 식이겠지요.
자 어떠신지요.. 이것이 MS의 윈도우즈 DNA라는 방법론입니다. 물론 반드시 저렇다 라는 것은 아니지요. ^_^;; 다른 방식도 얼마든지 있지만. 이러한 솔루션에 대한 전체 아키텍쳐를 마련해 두고 있다는 겁니다. - 이것이 MS가 차별화하는 부분이지요.
자 그렇다면? 이제 조금 중요한 이야기를 해 봐야 겠지요. 이 글을 읽으시는 많은 분들이 많은 기업에서 요구하는 솔루션을 구축해 보신 경험이 있으실 겁니다. - 3-Tier의 솔루션 구축까지 가실 필요도 없습니다.
첫번째 질문 입니다. 논리적인 데이터베이스 구축을 위한 데이터 모델링을 해보신 경험이 있으신지요?
http://www.embarcadero.com ER-STUDO
두번째 질문 입니다. 솔루션의 프로세스 흐름을 디자인해보신 경험이 있으신지요?
http://www.castsoftware.com VB - Miner
이 두가지의 질문 입니다. 이러한 기본이 되어야할 작업 역시 무시되거나 또는 시간에 쫓겨서 하지 못하는 것이 바로 우리 개발자의현실 입니다. - 저역시 자아비판하는 중이에요.. T.T
하물며 3-Tier로 된 기업용 대형 솔루션이면 어떠 할까요? 개발 기간의 단축을 위해 나온 개발의 방법론이? 더욱더 많은 시간을 소요하게 할 수도 있다는 의미가 될 수 있겠지요. 또한 유지보수의 문제를 해결하기위한 방법론이 더욱더 특화된 기술과 어려운 로직으로 어려워 질 수 있다는 의미 이지요.
코난이의 내공역시 많이 부족합니다. 배우기위해 글을 적고 배워 나가는 중이지요. ^_^ 자 이정도면? 윈도우즈 DNA에 대한 설명은 대강 이야기를 드린듯 하군요.. SQL서버는 Windows DNA로 구축하는 솔루션의 Data Tier를 완전히 커버한다는 부분.. 조금은 이해가 가셨으리라 생각 합니다.
끝으로 윈도우즈 DNA에 대해 조금더 들여다 봐야 겠다~~~ 라고 생각하시는 분들은?
한글 : http://microsoft.com/korea/dna/ 영문 : http://microsoft.com/dna/ MS의 윈도우즈 DNA사이트를 참고하시길 바랍니다.
아울러 국내 서적중 3-Tier 구축을 위한 컨설턴트 회사인 (주) 인브레인 - 강좌도 제공하는 중. 을 참고하시면 많은 공부가 되실 겁니다.
다음 이야기는? 반드시 SQL서버2000 이어야 하는가의 이야기 입니다. 이곳에서는 타 DBMS와의 비교를 하는 시간을 가지기 보다는(제가 개인적으로 비교를 시러해서요... 사실 의미도 없지요. -_-) SQL서버2000의 새로운 기능들에 대해 가능한 많은 부분을 언급할 생각 입니다. 그리고 변화한 녀석들이 무엇인지 찬찬히 짚어 보도록 하지요.
수고하셨습니다. ^_^ |
****************************************************************************
5. 반드시 MS의 SQLServer2000 이어야 하는가? |
이곳에는 과연 MSSQL서버만이 최적의 선택인가? 하는 이야기와 제가 눈으로 보아온 몇몇군데 인터넷 서비스 업체 회사의 서버 운영 상황과... 끝으로 저의 DBMS선택에 대한 이야기를 드리고 싶습니다.
먼저SQL서버2000이 엔터프라이즈 솔루션으로 부상하기위한 새로운 기능들의 소개 시간을 가지려 합니다.
첫번째, 기업용 솔루션은 보통 미션 크리티컬이라는 이름으로 사용이 됩니다. 어떠한 일이 있어도 멈추어선 안되며 어떠한 일이 있더라고 그즉시 복구 되어야 한다는 의미 입니다. 보통 서버 가용 시간에 대한 의미를 많이 사용을 하며 엔터프라이즈 급이라면? 일반적으로 Four-Nine 이라는 이름으로 99.99 이상의 9가 4개 들어가는 서버 가용시간을 보여주어야 엔터프라이즈 급이다 라고 말을 하게 됩니다. 이런 이야기를 드리는걸 생각해 보신다면? 이미 99.99를 넘었다는 것을 아실 겁니다. 이는 SQL서버의 클러스터링 기능으로 임의 노드의 추가 또는 삭제가 간단해 졌으며 특히 특별한 설정없이 SQL서버가 설치되면서 이를 자동으로 검색해 처리해 줍니다.
두번째는 로드 밸런싱 기능 입니다. 이는 넷웍 로드 밸런싱의 의미가 아닌 DBMS의 데이터 로드 밸런싱에 대한 부분입니다. 비교를 개인적으로 싫어하지만.. 오라클은 오라클8.0 버젼 부터 이를 Partitioned View 라는 이름으로 지원 했습니다. SQL서버7 에서는 빠진 기능이었으나 이번 SQL2000 부터는 이기능을 Distributed Partitioned Views라는 기능으로 지원하면서 행집합 데이터를 분산해 가지며 클라이언트가 요청시 서버 그룹이 이를 밸런스해 결과를 리턴해 줍니다. 대용량 시스템에서는 빠질수 없는 기능이었지요.
세번재는 데이터 웨어 하우스 시스템 에서의 결과 집합 처리를 위한 인덱스된 뷰 처리 입니다. 데이터 웨어 하우스에 대한 결과집합 요청이 다양화 되며 복잡해 질수록 원본 데이터에 대한 논리적인 행집합인 뷰를 생성하게 됩니다. 이에따라 작업의 논리적인 처리를 위한 뷰의 기능과 그 부하로 인해 상당한 문제가 될 수 있게 됩니다. 이에 SQL2000 부터는 뷰에 대해 고유 인덱스를 생성해 뷰를 접근하는 쿼리에 대한 성능 향상을 볼 수 있지요.이역시 오라클 8.0 버젼 부터 지원하는 것으로 알고 있습니다. 물론 SQL서버는 이러한 인덱스된 뷰 구현을 위해 쿼리를 재작성할 필요가 오라클과는 달리 없다고 합니다. 이 쿼리 재작성을 SQL서버 쿼리 최적화기가 인덱스된 뷰를 자동으로 인식하고 사용하기 때문 입니다.
네번째는 OLAP 분석중 가장 중요한 객체인 큐브의 분산 가능 입니다. 여러 서버상에서 이미 사용중인 잘 구성된 큐브를 하나의 서버에서 논리적으로 호출해 재사용이 가능하며 이로인한 확정성을 가질 수 있게 됩니다.
자 이정도면? 엔터프라이즈 환경을 위한 MSSQL서버의 굵은 줄기는 말을 드렸네요. 이 외에도 SMP 시스템에서의 병렬 인덱스 작성, 병렬스캔, 병렬DBCC, VI SAN, 서버를 사용하지 않는 스냅샷 백업, 사용자 정의 함수, 캐스캐이딩 트리거 구현, Instead 트리거와 After 트리거, 계산된 컬럼의 색인, 추가된 bigint - sql_variant - table 데이터형 등의 다양한 기능들은 강좌의 중간중간에서 얘기를 드려야지요.
그렇다면? 이제 다른 이야기인 반드시 SQL서버 이어야 하는가? 입니다. 저의 대답은 글세요 입니다.
국내의 DBMS 현황을 살펴 보지요... 제가 DB를 처음 공부할때인 99년 정도만 해도 DB공부 = 오라클 공부 라는 공식이었습니다. 대형기업과 공공기관, 관공서의 DBMS가 모두 오라클로 이루어 졌기 때문이지요. 심지어는 학교를 졸업한 선배가 하시는 이야기는 "밥벌어 먹고 싶으면? 유닉스와 오라클 공부해" 라는 조금은 의미 심장한 말을 드리고 가시곤 했답니다.
1999년 정도까지 국내의 DBMS 현황은? 오라클이 80% 기타가 20% 정도의 비율로 존재 했다고 합니다. 물론 DB를 제외한 DBMS에 대한 이야기 입니다.
이런 상황이 지속되던중? 국내 인터넷 개발이 갑자기 급성장 하기 시작 했으며 상대적으로 구축이 쉽고 가격이 저렴하며 다양한 처리가 가능했던 NT기반의 IIS + ASP 를 이용한 웹 서비스가 역시 활기를 얻기 시작 했지요. 이에따라 NT상에서 상대적으로 구현이 쉬운 MSSQL서버를 사용하게 된 겁니다. SQL서버는 인기있는 중소 인터넷 회사의 DBMS로 자리를 잡으면서 국내 웹 개발자들이 많은 사용을 하게 되는 계기가 되었지요. 아마도 이 글을 보시는 대부분의 분들이 이러한 상황으로 이 글을 보고 계시지 않는가 생각 합니다. 이는 국내의 상황입니다. 하지만 !! 외국의 상황은 그렇지 않습니다. 오라클, MSSQL, IBM UDB, 인포믹스, 사이베이스가 비슷비슷한 비율로 사용이 되고 있지요. 국내의 DBMS 선택의 기준은 "어느 회사가 이걸로 구축해서 성공했대~ 우리고 이걸로 하자" 라는 남들 다 이걸로 하니 우리도 따라하자 식의 운영이 낳은 결과가 된겁니다. 그 결과 DBMS관련 직종과 사용자는 하나의 벤더 쪽으로 몰리게 된 것이지요.
회사의 DBMS사용 이유, DBMS 운영자!!! 이것이 선택의 기로 입니다.
제가 얼마얼마간 여기저기 회사를 컨설팅차. 문제 해결차 가본 결과는? 회사의 인텔 메인서버에 스타크래프트 아이콘이 바탕화면에 떠억 하니 놓여 있는 회사부터.. 컴팩 메인서버의 바탕화면에 윈도우즈 미디어 플레이어와 사운드 카드를 달고 운영하는 회사까지 많은 회사를 보아 왔습니다. 미디어 플레이어로 MP3를 들으시는지 애니메를 보시는지.. 그리고 명함을 받아 보면 MCSE 이시더군요... 회사의 메인서버 라인은 다른 라인을 빼서 사용하니 넷웍 속도가 빨라서 아마도 그렇게 사용하시는 건지 어떤지 전 알 도리가 없지만... 제자신이 부끄러웠습니다. 그리고 문제가 생기면 아마도 메인서버의 문제라고 하시겠지요...
저의 DBMS 선택에 대한 생각은 다릅니다. 바로!!! 회사의 업무 목적과 어떤 사람이 운영하는가가 문제라고 생각 합니다. DBMS의 밴더가 무엇인가가 중요한것은 이제 아니라고 생각 합니다. 아울러 회사의 입장에서 본다면? DBMS가격은 아주 크게 문제가 되지는 않는다는 것이지요. 기능적인 면 역시 여느 DBMS의 기능과 그 성능은 어디나 거의 다 비슷 비슷 하기 때문이지요.
그 많은 기능을 다 사용하고 있는 회사가 과연 있을까요? 아울러 SQL서버7의 기능을 저역시 다 사용해 보지 못했습니다. 아울러 회사에서 오라클 DBMS를 관리하시는 분들도? 오라클의 모든 기능을 전부다~~~ 사용해 보신 분은 없으실 겁니다. 물론 IBM의 UDB역시 마찬가지 이며 인포믹스와 사이베이스역시 마찬가지 일겁니다. 회사의 특성과 업무구조에 맞는 DBMS를 선택하고 관리와 유지가 가능한 사람이 있는지가 문제라고 생각 합니다.
제가 언성이 높아 졌다면 죄송하군요.. ^_^;; 훔냥~~ 그러면 제가 해드릴 이야기는 이정도로 접도록 하지요... 다음의 이야기는? 진짜루 SQL서버를 공부해보는 시간인 MSSQL2000 설치의 이야기 입니다. ^_^ 도움되시길 바랍니다. |