필요하신분 받아가세요~

이번엔 붙어야죠,,

'Study' 카테고리의 다른 글

토렌트  (0) 2011.07.24
데이터베이스 개념(1)  (0) 2011.04.20
데이터베이스 개념  (0) 2011.04.20
Database란?  (0) 2011.04.20
공부하자~!!  (0) 2011.04.20
토렌트 Study 2011. 7. 24. 10:43

'Study' 카테고리의 다른 글

정보처리기사 기출문제( 2003 ~ 2010 )  (1) 2011.08.10
데이터베이스 개념(1)  (0) 2011.04.20
데이터베이스 개념  (0) 2011.04.20
Database란?  (0) 2011.04.20
공부하자~!!  (0) 2011.04.20
데이터베이스 개념(1) Study 2011. 4. 20. 11:41

데이터베이스의 개념중에 혼돈이 되는 개념이 바로

파일과 데이터베이스의 차이죠..

데이터베이스는 실제로는 파일로 구성이 되어 있습니다.

하지만, 일반 파일과는 다르죠.(직접 열어서 작업을 하지 않죠.. 대신 DBMS가 모든 작업을 대신해줍니다. 물리적인 파일에 대한 작업이죠..)

데이터베이스에서 핵심 기술중에 한가지가 바로 이 파일구조이죠.

파일내부를 어떻게 저장할 것이며, 성능이나 안정성 측면까지 고려하여야 하니까요.

또한 데이터베이스안에는 데이터와 다양한 객체들이 존재하게 되죠.

이것들에 대한 부분도 포함이 되어 있습니다.

결론을 지어보면

"데이터베이스는 디스크상의 물리적인 파일이나, 일반 파일과는 다른 개념입니다.

사용자는 DBMS를 통해서 데이터에 대한 핸들링을 부탁하고, 실제 DBMS가 물리적인 파일의 내용을 핸들링 하는 것입니다."

"유저부분은 권한에 대한 것입니다. 일반적으로 스키마라고 부르며, 사용자에 객체에 대한 권한을 부여하는 방식으로 구성이 됩니다. 데이터베이스에 이런 내용도 모두 저장이 되게 됩니다. 오라클의 경우 롤이라는 개념(여러 권한을 묶어 놓은..)이 존재하며 이를 통해서 사용자에게 여러 권한을 한번에 줄수가 있습니다."

"권한과 롤 부분은 업무특성이나 데이터의 접근권한을 먼저 산출하고 권한과 롤을 정의하고 사용자에게 부여하는 방식입니다. 물론 그 이전에 테이블이 존재하여야 합니다."

'Study' 카테고리의 다른 글

정보처리기사 기출문제( 2003 ~ 2010 )  (1) 2011.08.10
토렌트  (0) 2011.07.24
데이터베이스 개념  (0) 2011.04.20
Database란?  (0) 2011.04.20
공부하자~!!  (0) 2011.04.20
데이터베이스 개념 Study 2011. 4. 20. 11:40

우선 알아두셔야 할것은

파일에서의 논리적이라는 단어의 뜻과 DB에서의 논리적이란 단어의 뜻이 같지 않다는것입니다.
파일에서 말하는 논리적 구조라 함은 파일에 저장되어진 복잡난해한 bit들이 일정
한 규칙에 따라 번역되어 용도에 맞게 사용될수 있도록 형성되는것을 말하는 것입
니다. 물론 반대로 저장되는것을 포함하지요.

하지만 DB에서 말하는 논리적이라는 단어는 파일의 경우와 같은 기계적인 논리를
포함한(좀더 포괄적인) 데이터적 측면에서의 논리 즉 파일에서 읽혀져서 번역된
(실상 이러한 물리적 논리의 부분은 DBMS가 맡아서 처리합니다.) 정보들이 일정
한 규칙들에 따라서 어떠한 의미(가치)를 가지게 되는가를 말하는 것입니다.

간단한 예를 들어보자면 A라는 파일이 존재하고 그 파일에는 B, C라는 정보를 가
지고 있다고 할때 파일에서 말하는 논리성이란 A파일에 XByte~Xbyte 까지는 B,
XByte~Xbyte 까지는 C라고 변역될수 있게 되는 것을 말하는 것이면, DB에서의
논리성이란 B정보는 어떤 의미의 데이터 이고 C정보는 어떤 다른 의미의 데이터이
며 B와 C는 어떤 관계성을 가지고 있다 라고 하는 데이터적인 논리성이 더 추가
된 것을 말하는 것입니다.

실제로 이러한 데이터적 논리성을 배제한 순수한 파일만으로 구성되어진 데이터베이스를 파일 베이스 DB라고 칭하기도 합니다.

간단하게 말해서 파일은 데이터가 물리적으로 어떻게 저장되는가 말하는 것이라면
데이터베이스는 데이터들이 어떠한 의미와 목적, 가치, 관련성을 가지고 있는가
말하는것이라 하겠습니다.



유저와 데이터베이스의 관계

유저와 데이터베이스(DB 안에 생성되어진)는 어느것 하나에 종속적으로 구성되는것이 아니라 서로 독립적으로 구성됩니다. 각각의 정보는 DB안에서 DBA유저만
접근가능한 영역(데이터베이스 입니다 ^^;)에 저장, 관리되게 됩니다.

DB의 설치시 선언된 DBA유저는(오라클 : sys 유저, mysql : root 유저) 데이터
베이스의 생성, 수정, 삭제 및 유저의 생성, 수정, 삭제, 특정 유저와 특정
데이터베이스간의 접근허용여부, 특정 유저의 허용된 데이터 베이스에서의 권한
설정등등의 DB 전반에 관한 관리 권한을 가지는 유저입니다.
이러한 일련의 정보 역시 모두 DBA유저만 접근가능한 데이터베이스에 저장, 관리
됩니다. 또한 하나의 데이터베이스는 여러 유저들에게 접근이 허용될수 있으며,
반대로 하나의 유저는 여러 데이터베이스에 접근이 허용될수 있습니다.

즉 질문자님 께서 쓰셨던

'유저 이름과 데이터베이스는 완전히 분리된 것이어서...어떤 다른 유저 이름으로
접속해도 각각의 데이터베이스에서 설정된 권한의 유무에 따라 접속이 되고 안 되
고가 결정되는 것인가요'

이 맞는 개념 입니다만 단지

'???그럼 각각의 데이터베이스에는 권한 설정을 위한 별도의 테이블
이 자동으로 만들어 지는 건가요???'

여기에서 각각의 데이터베이스에 별도의 테이블이 자동 생성되는 것이 아니라,
DBA유저만 접근 가능한 데이터베이스에 유저의 권한, 생성된 데이터베이스,
연결관계 등등으로 이미 정의된 테이블들에 데이터로 저장되게 됩니다.

테이블을 쉽게 말하면, 동일한 속성을 갖는 데이터의 구조체를 말하는 것입니다.
유저는 아이디와 비번이라는 데이터가진다고 할때, 테이블은 C에서 구조체를 선언
하듯 테이블이름(구조체이름), 아이디(변수 아이디), 비번(변수 비번)으로 선언함
으로써 생성되며, 실제의 데이터들은 테이블의 정의 형태로 데이터를 저장하게
되는것입니다.



유저A 정보 테이블, 유저B 정보 테이블을 따로 생성하는게 아니라,
유저정보 라는 테이블에 유저A 정보, 유저B 정보, 유저C 정보 .... 식으로 저장
되는 것입니다.

이러한 테이블은 데이터베이스에 테이블 관련 권한을 갖는 유저의 의도와 목적, 데이터의 의미와 관련성, 시스템적인 필요 등에 따라서 유저가 만들게 됩니다.

데이터베이스는 DBA유저가 데이터 접근 및 관리 효율성, 보안, 시스템간의 상호
베타적인 데이터의 구분 등을 목적으로 생성하게 됩니다. 이에 따라 DBA유저는
각각의 데이터베이스에 접근, 테이블 관리, 데이터 관리 권한을갖는 유저를 생성
혹은 기존 유저에 권한을 부여하여주게 됩니다.

유저는 특정의 데이터베이스로 접근, 관리, 데이터 관리, 데이터 조회 등의 권한
을 DBA유저로 부터 부여받아 자신의 권한을 가지고 있는 데이터베이스로 접근,
부여받은 행위를 하게 됩니다.

간단하게 말하자면

테이블은 동일한 속성을 갖는 데이터들의 구조와 집합을 말하는 것이며
데이터베이스는 시스템 혹은 데이터적으로 관련성을 가지고 있는 데이터의
집합체 및 저장소를,
유저는 이러한 데이터베이스의 접근, 구조체 관리, 데이터 관리, 조회 등의 권한
을 갖는 사용자를 말하는 것입니다.

'Study' 카테고리의 다른 글

토렌트  (0) 2011.07.24
데이터베이스 개념(1)  (0) 2011.04.20
Database란?  (0) 2011.04.20
공부하자~!!  (0) 2011.04.20
키의 무결성  (0) 2011.04.20
Database란? Study 2011. 4. 20. 11:39

1. 데이터베이스란?

데이터베이스란 무엇이가를 저장해 두는 곳이라고 우선 정의할수 있습니다. 이때 무엇인가에 포함되는 것은 테이블(Table), 뷰(View), 인덱스(Index), 저장 프로시져(Stored Procedure), 트리거(Trigger)와 같은 객체(Object)들 입니다.데이터베이스의 객체에 대해서는 예전에 간략하게 설명한적이 있습니다. 머지 않아 각각의 객체들에 대해서 엄청 많이 이야기하게 될것 같습니다.

2. 데이터베이스를 구성하는 파일

SQL Server의 데이터베이스는 운영체제 상에서 보면 확장자가 mdf(또는 ndf)와 ldf 인 파일로 존재하게 됩니다. 예를 들어 연습용 데이터베이스인 pubs 데이터베이스의 경우는 pubs.mdf와 pubs_log.ldf 두개의 파일이 존재합니다.

데이터베이스는 데이터와 로그로 분리되어 저장됩니다. 데이터의 경우는 mdf 확장자(또는 ndf)를 갖으며, 로그의 경우는 ldf 확장자를 갖고 저장됩니다.

확장자(mdf, ndf, ldf)는 반드시 정해진 것이 아니며 원하는 경우 바꿀 수가 있지만 되도록 그대로 사용하는것이 바람직합니다.

확장자를 봄으로써 어떤 역할을 하는 파일인지 구분을 할 수 있기 때문입니다.

만일 pubs.mdf를 pubs.doc 으로 한다면 워드파일이지 데이터 파일이라고 생각 할 수 없기 때문입니다.(만든 사람만 알 수 있겠지요)

다음의 그림은 데이터베이스의 구조를 간단히 보여주고 있습니다.

) 데이터 파일(*.mdf, *.ndf)

실제 자료를 저장합니다. 기본적으로 데이터 파일은 하나만 있어도 되지만 필요하면 더 만들 수 있습니다. 처음 만들어진 파일이 mdf 확장자를 갖게 되며 추가되는 파일은 확장자가 ndf 가 됩니다.

2) 로그 파일(*.ldf)

로그는 트랜잭션 처리와 시스템에 문제가 발생했을 때 복구를 위해 사용됩니다. 보통 데이터 파일의 25% 정도의 사이즈를 갖습니다.

3. Page와 Extents

저는 계산하는 것을 참 싫어 합니다. 하지만 여기서는 약간의 계산을 해보고자 합니다.

1) Page

데이터는 8KB 단위의 블럭을 단위로 저장되는데 이를 페이지(Page)라고 합니다. 결과적으로 데이터베이스는 1MB에는 128Page를 저장 할 수 있게됩니다. 하나의 Row는 여러개의 Page에 걸쳐 저장 될 수 없고 단 하나의 Page에만 저장 될 수 있습니다. 이 사실을 통해 하나의 Row(데이터 레코드로 생각하셔도 됩니다.)의 최대 사이즈는 8060 바이트입니다. 계산해보면 8 X 1024 는 8192 입니다. 하지만 8192바이트를 Row가 전부 차지하지 못하는 이유는 몇가지 정보를 저장하기 위한 약간의 공간(8192 - 8060 = 132)이 필요하기 때문입니다. 간단히 설명한다면 페이지 헤더가 이 공간중에 96KB를 사용하게 되고 나머지는 각 Row가 저장되고 관리되기 위한 몇몇 정보를 기록하는데 사용됩니다.

2) Extent

테이블과 인덱스는 Extent에 저장됩니다. Extent란 8개의 연속된 페이지를 가리킵니다. 1 Page가 8KB 이므로 1 Extent는 64KB(8 KB X 8) 입니다.

'Study' 카테고리의 다른 글

데이터베이스 개념(1)  (0) 2011.04.20
데이터베이스 개념  (0) 2011.04.20
공부하자~!!  (0) 2011.04.20
키의 무결성  (0) 2011.04.20
관계형 DB 구조  (0) 2011.04.20