1장 데이터의 시대 한줄요약

>> 응용프로그램이 데이터에 직접 접근하도록 하는 방식이 많은 문제를 야기했기 떄문에 데이터 파일들을 한 곳에 모으고, 이를 관리하는 SW를 둠으로써 문제를 해결하는 방식이 데이터베이스 시스템이다.

 

2장 데이터베이스 시스템 시작


 

2-1 데이터베이스 시스템의 개념

데이터베이스와 DBMS는 다수 사용자가 공동으로 이용하려는 목적이 큼.

-> 대부분 다수 사용자를 감당할 성능이 좋은 컴퓨터에 데이터베이스와 DBMS 설치하여 운영.

---> 이 컴퓨터'데이터베이스 서버 (DB서버)' 라고 부른다.

 

데이터베이스서버는 인터넷 같은 네트워크에 연결되어있고, 네트워크를 통해 들어오는 수많은 사용자들의 요구를 처리함.

데이터베이스 시스템과 활용환경

 

  • 이때, 응용프로그램이 DBMS에 요구사항을 전달하는 방식은 SQL이라는 표준화된 언어를 통해 이루어진다.
  • 사용자와 DBMS가 의사소통을 할 수 있는 유일한 수단은 SQL이다.
  • 데이터베이스에 정보를 저장하는 기본단위는 테이블(table)이다. 
  • 과거에 고객정보가 하나의 파일에 저장되고 사용되었다면 데이터베이스에서는 고객 테이블에 저장되고 사용된다.
  • 데이터베이스 == 테이블들의 집합

 

2-2 데이터베이스와 데이터베이스 관리 시스템

데이터베이스

 

데이터베이스는 보통 물리적인 저장장치인 하드디스크 상에 구현된다.

(하드디스크란) 하드디스크는 컴퓨터의 보조 기억장치이다.
컴퓨터에 저장되는 모든 데이터는 0,1 두 디지털 신호에 의해 이루어지는데, 하드 디스크의 경우 이러한 디지털 신호를 원반 형태의 플래터에 기록한다. 이때 자기장의 밀도 변화를 이용해 기록하는데, 자기장의 밀도 변화를 측정하는 바늘(헤드)가 플래터 위의 일정한 간격을 지나치는 동안 자기장의 극성이 변화하면 1, 아니면 0으로 인식한다.
(//주 기억장치도 궁금하니 다른 글에서 컴퓨터의 기억장치들을 자세하게 공부한 후 정리해놓아야겠다.)

 

데이터베이스의 물리적 구현 방식은 DBMS제품마다 다르다.

(특정 폴더에 데이터를 모아놓거나, 하나의 커다란 파일에 작은 파일들을 모아서 저장할 수도 있다.)

오라클의 경우, 여러개의 파일들이 모여서 하나의 데이터베이스로서 역할을 한다.

 

시스템 카탈로그 (데이터 사전)

 

데이터베이스에는 사용자가 이용할 목적으로 만든 테이블도 있지만, 존재하는 데이터베이스들을 관리하기 위한 정보를 담고 있는 테이블도 있다.

 

존재하는 데이터베이스들을 관리하기 위한 정보가 뭘까.

 

어떤 데이터베이스에 어떤 테이블들이 있는지, 각파일의 구조는 어떤지, 사용자는 누가 있는지, 각사용자의 권한은 무엇인지 등의 정보를 말한다.

이런 '데이터베이스들을 관리하기 위한 정보'를 관리하기 위해 만들어진 테이블들을 "시스템 카탈로그" 또는 "데이터사전" 이라 한다.

사용자 테이블과 시스템 카탈로그

DBMS - 데이터베이스 관리 시스템

 

  • DBMS는 보통 사용자의 요구를 언제라도 수행하기 위해 백그라운드 프로세스의 형태로 상시 실행된다.
  • DBMS는 역할과 기능이 매우 복잡해서 단일 소프트웨어로 구현하기 어렵다. 각기 다른기능의 소프트웨어들이 함께 실행되면서 DBMS의 역할을 수행한다.
  • DBMS는 사용자입장에서 다음 3가지 서비스를 제공한다. 
1. 데이터 정의 기능 : 데이터베이스나 데이터베이스 안에 원하는 구조의 파일(테이블)을 생성/변경할 수 있게 함
2. 데이터 조작 기능 : 데이터베이스 내의 파일(테이블)에 대해 조회하거나 데이터를 삽입, 수정, 변경, 삭제 할 수 있게 함
3. 데이터 제어 기능 : 데이터베이스 내의 데이터를 안전하고 정확히 유지한다. (ex - 권한이 있는 사용자만 DB로 접근허용 / 다수 사용자의 요구를 동시에처리-병행수행제어 / 정기적으로 DB백업 / DB에 장애발생시 복구) 

 

 

 

 

2-3 데이터베이스 사용자

데이터베이스 사용자

2-4 데이터베이스 언어

-> 모든 종류의 사용자들은 예외 없이 지정된 언어로만 DBMS와 소통할 수 있는데, 우리가 공부하는 관계형 데이터베이스의 언어는 SQL이다.

-> SQL언어는 표준화되어있어서 DBMS종류와 관계없이 동일하다. 

-> 관계형 DBMS에서는 SQL을 통해 자료의 검색과 관리, 데이터베이스 스키마 생성과 수정, 데이터베이스 객체접근 조정 관리 등을 모두 할 수 있다.

-> SQL의 대표적인 명령어는 SELECT, UPDATE, INSERT, DELETE 가 있다. 특히 데이터를 조회하는 SELECT가 많이 사용된다.

 

 

<< 예시 >>

(1)한국의 인구와 GNP는 얼마인가?

select population, GNP
from country
where name = 'South Korea' ;

 

(2)아시아에 속한 국가들의 GNP합게는 얼마인가?

select sum(GNP)
from country
where continent = 'Asia' ;

 

(3)한국인의 기대수명을 80으로 바꾸시오.

update country
set LifeExpectancy = 80
where name = 'South Korea'

 

(4) 'New Stan'이라는 신생국의 정보를 추가하시오. (국가코드:NST, 대륙: Asia)

insert into country (code, name, continent)
values ('NST', 'New Stan', 'Asia') ; 

 

(5) 'New Stan'에 대한 자료를 삭제하시오.

delete
from country
where name ='New Stan';

 

2-5 오라클 데이터베이스 개요

오라클 데이터베이스는 구조가 단순한 MySQL과 달리 개념적으로 복잡하다.

 

(1) CDB와 PDB (멀티 테넌트 DB)

멀티 테넌트 DB : 여러 PDB들이 CDB에 세 들어 사는듯한 DB 운영방식

 

CDB(Container DB)

여러 PDB들을 담을 수 있는 더 큰 DB (컨테이너 DB)

 

PDB (Pluggable DB)

쉽게 꽂았다 뽑았다 할 수 있는 DB

 

멀티 테넌트 DB 

여러 PDB들이 CDB에 세 들어 사는듯한 DB 운영방식

 

오라클을 설치하면 CDB(이름:XE) 하나와 그 안에 한개의 PDB(XEPDB1)가 기본적으로 생성된다.

후에 실습환경을 구성하면 PDB(EMPPDB)가 추가된다.

 

 

 

 

(2) 테이블 스페이스 (table space)

 

테이블스페이스는 데이터베이스를 구성하는 논리적 공간으로서 하나의 데이터베이스는 여러 개의 테이블스페이스를 포함할 수 있다. 하나의 테이블스페이스는 물리적 저장 공간인 데이터 파일과 연결된다.

 

우선 오라클에서는 데이터를 확장자가 .dbf인 물리적 데이터파일에 저장한다. 이 데이터파일이 모여서 테이블스페이스 라는 논리적 공간을 만든다. 또 테이블스페이스가 모여서 데이터베이스를 구성한다.

 

 

 

 

(3) 공통 사용자와 로컬 사용자

 

오라클의 사용자는 공통, 로컬 두 종류가 있다.

 

공통사용자

- PDB 레벨에서 활동 (전체 데이터베이스 접근 가능 하다는 의미.)

- C##을 계정명 앞에 붙인다. ( c##pgmr 이런식. 공통,로컬 사용자를 구분하기 위해 붙임)

- 오라클 관리를 위해 기본제공되는 시스템사용자(system, sysdba 등)는 공통사용자이나 c##을 안붙여도 사용 가능.

 

로컬사용자

- 특정 PDB만 접근 가능. 

- scott 사용자 계정은 EMPPDB 데이터베이스상에서만 활동할 수 있는 로컬 사용자이다. (앞으로 실습에 사용)

 그러므로!! SQL Plus로 오라클에 접속할 때 EMPPDB 데이터베이스로 접속해야 한다. 만약 접속할 데이터베이스를 지정하지 않으면, 자동적으로 CDB에 연결되는데, scott 사용자는 CDB에 대해서는 권한이 없기 때문에 로그인 오류가 난다.

SQL Plus를 열고,

사용자명 입력: scott/tiger    이라고 치면 

ERROR:

ORA-01017: 사용자면/비밀번호가 부적합, 로그온 할 수 없습니다. 이렇게 뜸

꼭! 
사용자명 입력: scott/tiger@localhost/emppdb
  라고 적어줘야 한다!!
("localhost 서버에 있는 emppdb데이터베이스에 scott사용자 계정으로 로그인 해줘")

@localhost/emppdb접속하려는 서버의 주소 / 접속하려는 데이터베이스 이름.

이때 localhost 란에는 원래 접속하려는 서버의 DB 주소를 적어야 하는데, 우리는 실습을 할 때 DB서버를 우리 컴퓨터에 만들 것이므로 지금 접속해있는 컴퓨터를 의미하는 localhost를 적는다. 

 

 

(4) SQL Plus (오라클 콘솔 유틸리티 프로그램)

 

DBMS와 소통하는 방법은 이렇게 두가지 방법이 있다.

 

1) SQL Plus 이용 > 데이터베이스를 운영할 때 발생할 수 있는 문제에 대비해 사용자 환경에 구애받지 않고 사용할 수 있음. 오라클에서 기본 제공. 그래서 설치 시 같이 설치됨.

 

2) Oracle SQL Developer 소프트웨어 이용 > GUI 방식, 오라클 데이터베이스에 접속하기 위한 프로그램.

 

(5) SQL Plus 주요 명령어 모음

출처 : 오라클로 배우는 데이터베이스 개론과 실습 부록


2장 연습문제 

(우선 틀리거나 모르는 문제만...!)

 

7. DBMS에 대한 설명이 아닌것

   답 : 2번, 인터넷이나 네트워크가 연결된 상태에서만 작동한다.

 

   해설 :  DBMS의 기능중에 데이터 제어 기능 : 데이터베이스 내의 데이터를 안전하고 정확히 유지한다. (정기적으로 DB백업 / DB에 장애발생시 복구) 이걸 보면 DBMS서버(컴퓨터) 내에서 혼자 돌아가고 있다는 것을 짐작 가능하다.

 

   궁금증 : 인터넷이 없으면 당연히 접근 불가능이겠지?

   - 외부 DB를 쓰는 경우 인터넷을 통해서 접근해야하지만, 내부망, 본인의 IP 혹은 루프백 아이피를 쓰고 내부 DB를 쓰는 경우에는 인터넷 연결 없이 사용 가능.

 

8. DBMS가 제공하는 기능으로 거리가 먼 것

   답: 1번, 데이터 생성기능

 

궁금증 : 위에서  1. 데이터 정의 기능 : 데이터베이스나 데이터베이스 안에 원하는 구조의 파일(테이블)을 생성/변경할 수 있게 함 이라고 되어 있는데 왜 데이터 생성기능은 DBMS가 제공하는 기능이 아닐까...?

 

13. 데이터베이스 관리자의 임무

- DB 구성요소 결정

- DB 스키마 정의 

- 데이터 저장구조와 액세스 방법 결정

- DB 보안 및 권한 관리 정책 수립

- 데이터 유효성 검사 방법 수립

- 백업, 회복 절차 결정

- 데이터 무결성 유지 대책 수립

- 시스템 성능 모니터링 및 성능 향상 방안 수립

- DB에 대한 새로운 요구사항에 대응, DB 재구성

- DB 관련 각종 통계분석

- 데이터 표현과 문서화 표준 설정, 시행

 

19. 다음 중 현재 접속해 있는 PDB의 이름을 확인하는 오라클 명령어는?

- show con_name

 

20. 다음의 SQL 명령어에 대한 설명으로 맞는 것은?

desc dept ;

- 2번. 부서(dept) 테이블의 구조를 확인한다.