1.1 데이터베이스의 중요성
데이터베이스는 데이터를 중앙에 저장하고 관리하여 여러 사용자가 공유 할 수 있도록 하기 위해서 사용되는 데이터의 저장소이다. 공유가 필요하지 않다면 데이터를 워드 파일 또는 엑셀 파일과 같은 개별 파일로 관리해도 될 것이다. 여기서 공유해서 사용한다는 것에서 한 가지 문제점을 생각해 보아야 한다.만일 100명의 사용자가 특정 데이터베이스를 사용한다고 가정 했을 때, 이 데이터베이스에 문제(성능저하나 데이터 손실 등)가 발생하면 100명의 사용자에게 피해가 간다. 기업의 중요 비즈니스와 연관된 데이터베이스에 문제가 발생하면 이로 인해서 심각한 업무 손실이 발생할 수 있다. 이러한 잠재적인 위험성을 완전히 제거하는 것은 거의 불가능한 일이다. 단지 우리가 할 수 있는 것은 최적의 성능과 안정성을 고려해서 데이터베이스를 만들고, 이러한 데이터베이스의 혹시 모를 손상으로부터 업무 손실을 최소화하기 위한 방안을 마련하는 것이다. 즉 서버 또는 데이터베이스를 이중화 하거나 적절한 전략으로 데이터베이스 백업을 수행하는 등의 방안을 마련해야 한다.
SQL Server를 사용하는 이유는 당연히 데이터베이스를 사용하기 위함이다. 그래서 SQL Server를 설치한 후 곧이어 수행되는 작업이 데이터베이스를 만드는 작업이다. 데이터베이스에 대한 정확한 이해를 바탕으로 하는 최선의 구축 노력은 SQL Server가 얼마나 안정적이고 빠른 성능으로 서비스를 제공할지를 결정짓는 중요한 요인이 된다.
1.2 시스템 데이터베이스에 대한 이해
[화면1] 개체탐색기에서 시스템 데이터베이스 확인
SQL Server를 설치하는 과정에서 SQL Server가 자체적으로 사용할 목적으로 자동으로 만드는 몇몇 데이터베이스를 시스템 데이터베이스라고 부른다. [화면1]에서 확인하듯 시스템 데이터베이스에는 master, model, msdb, tempdb 데이터베이스가 기본적으로 포함된다. SQL Server는 데이터베이스 관리 시스템으로서의 여러 가지 역할을 수행하기 위해서 필요한 정보를 시스템 데이터베이스에 저장하여 사용한다.복제(Replication)가 구성된 상황에서 배포자(Distributor) 역할을 수행하는 SQL Server라면 distribution 데이터베이스가 시스템 데이터베이스에 포함된다. 또한 숨겨져 있어서 외형적으로는 보이지 않는 resource 데이터베이스도 시스템 데이터베이스에 포함된다. resource 데이터베이스와 관련된 파일이 어느 폴더에 존재하는지는 다음 스크립트를 사용해서 확인할 수 있다.
[소스1] resource 데이터베이스 파일 위치 확인
Use master GO SELECT 'ResourceDB' AS [Database Name], NAME AS [Database File], FILENAME AS [Database File Location] FROM sys.sysaltfiles WHERE DBID = 32767 GO
1) master 데이터베이스
SQL Server가 데이터베이스 관리 시스템으로서 수 많은 데이터베이스를 관리하기 위해서는 이들 데이터베이스에 대한 정보를 저장 할 특별한 데이터베이스가 필요하다. 즉 데이터베이스의 이름은 무엇이며, 데이터베이스와 관련된 데이터 파일과 로그 파일은 어디에 위치하고 있으며, 데이터베이스에 접근하기 위해 서버에 로그인 할 수 있는 계정은 무엇인지 등의 정보가 어딘가에 저장되어야 하는데, 이러한 역할을 담당하는 데이터베이스가 master 데이터베이스이다. master 데이터베이스에 SQL Server의 여러 가지 환경 정보와 로그인 정보, 관리되는 모든 데이터베이스에 대한 정보 들이 저장된다. SQL Server는 서비스가 시작 될 때 우선 master 데이터베이스를 찾아서 열게 된다. 이어서 자신에 대한 존재를 확인하고, 다른 데이터베이스와 관련된 파일의 위치를 확인한 후 해당 위치로 가서 그 파일들을 사용 가능하도록 열게 된다. 만일 master 데이터베이스가 손상된 상태라면 당연히 SQL Server 서비스는 시작 될 수 없다. 그러므로 master 데이터베이스가 시스템 데이터베이스 중에서도 가장 핵심이 되는 시스템 데이터베이스라고 할 수 있다.
2) model 데이터베이스
‘model’ 이라는 단어에서 그 역할을 추측 할 수 있듯이, 이 데이터베이스는 모든 데이터베이스들의 원형으로 사용된다. 그래서 새로운 데이터베이스를 만들 때 model 데이터베이스가 복사되어 만들어 진다. 이런 이유로 model 데이터베이스의 설정을 변경하면 이후에 만들어지는 새로운 데이터베이스에 그 변경 사항이 반영되는 결과를 얻게 된다. 예를 들어 앞으로 만들어질 새로운 데이터베이스에 특정 사용자 계정을 만들고 싶을 때 이 사용자 계정을 model 데이터베이스에 만들어 두면 별도의 작업이 없이도 새로 만들어지는 데이터베이스에 이 사용자 계정이 포함되게 할 수 있다. 하지만 대부분 model 데이터베이스는 처음 그대의 형태로 유지되며 관리적인 측면에서도 특별히 관심을 두지 않는 경우가 많다.
3) tempdb 데이터베이스
SQL Server가 운영될 때 만들어지는 임시 테이블들이 생성되는 곳이다. 물론 임시 테이블 말고도 여러 가지 역할을 tempdb 데이터베이스가 담당한다. tempdb 데이터베이스를 많이 사용하는 환경에서는 tempdb 데이터베이스에 대한 적절한 구성과 모니터링이 필요하다. 그렇지 않으면 SQL Server에 성능 저하가 발생할 수도 있다. tempdb는 SQL Server 서비스가 다시 시작 될 때마다 초기화 되므로 영구적으로 보관 되어야 할 사용자 테이블을 tempdb에 만들어서는 안 된다. 앞에서 model 데이터베이스는 새로운 데이터베이스를 만들 때 사용되는 템플릿 데이터베이스라고 했다. tempdb 역시 SQL Server 서비스가 다시 시작 될 때 model 데이터베이스가 복사 되면서 새롭게 만들어진다.
임시 테이블(Temporary Tables)은 테이블 이름 앞에 # 또는 ##이 붙은 테이블을 이야기한다. # 이 붙은 테이블은 지역 임시 테이블(Local Temporary Tables)이라고 하며 해당 테이블을 만든 세션에서만 사용 될 수 있다. 반면에 ## 이 붙은 테이블은 전역 임시 테이블(Global Temporary Tables)이라고 하며 해당 테이블이 존재하는 동안은 다른 세션에서도 사용이 가능하다. 이들은 자신들이 만들어진 세션이 종료될 때 자동으로 제거되며 항상 tempdb 데이터베이스에 저장된다.
4) msdb 데이터베이스
msdb 데이터베이스는 주로 자동화에 관련된 정보를 저장 하는데 사용된다. SQL Server 에이전트 서비스를 활용하면 작업(Jobs), 경고(Alerts), 운영자(Operators) 기능을 사용해 효율적인 유지관리 업무 자동화를 구현 할 수 있는데, 이들과 관련된 정보는 msdb 데이터베이스에 기록되어 관리 된다. 이런 이유로 msdb를 SQL Server 에이전트 서비스가 사용하는 데이터베이스라고 이야기 하기도 한다. 데이터 전송을 위한 SSIS(SQL Server Integration Services) 패키지를 SQL Server에 저장하면 이 역시 msdb에 저장된다. 이 외에도 백업 내역과 복원 내역을 포함한 각종 정보가 msdb 데이터베이스에 기록되어 관리 된다. msdb 데이터베이스에 저장된 정보는 시스템 카탈로그 뷰를 통해 사용자가 접근할 수 있다는 특징이 있다. 예를 들어 작업 실행 내역, 백업 내역, 복원 내역 등을 쿼리문을 사용해 확인할 수 있다.
[화면2] msdb 데이터베이스의 시스템 카탈로그 뷰
1.3 예제 데이터베이스
예제 데이터베이스는 SQL Server에 대한 기능을 익힐 때 사용하도록 제공되는 학습용 데이터베이스이다. 학습 목적 외에는 SQL Server 운영과는 전혀 연관이 없다. SQL Server 2000 버전에서는 Pubs, Northwind 데이터베이스가 예제 데이터베이스로 제공되었으나, SQL Server 2005부터는 AdventureWorks, AdventureWorksDW 데이터베이스가 대신 제공된다. AdventureWorks 데이터베이스는 OLTP용 예제 데이터베이스이며, AdventureWorksDW는 OLAP용 예제 데이터베이스이다. SQL Server 버전에 따라 예제 데이터베이스에 포함되는 항목이 조금씩 달라져서 AdventureWorks, AdventureWorks2008, AdventurteWorks2012와 같이 데이터베이스 이름에 버전이 붙은 형태의 예제 데이터베이스가 제공된다. 참고로 AdventureWorks는 가상의 자전거 제조회사이다.2008 버전부터는 예제 데이터베이스가 설치 프로그램에 포함되지 않으므로 CodePlex 사이트에서 원하는 버전의 예제 데이터베이스를 전송 받아서 설치해야 한다.