검수요청.png검수요청.png

"엠에스에스큐엘"의 두 판 사이의 차이

해시넷
이동: 둘러보기, 검색
22번째 줄: 22번째 줄:
 
*특수한 페이지: [[GAM]](Global Allocation Map)은 어떤 익스텐트가 할당 사용되었는지를 알려주는 페이지이다. [[SGAM]](Shared Global Allocation Map)은 어떤 익스텐트가 현재 혼합 익스텐트로 사용 되는지와, 적어도 하나 이상의 사용되지 않은 페이지를 가지는지를 알려주는 페이지다. 이 두개의 페이지의 내용으로 에스큐엘 서버는 어느 익스텐트가 할당 되었는지, 믹스드 익스텐트인지, 빈 페이지가 있는지 등등의 정보를 알 수 있다. GAM과 SGAM 두개의 페이지는 각각 4GB의 데이터를 처리 할 수 있다. 이 말은 데이터 파일이 4GB를 넘어서면 그 파일에는 GAM과 SGAM이 두 개씩 있다는 말이다. [[PFS]](Page Free Space)는 페이지의 각각의 페이지가 사용하도록 할당 되었는지 여부와, 각각의 페이지의 빈 공간의 양을 기록한다. 페이지의 빈공간은 비어있음 / 1~50% 채워짐 / 51~80% 채워짐 / 81~95% 채워짐 / 96~100% 채워짐으로 기록한다. 페이지의 빈공간은 [[텍스트]]/[[이미지]] 페이지에 대해서만 관리한다. 데이터 파일은 페이지로 나뉘어 있는데, 페이지 번호는 0번부터 시작한다. 0번은 [[파일헤더]] 페이지, 1번은 PFS 페이지, 2번은 GAM 페이지, 3번은 SGAM 페이지등의 순서대로 페이지가 할당된다.<ref>아무것도아닌것이아닌,〈[https://m.blog.naver.com/PostView.nhn?blogId=ted1lee&logNo=220612369811&proxyReferer=https:%2F%2Fwww.google.com%2F MSSQL의 파일 구조]〉, 《네이버 블로그》, 2016-01-29</ref>
 
*특수한 페이지: [[GAM]](Global Allocation Map)은 어떤 익스텐트가 할당 사용되었는지를 알려주는 페이지이다. [[SGAM]](Shared Global Allocation Map)은 어떤 익스텐트가 현재 혼합 익스텐트로 사용 되는지와, 적어도 하나 이상의 사용되지 않은 페이지를 가지는지를 알려주는 페이지다. 이 두개의 페이지의 내용으로 에스큐엘 서버는 어느 익스텐트가 할당 되었는지, 믹스드 익스텐트인지, 빈 페이지가 있는지 등등의 정보를 알 수 있다. GAM과 SGAM 두개의 페이지는 각각 4GB의 데이터를 처리 할 수 있다. 이 말은 데이터 파일이 4GB를 넘어서면 그 파일에는 GAM과 SGAM이 두 개씩 있다는 말이다. [[PFS]](Page Free Space)는 페이지의 각각의 페이지가 사용하도록 할당 되었는지 여부와, 각각의 페이지의 빈 공간의 양을 기록한다. 페이지의 빈공간은 비어있음 / 1~50% 채워짐 / 51~80% 채워짐 / 81~95% 채워짐 / 96~100% 채워짐으로 기록한다. 페이지의 빈공간은 [[텍스트]]/[[이미지]] 페이지에 대해서만 관리한다. 데이터 파일은 페이지로 나뉘어 있는데, 페이지 번호는 0번부터 시작한다. 0번은 [[파일헤더]] 페이지, 1번은 PFS 페이지, 2번은 GAM 페이지, 3번은 SGAM 페이지등의 순서대로 페이지가 할당된다.<ref>아무것도아닌것이아닌,〈[https://m.blog.naver.com/PostView.nhn?blogId=ted1lee&logNo=220612369811&proxyReferer=https:%2F%2Fwww.google.com%2F MSSQL의 파일 구조]〉, 《네이버 블로그》, 2016-01-29</ref>
 
== 함수 ==
 
== 함수 ==
엠에스에스큐엘 [[디비]](DB) 안에 있는 [[함수]]라는 개체는 우리가 프로그램 언어에서 사용한 함수하고 동일하다. 값을 하나만 리턴하는 [[스칼라]] 함수 부터 [[테이블]]을 반환하는 함수 등이 있다. 함수는 프로그램과 마찬가지로 재사용성을 높이기 위해 만들어 졌다. 성능 쪽에서는 손해를 볼지라도 유지보수 및 개발 시 아주 유용하다. 디비 관련 [[프로그램]]에서 [[저장프로시져]], [[에스큐엘]](SQL) 문 등에서 공통적으로 사용하는 부분들이 있다. 매우 길게 작업되는 내용도 함수쪽에만 그 [[로직]](logic)이 들어가고 결국 사용하는 부분은 단순히 함수명과 [[인자값]], [[리턴값]]만 조절하면 편하게 쓸수 있다. 나중에 로직이 바뀌어도 함수부분만 바꾸면 적용이 되니 매우 효율적인 [[객체]]다. 함수는 크게 생성 주체에 따라 시스템 함수, 사용자 함수로 나눈다. [[시스템 함수]]는 [[데이터베이스 관리 시스템]](DBMS)에서 제공하는 거라 수정할 수는 없고 여러가지 [[타입]]이 만들어져 있다. 개발자들이 만들 수 있는 [[사용자 함수]]에는 [[스칼라]] 함수, [[테이블]] 반환 함수 등 2가지 유형이 있다. 스칼라함수는 단일 [[데이터]]를 리턴하는 함수다. 가장 많이 사용되는 함수다. 시스템 함수들 대부분도 스칼라 함수다. 테이블 반환 함수는 말 그대로 [[리턴값]]이 테이블이다. 스칼라 함수처럼 하나의 값이 아닌 테이블이다. 리턴되는 테이블에 따라 인 라인 테이블 반환 함수와 다중 문 테이블 반환 함수로 나눌 수 있다.
+
엠에스에스큐엘 [[디비]](DB) 안에 있는 [[함수]]라는 개체는 우리가 프로그램 언어에서 사용한 함수하고 동일하다. 값을 하나만 리턴하는 [[스칼라]] 함수 부터 [[테이블]]을 반환하는 함수 등이 있다. 함수는 프로그램과 마찬가지로 재사용성을 높이기 위해 만들어 졌다. 성능 쪽에서는 손해를 볼지라도 유지보수 및 개발 시 아주 유용하다. 디비 관련 [[프로그램]]에서 [[저장프로시져]], [[에스큐엘]](SQL) 문 등에서 공통적으로 사용하는 부분들이 있다. 매우 길게 작업되는 내용도 함수쪽에만 그 [[로직]](logic)이 들어가고 결국 사용하는 부분은 단순히 함수명과 [[인자값]], [[리턴값]]만 조절하면 편하게 쓸수 있다. 나중에 로직이 바뀌어도 함수부분만 바꾸면 적용이 되니 매우 효율적인 [[객체]]다. 함수는 크게 생성 주체에 따라 시스템 함수, 사용자 함수로 나눈다. [[시스템 함수]]는 [[데이터베이스 관리 시스템]](DBMS)에서 제공하는 거라 수정할 수는 없고 여러가지 [[타입]]이 만들어져 있다. 개발자들이 만들 수 있는 [[사용자 함수]]에는 [[스칼라]] 함수, [[테이블]] 반환 함수 등 2가지 유형이 있다. 스칼라함수는 단일 [[데이터]]를 리턴하는 함수다. 가장 많이 사용되는 함수다. 시스템 함수들 대부분도 스칼라 함수다. 테이블 반환 함수는 말 그대로 [[리턴값]]이 테이블이다. 스칼라 함수처럼 하나의 값이 아닌 테이블이다. 리턴되는 테이블에 따라 인 라인 테이블 반환 함수와 다중 문 테이블 반환 함수로 나눌 수 있다.<ref>도깨비, 〈[https://m.blog.naver.com/PostView.nhn?blogId=rocabilly&logNo=140133522180&proxyReferer=https:%2F%2Fwww.google.com%2F MSSQL 일반 - 함수란? ( 스칼라,테이블 반환함수( 인라인, 다중 문 ) )]〉, 《네이버 블로그》, 2011-07-07</ref>
 
{{각주}}
 
{{각주}}
  

2020년 8월 4일 (화) 11:14 판

엠에스에스큐엘(MS-SQL)
엠에스에스큐엘(MS-SQL)

엠에스에스큐엘(MS-SQL)은 미국 마이크로소프트사에서 개발한 관계형 데이터베이스 관리 시스템(RDBMS)이다. 마이크로소프트 에스큐엘 서버(Microsoft SQL Server)라고도 한다. 윈도우(Windows) 기반의 아이아이에스(IIS) 서버에서 주로 사용한다. 주로 영어로 MS-SQL이라고 쓰지만, 중간에 옆줄을 빼고 MSSQL이라고 쓰기도 한다.

개요

엠에스에스큐엘은 일종의 운영자가 웹브라우저를 관리 함에 있어 사용자의 회원관리라던지, 쇼핑몰에서 물품목록을 리스트별로 볼수 있도록 구현을 해주고 데이터베이스(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)에 의한 데이터 무결성의 지원이다. 트랜잭션(transaction) 기반으로 완전한 무결성을 구축이 가능하다.
  • 다양한 분산 데이터 처리기능을 지원한다. 정보의 배포를 위한 내장된 복제 기능이 있고, 적시에 정확한 정보를 필요한 사람에게 제공한다. 상당히 범용적인 복제 전략을 구축이 가능해지며, 대용량 데이터베이스를 지원한다.[3]

장점과 단점

엠에스에스큐엘의 장점으로는 데이터베이스 관리 시스템(DBMS, Database Management System)의 툴인 Microsoft SQL Server Management Studio의 사용이 매우 편리하고 잘 만들어져 있다. 많은 기능들이 마법사로 구성되어 있어 에스큐엘(SQL)을 몰라도 백업, 튜닝, 스케줄, 레플리케이션(복제)등의 관리가 가능하다. 엠에스에스큐엘 디비(DB)는 결과값에 대한 멀티 레코드셋을 지원해서 개발에 편리함을 준다. 버전이 올라갈수록 편리한 기능을 추가해 주는 등이 있고 단점으로는 가격정책이 일괄적이지 못하다는것과 어느 사용시점부터는 비용이 많이 들어간다. 또한 버전(version)이 올라갈수록 새로운 기능이 추가되는것과 같이 새로운 형태로 발표되어 기존 사용자들이 따라가기 쉽지 않다는 이유 등이 있다.[4]

파일 구조

  • 물리적인 파일: 엠에스에스큐엘의 물리적 파일은 기본적으로 두가지가 있다. 데이터 파일은 실제 데이터가 들어가는 파일이고, 이 파일은 MDFNDF로 나뉜다. MDF는 처음으로 생성되는 데이터 파일이고 NDF는 두번째부터 생성되는 데이터 파일이다. 데이터 파일을 여러 개로 나누는 경우는 성능을 위해서다. 로그 파일은 로그를 기록하는 파일이고 LDF가 있다. 엠에스에스큐엘 서버에서의 디비(DB) 파일은 두개의 이름을 가지고 있다. OS사에서 볼 수 있는 물리적 파일 이름과, 이 물리적 파일을 관리하기 위한 논리적 파일 이름을 가지고 있다. 이 논리적 파일의 이름은 주로 데이터베이스 관리 시스템(DBMS)가 자체로 사용한다.
  • 데이터 파일의 논리적인 구조: 데이터 파일의 속에 논리적인 구조는 페이지(Page), 페이지가 여러 개 모인 익스텐트, 익스텐트가 여러개 모여 파일(file)이 된다. 익스텐트는 8개의 페이지가 합쳐져서 만들어진 단위다. 하나의 페이지는 8KB 크기를 가지며, 이 파일 8개가 모여서 익스텐트가 되므로, 익스텐트의 크기는 64KB 이다. 익스텐트의 종류중 하나인 믹스드 익스텐트는 하나의 익스텐트 안에 여러 개 테이블의 페이지가 혼합되어 들어 있는 것 이고, 유니폼 익스텐트는 하나의 익스텐트 안에 하나의 테이블의 페이지만 들어 있는 익스텐트다. 기본적으로 엠에스에스큐엘 서버(Server)는 테이블이 생성되고 페이지가 생성될 때 믹스드 익스텐트에 페이지를 생성한다. 따라서, 데이터 파일을 최초에 만들면 익스텐트는 믹스드 익스텐트가 생성이 된다.
  • 특수한 페이지: GAM(Global Allocation Map)은 어떤 익스텐트가 할당 사용되었는지를 알려주는 페이지이다. SGAM(Shared Global Allocation Map)은 어떤 익스텐트가 현재 혼합 익스텐트로 사용 되는지와, 적어도 하나 이상의 사용되지 않은 페이지를 가지는지를 알려주는 페이지다. 이 두개의 페이지의 내용으로 에스큐엘 서버는 어느 익스텐트가 할당 되었는지, 믹스드 익스텐트인지, 빈 페이지가 있는지 등등의 정보를 알 수 있다. GAM과 SGAM 두개의 페이지는 각각 4GB의 데이터를 처리 할 수 있다. 이 말은 데이터 파일이 4GB를 넘어서면 그 파일에는 GAM과 SGAM이 두 개씩 있다는 말이다. PFS(Page Free Space)는 페이지의 각각의 페이지가 사용하도록 할당 되었는지 여부와, 각각의 페이지의 빈 공간의 양을 기록한다. 페이지의 빈공간은 비어있음 / 1~50% 채워짐 / 51~80% 채워짐 / 81~95% 채워짐 / 96~100% 채워짐으로 기록한다. 페이지의 빈공간은 텍스트/이미지 페이지에 대해서만 관리한다. 데이터 파일은 페이지로 나뉘어 있는데, 페이지 번호는 0번부터 시작한다. 0번은 파일헤더 페이지, 1번은 PFS 페이지, 2번은 GAM 페이지, 3번은 SGAM 페이지등의 순서대로 페이지가 할당된다.[5]

함수

엠에스에스큐엘 디비(DB) 안에 있는 함수라는 개체는 우리가 프로그램 언어에서 사용한 함수하고 동일하다. 값을 하나만 리턴하는 스칼라 함수 부터 테이블을 반환하는 함수 등이 있다. 함수는 프로그램과 마찬가지로 재사용성을 높이기 위해 만들어 졌다. 성능 쪽에서는 손해를 볼지라도 유지보수 및 개발 시 아주 유용하다. 디비 관련 프로그램에서 저장프로시져, 에스큐엘(SQL) 문 등에서 공통적으로 사용하는 부분들이 있다. 매우 길게 작업되는 내용도 함수쪽에만 그 로직(logic)이 들어가고 결국 사용하는 부분은 단순히 함수명과 인자값, 리턴값만 조절하면 편하게 쓸수 있다. 나중에 로직이 바뀌어도 함수부분만 바꾸면 적용이 되니 매우 효율적인 객체다. 함수는 크게 생성 주체에 따라 시스템 함수, 사용자 함수로 나눈다. 시스템 함수데이터베이스 관리 시스템(DBMS)에서 제공하는 거라 수정할 수는 없고 여러가지 타입이 만들어져 있다. 개발자들이 만들 수 있는 사용자 함수에는 스칼라 함수, 테이블 반환 함수 등 2가지 유형이 있다. 스칼라함수는 단일 데이터를 리턴하는 함수다. 가장 많이 사용되는 함수다. 시스템 함수들 대부분도 스칼라 함수다. 테이블 반환 함수는 말 그대로 리턴값이 테이블이다. 스칼라 함수처럼 하나의 값이 아닌 테이블이다. 리턴되는 테이블에 따라 인 라인 테이블 반환 함수와 다중 문 테이블 반환 함수로 나눌 수 있다.[6]

각주

  1. 제로, 〈MS-SQL이란? 〉, 《네이버 블로그》, 2007-07-29
  2. 곰씨네 곰씨네 , 〈데이터베이스의 역사와 개념 〉, 《티스토리》, 2017-03-03
  3. 천재소녀 ,〈MS-SQL의 특징〉, 《티스토리》, 2008-10-16
  4. 지구관리대원,〈(MS SQL 강좌) 1. MSSQL DBMS를 알아보자〉, 《네이버 블로그》, 2014-04-07
  5. 아무것도아닌것이아닌,〈MSSQL의 파일 구조〉, 《네이버 블로그》, 2016-01-29
  6. 도깨비, 〈MSSQL 일반 - 함수란? ( 스칼라,테이블 반환함수( 인라인, 다중 문 ) )〉, 《네이버 블로그》, 2011-07-07

참고자료

같이 보기


  검수요청.png검수요청.png 이 엠에스에스큐엘 문서는 데이터에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.