엠에스에스큐엘
엠에스에스큐엘(MS-SQL)은 미국 마이크로소프트(Microsoft)에서 개발한 관계형 데이터베이스 관리 시스템(RDBMS)이다. 마이크로소프트 에스큐엘 서버(Microsoft SQL Server)라고도 한다. 윈도우(Windows) 기반의 아이아이에스(IIS) 서버에서 주로 사용한다.
개요[편집]
엠에스에스큐엘은 일종의 운영자가 웹브라우저를 관리함에 있어 사용자의 회원 관리라던지, 쇼핑몰에서 물품 목록을 리스트별로 볼 수 있도록 구현을 해주고 데이터베이스(Database) 관리를 해주는 마이크로소프트(Microsoft)에서 만든 웹 데이터베이스(WebDatabase)이다. 웹상에서 회원들을 관리 할 때 회원들의 정보를 데이터베이스에 저장했다가 데이터베이스에서 회원들의 정보를 다시 불러와서 리스트 형식으로 출력해주는 역할을 한다. 그리고 쇼핑몰에서 사용자가 물건을 주문했다라던지 물건을 반품시켰다라던지 이러한 일련의 과정들을 웹상에서 확인할 수 있도록 구현해 주는 게 웹 데이터베이스라고 할 수 있다. 그 종류는 여러 가지가 있지만 윈도우 형식으로 관리자가 편리하게 만들고 구현할 수 있다는 엠에스에스큐엘만의 특징을 가지고 있다. 엠에스에스큐엘은 다른 웹 데이터베이스들과는 달리 엔터프라이즈 관리자라는 관리 도구가 갖추어져 있어 데이터베이스를 쉽게 만들고 삭제할 수 있는 기능이 있다. 또한, 호스팅 비용이 다른 제품들보다 저렴하며, 보안이 좋다는 장점이 있다.[1]
등장배경[편집]
데이터베이스가 사용되기 이전에는 파일시스템을 통해 데이터가 유지되고 있었다. 그러나, 파일을 기반으로 데이터 관리를 하게되면 중복 데이터가 발생하고 중복된 데이터 간 불일치가 발생하는 등 데이터로서의 무결성 문제가 발생하였다. 그리고 시스템 또는 프로그램이 파일 구조에 영향을 받는 형태가 되어 유지보수가 복잡하고 어려운 문제점도 있었다. 이러한 파일시스템의 문제점을 극복하기 위해서 데이터베이스가 고안되었다. 데이터베이스는 파일 형태로 흩어져 있던 데이터를 하나로 모아 관리하고 다수의 사용자들이 정보에 접근할 수 있어야 한다는 관점 하에 설계되었다. 초창기에는 계층형, 네트워크형 데이터베이스가 사용되었으나 현재는 관계형(Relational) 데이터베이스가 주를 이루고 있으며 노에스큐엘(NoSQL) 계열의 데이터베이스의 사용도 점차 늘어가고 있다.[2]
특징[편집]
마이크로소프트 엔에스에스큐엘 서버는 분산형클라이언트 서버 환경을 위해서 특별히 디자인 된 고성능의 스케일러블 데이터베이스 관리시스템으로 내장된 데이터복제 기능과 강력한 관리 툴 및 개방형 시스템 아키텍쳐로, 기업이나 조직의 규모에 맞춰 가장 경제적인 정보솔루션을 구축할 수 있도록 최상의 플랫폼을 제공한다. 엠에스에스큐엘은 윈도우NT(Windows NT)와의 결합으로 엔티 서버에서 지원하는 모든 하드웨어 구조에서 완벽하게 지원한다. 윈도우NT상에서는 에스큐엘(SQL) 서버가 서비스로서 동작하는데, 제어판 서비스 부분을 보면 된다. 윈도우 9x에서는 애플리케이션(Application)의 개념으로 동작을 한다. NT에 최적화 되어 있으며 윈도우98 설치시 게임이나 사운드 카드, 비디오카드와의 충돌 등 많은 문제를 가질 수 있다. 또한, NT 도구와 연동된다. 에스큐엘서버에서 사용하는 거의 대부분의 프로세스(Process)를 윈도우NT에서 모니터링이 가능하다. 특히, NT 성능 모니터에서의 모듈인은 아주 섬세한 부분의 모니터링과 튜닝까지의 연계도 가능하다. 에스큐엘서버 자체내에 로그 시스템으로 오류를 분석하며, 오류의 설정으로 NT 이벤트 로그에도 사용 가능하다. 에스큐엘서버의 인증방식은 두 가지로, 에스큐엘 서버(Server)와 윈도우NT 인증과 윈도우 (Windows NT only) 인증이 있다. 기본 세팅은 1번 인증이고, NT 서버의 인증 체계를 그대로 사용이 가능하다.
엠에스에스큐엘은 집중화된 서버 관리로, 분산된 기업환경에서의 집중된 서버 관리 도구를 제공한다. NT는 텔넷(Telnet) 인증이 없다. 그러나, 에스큐엘 서버는 엔터프라이즈 매니저(Enterprise Manager)라는 관리 툴로 원격지의 서버를 등록(Register)후 완전한 관리가 가능하다. 그 외에도 간편한 링크드(Linked)서버를 이용하는 방식과 오엘이 디비(OLE-DB)를 이용해 오픈로우셋(Open Rowset)으로 쉽게 접근이 가능해졌다. 또한, 데이터베이스 관리 시스템(DBMS)에 의한 데이터 무결성의 지원이며, 트랜잭션 기반으로 완전한 무결성을 구축이 가능하다. 엠에스에스큐엘은 다양한 분산 데이터 처리기능을 지원한다. 정보의 배포를 위한 내장된 복제 기능이 있고, 적시에 정확한 정보를 필요한 사람에게 제공한다. 상당히 범용적인 복제 전략을 구축이 가능해지며, 대용량 데이터베이스를 지원한다.[3]
- 장단점
엠에스에스큐엘의 장점으로는 데이터베이스 관리 시스템의 툴인 마이크로소프트 에스큐엘 서버 관리 스튜디오의 사용이 매우 편리하고 잘 만들어져 있다. 많은 기능들이 마법사로 구성되어 있어 에스큐엘을 몰라도 백업, 튜닝, 스케줄, 레플리케이션(replication)등의 관리가 가능하다. 엠에스에스큐엘 데이터베이스는 결과값에 대한 멀티 레코드셋을 지원해서 개발에 편리함을 준다. 버전이 올라갈수록 편리한 기능을 추가해 주는 등이 있고 단점으로는 가격정책이 일괄적이지 못하다는것과 어느 사용시점부터는 비용이 많이 들어간다. 또한, 버전이 올라갈수록 새로운 기능이 추가되는것과 같이 새로운 형태로 발표되어 기존 사용자들이 따라가기 쉽지 않다는 이유 등이 있다.[4]
- 설치방법
엠에스에스큐엘을 설치하려면 먼저 개발 및 테스트용 무료 설치 파일을 다운로드한다. 설치유형에는 기본과 사용자 지정이 있지만 기본 구성을 권장한다. 언어를 한국어로 바꾸고 설치가 완료된 인스턴스 이름과 폴더를 확인한다. 데이터베이스관리 툴인 에스큐엘 서버 관리 스튜디오(SSMS)를 설치한다. 설치가 완료되면 시스템을 재부팅한다. 에스큐엘 서버 관리 스튜디오를 실행하고, 서버이름을 입력하여 연결한다. 이때 로컬 서버라면 서버 이름에 온점(.)만 입력해도 연결할 수 있다. 서버이름에 마우스 오른쪽 클릭 후 속성을 클릭하고 서버 속성을 확인한다. 보안 속성을 클릭 하고 서버인증과 로그인감사 등을 보안 요구사항에 맞게 수정 하면, 모든 설치 및 설정이 완료된다. 그 다음 새로운 데이터베이스 생성, 새로운 테이블 생성, 테이블 데이터 조회를 해볼 수 있다. 에스큐엘 서버 기본 인스턴스는 1433 포트를 사용한다.[5]
파일 구조[편집]
엠에스에스큐엘의 물리적 파일은 기본적으로 두 가지가 있다. 데이터 파일은 실제 데이터가 들어가는 파일이고, 이 파일은 MDF와 NDF로 나뉜다. MDF는 처음으로 생성되는 데이터 파일이고 NDF는 두번째부터 생성되는 데이터 파일이다. 데이터 파일을 여러 개로 나누는 경우는 성능을 위해서다. 로그 파일은 로그를 기록하는 파일이고 LDF가 있다. 엠에스에스큐엘 서버에서의 데이터베이스 파일은 두개의 이름을 가지고 있다. OS사에서 볼 수 있는 물리적 파일 이름과, 이 물리적 파일을 관리하기 위한 논리적 파일 이름을 가지고 있다. 이 논리적 파일의 이름은 주로 데이터베이스 관리 시스템가 자체로 사용한다. 데이터 파일의 속에 논리적인 구조는 페이지, 페이지가 여러개 모인 익스텐트, 익스텐트가 여러개 모여 파일이 된다. 익스텐트는 8개의 페이지가 합쳐져서 만들어진 단위이다. 하나의 페이지는 8KB 크기를 가지며, 이 파일 8개가 모여서 익스텐트가 되므로, 익스텐트의 크기는 64KB 이다. 익스텐트의 종류중 하나인 믹스드 익스텐트는 하나의 익스텐트 안에 여러 개 테이블의 페이지가 혼합되어 들어 있는 것이고, 유니폼 익스텐트는 하나의 익스텐트 안에 하나의 테이블의 페이지만 들어 있는 익스텐트이다. 기본적으로 엠에스에스큐엘 서버는 테이블이 생성되고 페이지가 생성될 때 믹스드 익스텐트에 페이지를 생성한다. 따라서, 데이터 파일을 최초에 만들면 익스텐트는 믹스드 익스텐트가 생성된다.
글로벌 할당지도(GAM)은 어떤 익스텐트가 할당 사용되었는지를 알려주는 특수한 페이지이다. 공유 글로벌 할당지도(SGAM)는 어떤 익스텐트가 현재 혼합 익스텐트로 사용 되는지와, 적어도 하나 이상의 사용되지 않은 페이지를 가지는지를 알려주는 페이지이다. 이 두개의 페이지의 내용으로 에스큐엘 서버는 어느 익스텐트가 할당 되었는지, 믹스드 익스텐트인지, 빈 페이지가 있는지 등등의 정보를 알 수 있다. 글로벌 할당지도와 공유 글로벌 할당지도 두개의 페이지는 각각 4GB의 데이터를 처리 할 수 있다. 이 말은 데이터 파일이 4GB를 넘어서면 그 파일에는 글로벌 할당지도와 공유 글로벌 할당지도가 두 개씩 있다는 말이다. 페이지 자유공간(PFS)은 페이지의 각각의 페이지가 사용하도록 할당 되었는지 여부와 각각의 페이지의 빈 공간의 양을 기록한다. 페이지의 빈공간은 비어있음, 1~50% 채워짐, 51~80% 채워짐, 81~95% 채워짐, 96~100% 채워짐으로 기록한다. 페이지의 빈공간은 텍스트 및 이미지 페이지에 대해서만 관리한다. 데이터 파일은 페이지로 나뉘어 있는데, 페이지 번호는 0번부터 시작한다. 0번은 파일헤더 페이지, 1번은 PFS 페이지, 2번은 GAM 페이지, 3번은 SGAM 페이지등의 순서대로 페이지가 할당된다.[6]
데이터베이스 함수[편집]
엠에스에스큐엘 데이터베이스 안에 있는 함수라는 개체는 사용자가 프로그램 언어에서 사용한 함수하고 동일하다. 값을 하나만 리턴하는 스칼라 함수부터 테이블을 반환하는 함수 등이 있다. 함수는 프로그램과 마찬가지로 재사용성을 높이기 위해 만들어졌다. 성능 쪽에서는 손해를 볼지라도 유지보수 및 개발 시 아주 유용하다. 데이터베이스 관련 프로그램에서 저장프로시저(stored procedure), 에스큐엘문 등에서 공통적으로 사용하는 부분들이 있다. 매우 길게 작업 되는 내용도 함수 쪽에만 로직이 들어가고 결국 사용하는 부분은 단순히 함수명과 인자값, 리턴값만 조절하면 편하게 쓸 수 있다. 나중에 로직이 바뀌어도 함수 부분만 바꾸면 적용이 되니 매우 효율적인 객체이다. 함수는 크게 생성 주체에 따라 시스템 함수, 사용자 함수로 나눈다. 시스템 함수는 데이터베이스 관리 시스템에서 제공하는 거라 수정할 수는 없고 여러 가지 타입이 만들어져 있다. 개발자들이 만들 수 있는 사용자 함수에는 스칼라 함수, 테이블 반환 함수 등 2가지 유형이 있다.
스칼라함수는 단일 데이터를 리턴하는 함수로, 가장 많이 사용되는 함수이며, 시스템 함수들 대부분도 스칼라 함수이다. 테이블 반환 함수는 말 그대로 리턴값이 테이블로, 스칼라 함수처럼 하나의 값이 아닌 테이블이다. 리턴되는 테이블에 따라 인라인 테이블 반환 함수(Inline Table valued Function)와 다중 문 테이블 반환 함수(Multistatement Table valued Function)로 나누어진다. 다중 문 테이블 반환 함수는 임시 테이블 생성처럼 테이블 변수를 선언하고 테이블 형식을 미리 정해야 한다. 또한, 테이블 변수 값이 결과 레코드 셋으로 리턴되어진다.[7]
버전[편집]
버전 패턴 | 에스큐엘 제품 |
---|---|
12.0.x.x | 에스큐엘 서버 2014 |
11.0.x.x | 에스큐엘 서버 2012 |
10.50.x.x | 에스큐엘 서버 2018 R2 |
10.00.x.x | 에스큐엘 서버 2008 |
9.00.x.x | 에스큐엘 서버 2005 |
8.00.x.x | 에스큐엘 서버 2000 |
서버 속성과 쿼리로 버전 정보를 확인 할 수 있다. |
- 서버 엔터프라이즈, 스탠다드 에디션(Server Enterprise, Standard Edition)
- 엠에스에스큐엘 서버의 유료 라인업으로써, 가격에 따라 크기와 성능 및 기능을 제한한다. 이 제품군에서 생성된 데이터베이스는 상호 호환되며 낮은 제품군을 사용하다가도 제품 키만 입력하면 좀 더 높은 제품군으로 쉽게 업그레이드할 수 있다. 에스큐엘 서버 제품으로써 설치가 까다로우며, 설치가 완료된 후에는 항상 에스큐엘 서버 엔진으로 에스큐엘서버(sqlserver.exe)가 실행되어 데이터베이스 서버로서 동작하게 된다.[8]
- 서버 익스프레스 에디션(Server Express Edition)
- 엠에스에스큐엘 서버의 무료 라인업이다. 학생과 개발자 등 누구라도 설치하고 이용할 수 있다. 엠에스에스큐엘 스탠다드(Standard)에 비해 성능이나 크기, 기능에서 제한이 있지만, 데이터베이스 관리 시스템으로서 핵심적인 기능들은 모두 포함하고 있다. 마찬가지로 에스큐엘 서버 제품군이기에 스탠다드 이상의 제품처럼 설치가 까다롭고, 항상 에스큐엘 서버 엔진이 상주하며 데이터베이스 서버로서 동작하게 된다.[8]
- 익스프레스 로컬데이터베이스(Express LocalDB)
- 엠에스에스큐엘 서버 2012 익스프레스부터 제공된 엠에스에스큐엘 익스프레스의 실행 모드이다. 에스큐엘 서버 제품들은 설치 및 환경설정이 까다롭고 시간이 걸리며, 설치 후에도 시스템에 에스큐엘 서버 인스턴스를 상주시키기 때문에 시스템이 무거워지게 된다. 따라서, 개발자가 이러한 복잡함 없이 로컬에서 즉시 데이터베이스 기능을 사용할 수 있도록 하기 위해 마이크로소프트에서는 로컬데이터베이스를 제공하고 있다. 엠에스에스큐엘 서버 익스프레스와 호환되며, 30MB 내외로 경량화된 에스큐엘 로컬데이터베이스 회로(SqlLocalDB.msi) 설치파일을 다운로드하여, 간단하게 설치 후에 사용할 수 있다. 에스큐엘서버(sqlserver.exe)가 항상 상주하는 것이 아니라, 필요할 때마다 인스턴스가 자동실행되고 사용 후 수 분 내에 자동 종료된다. 즉, 임베디드 데이터베이스와 같이 인 프로세스 동적 링크 라이브러리(In-process DLL) 방식으로 동작하지 않는다. 로컬데이터베이스는 엠에스에스큐엘 서버 익스프레스와 마찬가지로 에스큐엘 서버 관리 스튜디오(SSMS)로 접속할 수 있다.[8]
- 에스큐엘 서버 컴팩트 에디션(Server Compact Edition)
- 데스크톱 뿐만 아니라 모바일 제품군을 지원하는 유일한 제품이다. 엠에스에스큐엘 컴팩트 에디션은 임베디드 데이터베이스 버전이다. 즉, 배포된 프로그램 내에서 인 프로세스 데이터베이스로 동작하게 된다. 에스큐엘 서버 컴팩트 에디션은 공간 데이터 파일(.SDF)의 파일포멧을 이용하기 때문에 다른 마이크로소프트 에스큐엘 제품과 호환되지 않는다. 데이터베이스 크기나 컬럼타입 등 기능이 다소 제한적이지만, 트랜잭트 에스큐엘(T-SQL), 에스큐엘의 통합언어쿼리(LINQ), ADO.NET 등 개발에 유용한 기능들은 대부분 지원한다. 에스큐엘 서버 컴팩트를 사용한 데스크톱 프로그램이나 모바일 앱을 배포하려면, 대상 장치에 에스큐엘 서버 컴팩트가 설치되어 있어야 한다. 에스큐엘 컴팩트 에디션은 작고 설치가 간편하여 같은 임베디드 데이터베이스인 에스큐라이트(SQLite)에 비해 최대 1,000배 이상 빠르므로, 마이크로소프트 계열의 애플리케이션 및 데스크톱 프로그램에서 내장 데이터베이스로 주로 채택된다.[8]
각주[편집]
- ↑ 제로, 〈MS-SQL이란? 〉, 《네이버 블로그》, 2007-07-29
- ↑ 곰씨네 곰씨네 , 〈데이터베이스의 역사와 개념 〉, 《티스토리》, 2017-03-03
- ↑ 천재소녀, 〈MS-SQL의 특징〉, 《티스토리》, 2008-10-16
- ↑ 지구관리대원, 〈(MS SQL 강좌) 1. MSSQL DBMS를 알아보자〉, 《네이버 블로그》, 2014-04-07
- ↑ 똑똑이, 〈(MSSQL) SQL Server 소개 및 설치방법 on Windows〉, 《네이버 블로그》, 2019-01-04
- ↑ 아무것도아닌것이아닌, 〈MSSQL의 파일 구조〉, 《네이버 블로그》, 2016-01-29
- ↑ 도깨비, 〈MSSQL 일반 - 함수란? ( 스칼라,테이블 반환함수( 인라인, 다중 문 ) )〉, 《네이버 블로그》, 2011-07-07
- ↑ 8.0 8.1 8.2 8.3 찌니, 〈MSSQL 버전별 차이점〉, 《네이버 블로그》, 2018-10-18
참고자료[편집]
- 제로, 〈MS-SQL이란? 〉, 《네이버 블로그》, 2007-07-29
- 곰씨네 곰씨네, 〈데이터베이스의 역사와 개념 〉, 《티스토리》, 2017-03-03
- 천재소녀, 〈MS-SQL의 특징〉, 《티스토리》, 2008-10-16
- 지구관리대원, 〈(MS SQL 강좌) 1. MSSQL DBMS를 알아보자〉, 《네이버 블로그》, 2014-04-07
- 아무것도아닌것이아닌, 〈MSSQL의 파일 구조〉, 《네이버 블로그》, 2016-01-29
- 도깨비, 〈MSSQL 일반 - 함수란? ( 스칼라,테이블 반환함수( 인라인, 다중 문 ) )〉, 《네이버 블로그》, 2011-07-07
- 똑똑이, 〈(MSSQL) SQL Server 소개 및 설치방법 on Windows〉, 《네이버 블로그》, 2019-01-04
- kideagle, 〈MSSQL 버젼 확인 및 버젼별 정보〉,《티스토리》,2016-05-11
- 찌니, 〈MSSQL 버전별 차이점〉, 《네이버 블로그》, 2018-10-18
같이 보기[편집]