관리 메뉴

Rootable의 개발일기

데이터베이스 관리 대상 본문

데이터베이스

데이터베이스 관리 대상

dev-rootable 2023. 9. 8. 16:24

📌 데이터베이스란

 

데이터베이스는 물리 데이터 모델을 구현한 결과물이며 구축된 실제 데이터가 저장되는 데이터 저장소를 의미한다.

 

데이터베이스 내에서 생성된 모든 객체는 DBMS 자체의 데이터 사전에 의해 관리된다.

 

데이터 사전(Data Dictionary)

데이터베이스를 구성하고 운영하는 데 필요한 모든 정보를 저장하는 특수한 테이블로 데이터베이스가 생성되는 시점에 자동으로 만들어진다.

오라클 데이터베이스는 명령이 실행될 때마다 데이터 사전을 Access 한다.

데이터베이스 작업 동안 오라클은 데이터 사전을 읽어 객체의 존재여부와 사용자에게 적합한 Access 권한이 있는지를 확인한다. 또한 오라클은 데이터 사전을 계속 갱신하며 DATABASE 구조, 감사, 사용자 권한, 데이터 등의 변경 사항을 반영한다.

저장되는 정보

 - 오라클의 사용자 정보
 - 오라클 권한과 롤 정보
 - 데이터베이스 스키마 객체(TABLE, VIEW, INDEX, CLUSTER, SYNONYM, SEQUENCE..) 정보
 - 무결성 제약조건에 관한 정보
 - 데이터베이스의 구조 정보
 - 오라클 데이터베이스의 함수와 프로시저 및 트리거에 대한 정보
 - 기타 일반적인 DATABASE 정보

 

📌 저장 공간

 

저장 공간은 데이터베이스에서 데이터를 저장할 공간을 필요로 하는 테이블과 인덱스를 정의하는 영역(Tablespaces, Data File)이다. 데이터베이스에서 운영하는
모든 정보는 대표적으로 테이블과 인덱스로 구분되어 저장되며, 데이터 관리의 시작이라 볼 수 있다. 저장 공간은 다음과 같은 기준에 따라 관리되어야 한다.

 

🔎 안정성

 

저장 공간을 위한 시스템의 디스크 영역은 안전하게 보호되어야 하므로, 시스템의 다른 프로그램 수행 영역으로부터 격리되어야 한다. 이를 위해 보통은 DBMS 전용 서버를
운영하기도 한다. 또한, 외부의 위협이나 재해로부터 저장 공간의 존재가 보호되어야 한다.

 

🔎 보안성

 

허가받지 않은 프로그램이나 사용자에 대하여 완전하게 접근 제어가 이루어져야 한다.

 

🔎 확장성

 

데이터는 지속적으로 증가할 수 있으므로 저장 공간의 확장과 물리적 디스크 영역의 할당이 충분하고 편리하게 수행되어야 한다.

 

🔎 성능 보장

 

데이터베이스 관리자(DBA)는 관리 기준에 따라 성능과 보안을 고려하여 시스템의 저장 공간을 수시로 확인하여 데이터의 최종 보안과 안정성을 제일의 목적으로
관리
해야 한다. 또한 개발자나 사용자의 편의에 따라 무분별하게 데이터가 확장되는 것을 제어하고 저장 공간에 대한 백업도 병행되어야 한다.

 

📌 테이블(Table)

 

단일 주제에 관해 행과 열로 구성되는 정보 모음

 

📌 제약 조건(Constraint)

 

제약 조건이란 데이터의 무결성을 지키기 위해 입력받은 데이터에 대한 제한을 두는 것을 의미한다.

 

🔎 종류

 

1. NOT NULL : 해당 필드는 NULL 값을 저장할 수 없음

 

CREATE TABLE 테이블 (
    필드명 INT NOT NULL
);

 

2. UNIQUE : 중복된 값을 저장할 수 없음

 

//기본 UNIQUE
CREATE TABLE 테이블 (
    필드명 INT UNIQUE
);

//제약 조건에 이름 부여
CREATE TABLE 테이블 (
    필드명 INT,
    ...
    CONSTRAINT 제약 조건 UNIQUE 필드명
);

 

3. PRIMARY KEY : 기본키를 지정하는 제약 조건, 해당 필드는 NOT NULL과 UNIQUE 제약 조건이 모두 적용됨

 

//기본 PRIMARY
CREATE TABLE 테이블 (
    필드명 INT PRIMARY KEY
);

//제약 조건에 이름 부여
CREATE TABLE 테이블 (
    필드명 INT
    ...
    CONSTRAINT 제약 조건 PRIMARY KEY 필드명
);

 

4. FOREIGN KEY : 한 테이블을 다른 테이블과 연결하여 외래키를 지정하는 제약 조건, 해당 테이블은 다른 테이블에 의존

 

CREATE TABLE 테이블 (
    필드명 INT,
    ...
    CONSTRAINT 제약 조건 FOREIGN KEY (필드명)
    REFERENCES 테이블명 (필드명)
);

 

특정 테이블의 삭제 및 수정 시, 연관된 필드가 어떤 동작을 수행할지 지정해 줄 수 있다.

 

//삭제 및 수정 시 연관된 필드도 삭제 및 수정
ON DELETE CASCADE
ON UPDATE CASCADE

//삭제 및 수정 시 연관된 필드를 NULL로 셋팅
ON DELETE SET NULL
ON UPDATE SET NULL

//삭제 및 수정 시 연관된 필드를 기본값으로 설정
ON DELETE SET DEFAULT
ON UPDATE SET DEFAULT

//참조하는 테이블에 데이터가 있으면 삭제 및 수정 불가
ON DELETE RESTRICT
ON UPDATE RESTRICT

 

5. DEFAULT : 해당 필드의 기본 값을 설정할 수 있게 해주는 제약 조건

 

CREATE TABLE 테이블 (
    필드명 INT DEFAULT '기본값'
);

 

📌 인덱스(Index)

 

https://dev-rootable.tistory.com/105

 

인덱스(Index)

📌 인덱스란? 만약 다음과 같은 데이터베이스에서 age가 23인 사원을 찾아야 한다면 컴퓨터는 조건에 맞는 값을 찾을 때까지 검색을 계속할 것이다. 그런데 만약 데이터가 1억 개가 된다면 해당

dev-rootable.tistory.com

 

📌 트리거(Trigger)

 

트리거는 테이블과 연계되어서 미리 규정된 함수를 수행한다. 특정 Tuple(Row, Record)에 대한 이벤트에 반응하여 INSERT, DELETE, UPDATE와 같은 DML 문이 수행되었을 때, 데이터베이스에서 자동으로 동작하도록 작성된 프로그램이다.

 

사용자가 직접 호출하는 것이 아닌 데이터베이스에서 자동적으로 호출한다는 것이 큰 특징이다.

 

트리거는 실행될 때 다른 트리거를 연쇄적으로 기동 할 수 있다. 따라서 트리거의 생성과 사용은 신중하게 정의되어야 한다.

 

동일 테이블에 동일한 이벤트를 지정하는 하나 이상의 트리거를 정의할 수 있으나, 이는 트리거의 기동 순서를 예측할 수 없게 한다.

 

📌 DB 링크

 

분산 서버 환경에서 하나의 서버에서 다른 서버 혹은 다른 데이터베이스 인스턴스에 위치하는 테이블의 데이터를 손쉽게 호출하기 위해 정의한다.

 

📌 프로시저(Procedure)

 

특정한 로직을 처리하기만 하고 결과 값을 반환하지 않는 서브 프로그램으로 데이터베이스에 대한 일련의 작업을 정리한 절차를 RDBMS가 저장한 것을 말한다. 테이블에서 데이터를 추출, 조작하고 결과를 다른 테이블에 다시 저장하거나 갱신하는 처리를 할 때 프로시저를 사용한다.

 

🔎 장점

 

  • 하나의 요청으로 여러 SQL문 실행 가능
  • 네트워크 소요 시간을 줄여 성능 개선 가능
  • 여러 애플리케이션과 공유 가능
  • 프로시저만 변경하면 특정 기능을 손쉽게 변경 가능

 

🔎 단점

 

  • 문자나 숫자열 연산에 사용하면 자바보다 느린 성능을 보일 수 있음
  • 프로시저가 앱의 어떤 부분에 사용되는지 확인이 어려워 유지보수가 어려움

 

🔎 생성 예시

 

CREATE OR REPLACE PROCEDURE 프로시저명
(파라미터1 IN | OUT | IN OUT, ...);

IS[AS]
변수, 상수 등을 선언

BEGIN
로직을 실행할 쿼리문

[EXCEPTION 예외처리]

END 프로시저명;

 

📌 뷰(View)

 

사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 테이블로부터 유도된 이름을 가지는 가상 테이블을 말한다.

 

아래 뷰는 구매이력이 없는 고객 정보를 담았으며, 해당 고객의 이름과 연락처 정보만으로 구성되었다.

 

CREATE VIEW 뷰이름[(속성이름[,속성이름])] AS SELECT문;

CREATE VIEW 구매이력이 없는 고객(이름, 연락처)
AS SELECT 이름 연락처
FROM 회원
LEFT JOIN 주문 ON 회원.회원ID = 주문.회원ID
WHERE 주문.주문ID IS NULL;

 

🔎 특징

 

  • 기본 테이블로부터 유도된 테이블이므로, 같은 형태의 구조를 사용
  • 가상 테이블, 물리적으로 구현되어 있지 않음
  • 데이터의 논리적 독립성 제공
  • 필요한 데이터만 뷰로 정의해서 처리할 수 있어 관리가 용이하고 명령문이 간단해짐
  • 뷰를 통해서만 데이터에 접근하게 하면 뷰에 나타나지 않는 데이터를 보호할 수 있음
  • 기본 테이블의 기본키를 포함한 속성 집합으로 뷰를 구성해야 DML 가능
  • 뷰는 다른 뷰에서 사용할 수 있음
  • 해당 뷰의 기초가 된 테이블이나 뷰를 삭제하면 해당 뷰도 자동으로 삭제됨

 

📌 동의어(Synonym)

 

ALIAS 같이 테이블의 이름을 설정해 주는 것을 말한다. 보통 다른 유저의 객체(테이블, 뷰, 프로시저, 시퀀스 등)를 참조할 때 많이 사용한다.

 

실제로 동의어를 사용하는 이유는 다른 유저의 객체를 사용할 때 유저의 이름과 객체의 실제 이름을 사용하는데, 그 두 개를 감춤으로써 데이터베이스의 보안을 개선하기 위해 사용된다. 즉, 동의어만으로 다른 유저의 객체에 접근할 수 있다.

 

🔎 사용법

 

//생성
CREATE [PUBLIC] SYNONYM [시노님 이름]
FOR [회원명.테이블명];

SELECT * FROM 시노님 이름; //조회

DROP SYNONYM 시노님 이름; //삭제

 

📌 롤(Role)

 

데이터베이스 객체에 대하여 수행하는 작업 권한에 대한 그룹을 만든다. 이것을 부여하고 제거할 수 있는 사람은 관리자뿐이다.

 

References:

https://dataonair.or.kr/db-tech-reference/d-guide/da-guide/?pageid=1&mod=document&keyword=%EB%8D%B0%EC%9D%B4%ED%84%B0+%EC%82%AC%EC%A0%84&uid=317 

 

데이터베이스

정의 및 관리 목적 데이터베이스는 물리 데이터 모델을 구현한 결과물이며 구축된 실제 데이터가 저장되는 데이터 저장소를 의미한다. 물리 데이터 모델이 구현된 데이터베이스 저장소인 테이

dataonair.or.kr

 

http://www.gurubee.net/lecture/1520

 

데이터 사전(Data Dictionary)이란?

데이터 사전(Data Dictionary)이란 데이터 사전(Data Dictionary)이란 대부분 읽기전용으로 제공되는 테이블 및 뷰들의 집합으로 데이터베이스 전반..

www.gurubee.net

 

https://wildwolf.tistory.com/entry/%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-%EA%B0%9D%EC%B2%B4-%EC%A2%85%EB%A5%98-%EB%8D%B0%EC%9D%B4%ED%84%B0%EC%82%AC%EC%A0%84-%EB%B7%B0

 

데이터베이스 객체 종류 - 데이터사전

데이터 사전 오라클의 데이터베이스 테이블은 사용자 테이블과 데이터 사전으로 나뉜다. 사용자 테이블(user table = normal Table) : 데이터베이스를 통해 관리할 데이터를 저장하는 테이블 데이터 사

wildwolf.tistory.com

 

https://liveloper-jay.tistory.com/22

 

[MySQL] 데이터베이스 제약조건이란?

데이터베이스 제약조건 제약조건이란 데이터의 무결성을 지키기위해 입력받은 데이터에 대한 제한을 두는 것을 의미합니다. 제약조건을 통하여 검사를 진행하여 어떤 조건을 만족하였을 경우

liveloper-jay.tistory.com

 

https://dev-coco.tistory.com/158

 

신입 개발자 기술면접 질문 정리 - 데이터베이스

💡 데이터베이스의 특징에 대해 설명해주세요. 실시간 접근성(Real-Time Accessibility) : 비정형적인 질의(조회)에 대하여 실시간 처리에 의한 응답이 가능해야 하며, 지속적인 변화(Continuous Evloution) :

dev-coco.tistory.com

 

https://scoring.tistory.com/entry/%ED%94%84%EB%A1%9C%EC%8B%9C%EC%A0%80%EB%9E%80

 

[PL/SQL] 프로시저(Procedure)란?

프로시저란? 특정한 로직을 처리하기만 하고 결과 값을 반환하지 않는 서브 프로그램 데이터베이스에 대한 일련의 작업을 정리한 절차를 관계형 데이터베이스 관리 시스템이 저장한 것 테이블

scoring.tistory.com

 

https://coding-factory.tistory.com/224

 

[DB기초] 뷰(View)란 무엇인가? + 간단한 예제

뷰(View)란 무엇인가? 1. 뷰는 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로부터 유도된, 이름을 가지는 가상 테이블이다. 2. 뷰는 저장장치 내에 물리

coding-factory.tistory.com

 

https://mine-it-record.tistory.com/68

 

[ORACLE] 오라클_시노님( Synonym )이란? - 개념 및 사용법

SYNONYM 쉽게 말해서 ALIAS 같이 이름을 줄여주는 역할을 한다라고 생각하면 된다. 시노님(Synonym)은 테이블의 이름을 설정해 주는것이다. 보통 다른 유저의 객체(테이블, 뷰, 프로시저, 함수, 패키지,

mine-it-record.tistory.com

 

'데이터베이스' 카테고리의 다른 글

RDBMS vs NoSQL  (0) 2024.03.29
RDBMS와 NoSQL의 차이  (0) 2023.09.08
인덱스(Index)  (0) 2023.09.07
트랜잭션  (0) 2023.08.07
데이터 무결성  (0) 2023.06.15