ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 03.20 수업
    학교 수업 정리/데이터베이스 2023. 3. 23. 01:17

    초기의 데이터베이스는 물리적으로 연결되어(서버와 사용자가 유선으로 연결해 사용) 데이터베이스 메인프레임이 모든 연산을 수행하였다. 현재는 네트워크로 연결되어 있어 어디에서나 접속이 가능하고 대부분의 정보가 서버에 저장되어 있으며 서버가 모든 연산을 하지 않고 일부 연산은 클라이언트가 한다. GUI, 출력 등은 클라이언트가 담당. 서버의 부하가 줄어들어 서버는 연산에 더 집중이 가능해지고 스루풋이 향상되었음. 클라이언트 모듈은 사용자 친화적인 UI를 가지고 쉬운 사용을 지원한다.

    어떤 데이터베이스 모델을 사용하느냐에 따라서 형태가 달라짐. 최근에는 관계형 데이터베이스가 대부분. 데이터 모델은 3가지 기능을 가진다.

    1) 데이터를 어떤 형태로 표현할지

    2) 어떤 연산을 제공할 것인지

    3) 사용자가 기본 연산을 가지고 함수를 만드는 기능 이렇게 3가지이다.

    데이터베이스 모델은 3가지 형태로 구분이 가능한데

    1) 일반 사용자가 이해하는 것에 가까운 형태인 High-Level 데이터모델 ex) ER 모델

    2) 실제에 가까운 데이터가 어떻게 저장하는 것인지 표현하는 형태인 Low-Level 모델(개발자가 사용)

    3) 1번과 2번의 중간인 Representational(Implementation) 모델은 일반적인 DBMS로 관계형 데이터베이스가 여기에 속한다.

    데이터베이스 모델은 entity, relationship, attribute에 기반한다.

    entity는 하나의 객체로 인식되는 것이며 attribute는 entity의 특성을 대표하는 값이고 relationship은 말 그대로 entity사이의 관계를 표현하는 것이다.

    ER 모델은 다음에 더 자세히 다룬다.

    데이터베이스는 24시간 가동되기에 처음부터 잘못 설계하면 고치기가 힘들다.

    스키마는 데이터베이스의 데이터를 기술하며 데이터베이스 디자인에서 명확하게 정해야 한다. 스키마 다이어그램은 데이터의 구조를 보여주는 것이다. 데이터베이스 state나 snapshot이 데이터를 보여준다. state는 특정 시간의 데이터를 보여주기도 한다. 스키마는 데이터의 자세한 정보를 기술해야 하므로 타입, 널 여부, 키 여부 등등을 저장한다.

    state는 초기에는 비어있으나 데이터를 넣기 시작하면 DBMS는 제약조건을 전부 검사한다. 연산시간이 증가할 수 있어 제약조건을 정말 필요한 것들만 걸어야 한다. 스키마의 구조(메타 데이터)는 카탈로그에 저장된다.

    데이터베이스의 3가지 주요한 장점은 프로그램-데이터 독립성, 다중 뷰 지원, 데이터베이스 정보를 카탈로그에 저장 이렇게 3가지인데 이것은 3가지 스키마 구조에 의해 구동된다.

    Internal 스키마는 데이터의 저장과 관련 있고 피지컬 데이터 모델을 사용하며 데이터의 저장과 접근 경로를 설명한다.

    Conceptual 스키마는 전체 데이터베이스를 어떻게 표현할 것인지에 관한 것으로 데이터베이스 전체의 구조와 보여줄 것과 숨겨줄 것을 구분하고 entity, data type, relationships 등을 하나로 모은다.

    External 스키마는 사용자가 보는 데이터를 정의한다. 이때 뷰를 통해 서로 다른 사용자에게 다른 데이터를 보여줄 수도 있다.

    사용자로부터 External, Conceptual, Internal순으로 깊어진다고 볼 수 있다.

    데이터 독립성은 논리적과 물리적 독립성으로 나누어진다. 논리적 독립성은 Conceptual이 변경되어도 Internal이 변경되지 않는 데이터 삽입, 제거 등이고 물리적 독립성은 반대로 Internal이 Conceptual의 변경 없이 변경되는 인덱스 추가나 새로운 구조 추가 등이다.

    데이터베이스는 사용자가 많아 다양한 언어를 지원한다. DDL, DML, DCL으로 나눈다.

    DDL(Data Definition Language)은 데이터베이스의 스키마 정의에 사용된다. CREATE가 있다. 많은 경우 뷰와 저장 구조를 정의한다.

    DML(Data Manipulation Language)은 데이터베이스의 데이터를 수정할 때 사용한다. High-Level DML은 무엇을 할지만 알려주면 되지만 Low-Level DML은 연산 방식을 지정해주어야 한다. 보통 하이레벨을 다른 프로그래밍 언어에 임베딩시켜 사용한다. SQL이 하이레벨이고 Relational Algebra가 로우레벨 언어이다. DML은 state가 바뀌지만 DDL은 바뀌지 않는다.

    DBMS의 구성요소는 다음과 같은 것들이 있다.

    데이터저장 관리프로그램: 데이터베이스의 데이터 저장을 관리한다.

    DDL 컴파일러: 스키마를 정의하는 역할. CREATE를 식별해 카탈로그에 저장한다.

    런타임 데이터베이스 프로세서: 런타임 관리. 컴파일러로부터 수행코드를 받아 수행하는 역할을 한다. SELECT 등을 실행.

    쿼리 컴파일러: 수행코드를 만든다. 문법검사와 여러 실행방법 중 가장 비용이 낮은 것을 찾는 역할을 한다.

    pre-컴파일러: 임베딩시킨 SQL에서 작동. 다른 언어 사이에서 SQL만 골라내는 역할을 한다.

    DML 컴파일러: 수행코드 생성.

    같은 코드라도 인덱스 유무, 테이블 크기 등에 의해 여러 실행방법이 있는데 컴파일러는 이중에 가장 적은 비용이 드는 것을 찾아 실행한다. 최적의 결과를 내기 위해 시스템카탈로그를 계속 참조하며 작업한다.

    데이터베이스는 백업기능이 있다.

    '학교 수업 정리 > 데이터베이스' 카테고리의 다른 글

    03.22 수업  (0) 2023.03.24
    03.15 수업  (0) 2023.03.16
    03.08 수업  (0) 2023.03.09
Designed by Tistory.