오라클 데이타베이스 CH1. Introduction

Alpha, Orderly·2023년 9월 21일
0

데이터베이스

목록 보기
1/13

Into the Database

  • 전통적인 데이터베이스들에 비해 다양한 데이터들을 조직화, 데이터 베이스화 시켜서 사용하고 있다.
  • 최근은 하둡, NoSQL 등을 사용한다.

Data

  • 함축적인 의미를 가지면서 기록이 되는 알려진 사실
  • 이름, 주소, 등

Database

  • 관련된 데이터들이 잘 조직화 되어있는것

DBMS

  • DB + DB 어플리케이션

NoSQL

  • 비정형 데이터를 잘 처리하기 위해 만들어 졌다.
  • 고성능 및 확장성을 가진다.
  • SQL 과 병행해서 사용한다.

MongoDB

  • 값과 키를 같이 저장한다.
    • 자기 설명적이다.
  • JSON과 유사한 문서 구조를 가진다.

Hadoop

  • MapReduce를 구현, 빅데이터를 위한 모델

MapReduce

  • 병렬과 분산처리
  • 데이터를 여러 노드에 분산저장, 이들을 매핑하고 계산 한뒤 취합해서 결과로 산출한다.

  • 이를 인메모리에서 동작시키는것이 아파치 스파크이다.

DB System

DB Application

  • Query / Transaction 을 통해 DB와 의사소통한다.
    • Transaction : 더이상 나눌수 없는 단위의 작업
  • 허용되지 않은 사용자가 데이터에 접근하는것을 막는다.
  • DB에 대한 요구사항을 반영해야 한다.

DBMS

  • 데이터베이스의 타입, 구조, 제한을 정의 할수 있어야 한다.
  • 보조 저장장치에 데이터베이스를 생성 혹은 로딩해올수 있어야 한다.
  • 데이터베이스를 조작할수 있어야 한다.
    • 가져오기, 수정, 접근
  • 많은 사람들이 사용할수 있어야 한다.

Database

  • 관련성 있는 엔티티 ( Entity ) 로 구성된다.
    • 대학의 예시
      • 학생, 교수, 강의 등이 엔티티가 된다.

  • 파일로 저장됨
  • 각각의 파일은 동일한 타입의 레코드를 저장.

데이터베이스 디자인

  1. 요구사항 설계 및 분석
  2. 디자인 한다.
  3. DBMS의 데이터 모델을 논리적으로 디자인한다.
  4. DB를 저장하기 위한 물리적 디자인을 한다.
  • Oracle 등을 사용한다면 3 과 4를 한번에 진행하는것과 같다.

DB System

Self-decribing

  • DB System은 DB 자체 뿐만 아니라 구조, 타입, 제한 의 완벽한 정의를 가지고 있다.
    • EX. 카탈로그 : 특정 DB의 메타데이터 ( 설명 ) 이 들어있다.

프로그램과 데이터를 분리한다.

  • DBMS Access program을 수정하지 않더라도 데이터 구조나 저장 방식을 변경할수 있다.

데이터 추상화

  • 프로그램 데이터와 프로그램 동작을 분리한다.
  • 디테일한 데이터 관리는 신경쓰지 않아도 된다.

다양한 관점을 제공

  • 사용자가 원하는것만 제공할수 있다.

여러 유저들의 데이터 공유

  • 여러 유저가 동시에 데이터를 가져오고 업데이트 할수 있도록 한다.
  • Concurrency Control을 통해 일어난다.

DB를 사용하는 이점

중복제어

  • 데이터 스토리지를 개발/유지 하는 수고를 줄인다.

접근제어

  • 권한이 없는 접근을 차단한다.
  • 보안성을 제공한다.

프로그램 객체의 영속적 저장소를 제공한다.

  • 객체지향적 DBMS들이 프로그램 객체를 영속적으로 만들어준다.

효율적인 쿼리를 위한 저장 구조를 제공한다.

DB를 사용하는 단점

돈이 많이 든다.

  • 초기 비용이 많이 든다.
  • 보안, 동시성, 복구 등을 구현하기 위해 오버헤드가 발생한다.

필요하지 않을수 있다.

  • 데이터베이스나 앱이 간단하고 잘 정의되어 있을때
  • 동시접근이 필요 없을때

DBMS를 실행하기 어려울때

  • 제한된 용량을 가진 임베디드 시스템에서는 사용하기 어렵다.

데이터 모델

  • 데이터 추상화를 달성하는 데 필요한 수단 제공
    • 구조
      • 칼럼, 연관관계, 타입
    • 연산
      • 조회, 갱신, 삭제, 추가, 기타 사용자 지정 연산
    • 제약조건
      • 항상 지켜져야 하는 조건

분류

Conceptual data model / High-Level

  • 고수준의 식별이 가능한 모델
  • ER 모델

Physical data model / Low-Level

  • Conceptual하게 표기된것을 물리적으로 구현하는 모델
  • 구체적으로 어떻게 저장될지를 설명한다.

Implementation model / Logical

  • SQL로 표현되는 위 두 분류의 중간

자기설명 데이터 모델

  • 데이터의 설명과 데이터를 같이 저장한다.
    • XML, Key-Value, NoSQL

데이터베이스 스키마

  • 데이터베이스의 설명
  • DBMS 카탈로그에 저장된다.
  • 데이터베이스 구조, 데이터 타입, 제약사항이 적혀있다.

데이터베이스 상태 ( State )

  • 한 시점에 저장되어 있는 실제 데이터
  • 데이터베이스 인스턴스 / 스냅샷 으로도 부른다.
  • 초기 데이터베이스 상태 : DBMS에 초창기에 로딩된 데이터베이스 상태
  • 올바른 상태 : 구조와 제한을 만족하는 상태, DBMS가 책임지고 보장한다.

Three-Schema Architecture

  • 프로그램과 데이터간의 독립성을 보장하기 위한 구조
  • 아래 레벨에 변경이 있더라도,
    윗 레벨에 요소들이 변경의 영향을 받지 않는다면 바꾸지 않아도 된다.
  • 각각의 레벨에 독립적으로 돌아간다.

Internal Schema / Physial

  • 물리적 스토리지에 저장되는 방식, 접근 경로
  • 데이터베이스 관점

Conceptual / Logical Schema

  • 전체 데이터베이스에 대한 구조와 제한을 유저에게 제공한다.
  • DBMS에서의 관점

External / View Level Schema

  • 사용자 또는 응용 프로그램의 관점
  • 여러개의 외부 스키마( 관점 )를 가질수 있다.

맵핑

  • 각각의 스키마 레벨 사이는 요청과 데이터의 변환이 필요하다.
  • 실질적인 데이터는 Physical level에서만 저장이 된다.
  • 각자 영향 받는 부분만 변경하면 된다.

Logical data independence

  • Logical 구조가 바뀌어도 External에 영향이 없으면 바꿀 필요가 없다.

Physical data independence

  • Physical 구조가 바뀌어도 Logical에 영향이 없으면 바꿀 필요가 없다.

  • Logical Level에서 변화가 있으나, External에서는 바뀔 필요가 없다.
  • Grade가 Score로 바뀌는 등 영향이 가면 External도 변경이 필요할수 있다.

데이터베이스 언어와 인터페이스

DDL : Data Definition Language

  • 데이터를 정의하기 위한 언어
  • CREATE TABLE, ADD COLUMN

DML : Data Manipulation Language

  • 데이터를 조작하기 위한 언어

DML 유형

  1. 고수준
  • 선언적
  • 쿼리 언어 ( SQL )
  • 프로그래밍 언어에 함수 호출로 사용되기도 한다.
  1. 저수준 / 프로시저 언어
  • 프로그래밍 언어에 내장되어 있어야 한다.
  • 한번에 하나의 레코드를 가져옴, 여러개 가져오려면 루프가 필요하다.

DBMS 인터페이스

  • Cli 단독 쿼리 인터페이스
    • SQLPLUS
  • 임베딩 DML
/* Begin program */

EXEC SQL INCLUDE SQLCA;

EXEC SQL BEGIN DECLARE SECTION
         host_name character_string(20)
         host_emp_number integer
EXEC SQL END DECLARE SECTION

EXEC SQL WHENEVER SQLERROR STOP

EXEC SQL CONNECT frans

/* Formulate query, something like: */

EXEC SQL SELECT name emp_number
         INTO host_name host_emp_number
         FROM employees
         WHERE emp_number = 10001

/* Print host_name and host_emp_number */

EXEC SQL DISCONNECT

/* End program */
  • GUI 기반
    • SQLDeveloper
  • 모바일 인터페이스
  • 프로시저 호출
    • JDBC / ODBC
    • 다른 언어의 API로 사용
  • 데이타베이스 프로그래밍 언어
    • PL/SQL
  • 스트립트 언어
    • 파이썬, PHP
profile
만능 컴덕후 겸 번지 팬

0개의 댓글