hyeonga_code

Database_01_데이터베이스 관리 시스템 본문

Oracle Database

Database_01_데이터베이스 관리 시스템

hyeonga 2023. 7. 3. 05:59
반응형

- 데이터베이스 관리 시스템
        - 데이터_Data
            - 현실 세계에서 단순히 관찰하거나 측정하여 수집한 값
            - 가공 전
            - 자료
        - 정보_Interface
            - 의사 결정에 유용하게 활용할 수 있도록 데이터를 체계적으로 처리하여 조직한 결과물
            - 객체
        - 데이터베이스 
            - 컴퓨터를 이용하여 자료를 모아두는 것
        - 정보 처리_Information processing
            - 데이터에서 정보를 추출하는 과정/방법
            - 데이터를 분석하거나 해석하여 데이터 간의 의미 관계를 파악
            - 정확하고 의미 있는 데이터의 수집이 필요합니다.
            - 예시 
                - 쇼핑몰에서 주문 내역 데이터를 분석하여 제품별 또는 분기별 판매액을 추출
                    - 제품 판매 전략을 세우는 데 의미있게 활용
                - web server
                    - 사용자의 요청을 받아 처리하는 서버
                - 자료를 받아주는 서버 > 파일, 데이터베이스
            - 엑셀을 사용하여 데이터를 처리하는 것은 데이터베이스가 아닌 파일 시스템입니다.
        - 정보 시스템_Information System
            - 조직 운영에 필요한 데이터를 수집, 저장합니다.
            - 필요한 시기에 유용한 정보를 만들어 주는 수단입니다.
            - 사용 목적에 따라 저장되는 데이터의 내용과 부르는 이름이 다릅니다.
                - 경영 정보 시스템
                - 스마트 팩토리 시스템_불량, 일조량 등
                - 의사결정 지원 시스템 : 선거 출구 조사, 통계청
                - 경영정보 + 의사결정 : 하이브리드시스템
                - 사물 인터넷
        - 정보 시스템의 역할과 구성
            - 현실 세계에서 있는 자료 중 필요한 데이터를 처리, 선별하여 데이터베이스에 저장합니다.
            - 데이터베이스에서 의사 결정자가 필요로하는 데이터를 정보화합니다.

 - 데이터베이스_DataBase
            - 정보 시스템 안에서 데이터를 저장하고 있다가 필요할 때 제공하는 역할을 담당합니다.
            - 특정 조직의 여러 사용자가 공유하여 사용할 수 있도록 통합하여 저장한 운영 데이터의 집합
            - 파일 시스템의 단점    
                - 읽기 동기화는 가능하지만 동시 편집은 불가능합니다.
            - 특징
                - 통합 데이터_integrated data
                    - 최소의 중복과 통제가 가능한 중복만 허용하는 데이터
                - 저장 데이터_stored data
                    - 컴퓨터가 접근할 수 있는 매체에 저장된 데이터
                - 공유 데이터_shared data
                    - 특정 조직의 여러 사용자가 함께 소유하고 이용할 수 있는 공용 데이터입니다.
                - 운영 데이터_operational data
                    - 조직을 운영하고 주요 기능을 수행하기 위해 지속적으로 꼭 필요한 데이터
            - 특성
                - 실시간 접근_real-time accessibility
                    - 사용자의 데이터 요구에 실시간으로 응답
                - 계속 변화_continuous evolution
                    - 끊임없이 변하는 현실 세계를 정확하게 반영_동적 특성
                    - 데이터의 계속적인 삽입, 삭제, 수정을 통해 현재의 정확한 데이터를 유지
                - 내용 기반 참조_contents reference
                    - 데이터가 저장된 주소나 위치가 아닌 내용으로 값을 참조합니다.
                - 동시 공유_concurrent sharing
                    - 데이터의 동시 사용 지원 

        - 종류
            - 파일 시스템_File System
                - 데이터를 파일로 관리하기 위해 파일을 생성, 삭제, 수정, 검색하는 기능을 제공합니다.
                - 응용 프로그램마다 필요한 데이터를 별도의 파일로 관리합니다.
                - 예시
                    - 인터넷 쇼핑몰 운영을 위한 파일 시스템으로 데이터를 관리
                        - 고객 관리_ 고객아이디, 고객이름, 연락처, 주소
                        - 주문 관리_제품명, 수량, 고객아이디, 고객 이름, 연락처, 주소
                        > 목적에 따라 일부 데이터를 중복되게 별도로 저장해야 합니다.
                - 장점
                    - 운영체제에서 제공하는 기능입니다.
                        - 별도의 구입 비용이 들지 않습니다.
                - 단점
                    - 데이터 중복성
                        - 같은 내용의 데이터가 여러 파일에 중복되어 저장됩니다.
                            - 중복으로 인해 데이터의 일관성과 데이터 무결성 유지가 어렵습니다.
                            > 의존성
                    - 데이터 종속성
                        - 응용 프로그램이 데이터 파일에 종속적입니다.
                            - 응용프로그램을 사용하는 파일의 데이터를 구성하는 방법이나 물리적 저장 구조에 맞게

                              작성해야 합니다.
                    - 데이터 동시성
                        - 데이터 파일에 대한 동시 공유, 보안, 회복 기능이 부족합니다.
                    - 응용 프로그램 개발이 쉽지 않습니다.
                        - 파일에 접근하여 데이터를 관리하는 모든 작업을 담당해야 합니다.
            - 데이터베이스 관리시스템_DBMS_DataBase Management System
                - 파일 시스템의 문제를 해결하기 위해 제시된 소프트웨어입니다.
                    -   통합 저장 시에 데이터의 동시 사용 문제 발생
                - 필요한 데이터를 데이터베이스에 통합하여 저장하고 관리합니다.
                - 데이터 톡립성을 보장합니다.
                - 데이터 관리
                    - 데이터베이스를 생성하고 접근하며 관리합니다.
                    - 사용자가 원하는 처리를 데이터베이스관리 시스템에 요청합니다.
                    - 사용자 : 데이터베이스의 물리적 저장 구조나 데이터 접근 및 처리방법을 알 필요 없습니다.
                    - DBMS가 고객의 요청을 받습니다.(요청, 추가, 삭제, 수정)
                    - DBMS만 데이터베이스에 접근할 수 있습니다.
                - 주요 기능
                    - 정의 기능
                        - 데이터베이스 구조를 정의하거나 수정할 수 있습니다.
                    - 조작 기능
                        - 데이터를 삽입, 삭제, 수정, 검색하는 연산을 할 수 있습니다.
                    - 제어 기능
                        - 요청한 정보만을 확인할 수 있습니다.
                        - 데이터를 항상 정확하고 안전하게 유지할 수 있습니다.
                - 장점
                    - 데이터의 중복을 통제할 수 있습니다.
                    - 데이터의 독립성이 확보됩니다.
                    - 데이터를 동시 공유 할 수 있습니다.
                    - 데이터 보안이 향상됩니다.
                    - 데이터 무결성을 유지할 수 있습니다.
                    - 표준화할 수 있습니다.
                        - 작성자에 따라 데이터의 차이를 줄이기 위함입니다.
                    - 장애가 발생한 경우 회복이 가능합니다.
                    - 응용 프로그램 개발 비용이 감소합니다.
                        - 데이터를 처리하는 역할을 프로그램이 진행합니다.
                        - 코드의 길이가 줄어들게 됩니다.
                - 단점
                    - 비용이 발생합니다.
                        - 추가로 소프트웨어를 구매해야 합니다.
                    - 백업과 회복 방법이 복잡합니다.
                        - 완벽한 복구를 위함입니다.
                        - 클라우드 환경으로 변경되며 자동 백업/복구가 가능합니다.
                    - 중앙 집중 관리로 인한 취약점이 존재합니다.

  - 데이터베이스 구조
                    - 스키마_Schema
                        - 데이터베이스에 저장되는 데이터 구조와 제약 조건을 정의한 것입니다.
                        - 한 번 정의되면 자주 변경되지 않습니다.
                          고객  번호 : int
                        인스턴스 이름 : 제약 조건
                    - 인스턴스_Instance
                        - 스키마에 따라 데이터베이스에 실제로 저장된 값을 의미합니다.
                        - 계속 변하는 특성이 있습니다.
                    - 데이터는 상태가 계속 변합니다.
                    - 데이터베이스에 스키마+인스턴스의 조합이 매우 다양하게 저장됩니다.
                    - 3단계로 이루어져있습니다.
                        - 관점에 따라 세 단계로 나누었습니다.
                        - 외부 단계_External = 서브 스키마_sub
                            - 개별 사용자의 관점입니다.
                            - 개념 단계에서 필요한 정보만 집약합니다.
                            - 데이터베이스 하나에 외부 스키마가 여러 개 존재할 수 있습니다.
                            - 사용 목적이 동일한 사용자들이 공유할 수 있습니다.
                        - 개념 단계_Conceptual ***
                           - 조직 전체의 관점입니다.
                           - 데이터베이스 하나에 하나의 개념 스키마만 존재할 수 있습니다.
                           - 일반적인 스키마입니다.
                        - 내부 단계_Internal
                            - 물리적인 저장 장치의 관점입니다.
                            - 레코드 구조, 필드 크기, 레코드 접근 경로 등 물리적 저장 구조를 정의합니다.
                            - 데이터베이스 하나에 하나의 내부 스키마만 존재합니다.
                        + 이해하기
                            - 테이블 : 학교
                                - 스키마 : 학생, 학번, 성적, 주소, 전화번호 등
                                - 도서관에서 필요한 학생의 정보 : 학번, 학생이름, 빌려간 날짜..
                                - 개념 단계 : 모든 데이터
                                - 외부 단계_view : 개념에 존재하는 데이터를 원하는 정보만 저장한 상태
                                    /*
                                    - 논리적 독립성 : 개념 단계와 외부 단계의 독립성
                                        - 개념에 존재하는 데이터만을 사용할 수 있습니다.
                                        - 변형은 할 수 있습니다.
                                        - 외부 단계는 개념 단계의 부분집합입니다.
                                        - 하나의 개념 단계에 여러 개의 외부 단계가 존재할 수 있습니다.
                                        - 개념의 변경된 데이터는 외부 단계에서도 동시에 변경된 데이터로 접근할 수 있습니다.
                                        - 개념 단계에서 데이터를 변경한 경우 데이터를 사용하지 않는 외부 단계에는 영향이 없습니다.
                                        - 서로 변경된 값이 있는 경우 영향을 최소한으로 적게 하기 위함입니다.
                                            > 독립성이 존재합니다.

                                    - 물리적 독립성 : 개념 단계와 내부 단계와의 독립성
                                        - 데이터베이스는 위치 기반이 아닌 내용 기반 저장장치입니다.
                                        - 데이터의 위치가 변경되어도 영향을 받지 않습니다.

                                    - 스키마가 3가지가 있는 이유
                                        - 스키마의 독립성을 유지하기 위함입니다. 
                                    */
                            - 집
                                - 내부 단계 : 아파트 건물 자체
                                - 개념 단계 : 살고있는 호 수
                                - 외부 단계 : 집 내부
                            ------------------------------------------------------------
                            - 내부 단계 : 번호, 이름, 성별, 나이, 직업, 주소, 연락처
                            - 개념 단계 : 번호, 이름, 성별, 나이, 직업, 주소, 연락처
                            - 외부 단계
                                1) 고객 분석 : 성별, 나이, 직업
                                2) 상품 배송 : 고객번호=번호, 고객이름=이름, 주소, 연락처
                            ------------------------------------------------------------
                                > 개념 단계의 번호와 외부 단계의 상품 배송에서의 고객 번호는 매핑되어있습니다.
                                > 개념 단계의 번호는 내부 단계의 번호와 매핑되어 있습니다.
                                > 내부 단계에서 데이터의 크기가 변경된다고 해서 개념 단계에 영향을 끼치지 않습니다.
                        - 각 단계별로 다른 추상화_Abstraction를 제공합니다.
                            - 추상화
                                - 지도, 지하철 노선도
                                - 추상화의 레벨이 높아질수록 간단 명료해집니다.
                                - 요구사항에서 필요한 요소를 추출하는 것도 포함됩니다.
                                - 개념 단계에서 외부 단계로 넘어갈 때 필요한 정보를 추출하는 과정입니다.
                                    - 없는 데이터는 사용할 수 없으나 데이터의 변형은 가능합니다.
                            - 내부 단계에서 외부 단계로 갈수록 추상화의 레벨이 높아집니다.
                        - 세 가지 스키마의 유기적인 대응 관계
                            - 하나의 데이터베이스에 존재하는 세 가지 스키마는 모두 같은 데이터베이스를 표현합니다.
                            - 사상 = 매핑
                        - 특징
                            - 데이터 독립성_Data Independency
                                - 하위 스키마를 변경해도 상위 스키마가 영향을 받지 않습니다.
                                - 논리적 데이터 독립성 : 개념 + 외부
                                - 물리적 데이터 독립성 : 개념 + 내부
                            - 데이터 사전_Data Dictionary
                                - 시스템 카탈로그_System Catalog
                                - 데이터베이스에 저장되는 데이터에 관한 정보, 즉 메타 데이터를 유지하는 시스템 데이터베이스
                                - 스키마, 스키마 간의 사상 정보, 다양한 제약 조건 등을 저장합니다.
                                - 데이터베이스 관리 시스템이 스스로 생성하고 유지합니다.
                                - 일반 사용자도 접근이 가능하지만 저장 내용을 검색만 할 수 있습니다.
                                    /*
                                        - 데이터베이스
                                            - 메타데이터_IT 용어입니다.
                                                - 시스템과 관련된 정보
                                                - 시스템 데이터를 의미합니다.
                                                - 자기 자신에 대한 데이터도 데이터베이스에 저장합니다.
                                                - 개념 스키마에 매핑되는 로그를 저장합니다.
                                                - 사용자별 권한 데이터를 저장합니다.
                                            - 유저 데이터
                                                - 내가 작성한 파일
                                            - DBMS에 요청이 들어오면 DB에 sql 문을 작성하여 접근부터 합니다.
                                                - 수십개의 로그가 생성됩니다.
                                            - 데이터베이스는 로그를 남겨 백업, 복구에 유리합니다.
                                            - DBMS를 설치하는 경우 DB도 같이 설치됩니다.
                                                - 메타데이터도 기본적으로 지정되어 있습니다. 
                                                - 사용자도 메타데이터에 접근할 수도 있습니다.
                                    */
                            - 데이터 디렉터리_Data Directory
                                - 데이터 사전에 있는 데이터에 실제로 접근하는 데 필요한 위치 정보를 저장하는

                                     시스템 데이터베이스입니다.
                                - 일반 사용자의 접근은 허용되지 않습니다.
                            - 사용자 데이터베이스_User Database
                                - 사용자가 실제로 이용하는 데이터가 저장되어 있는 일반 데이터베이스
                                - 비즈니스 데이터베이스
            - 데이터베이스 사용자
                - 데이터베이스를 이용하기 위해 접근하는 모든 사람

                - 데이터베이스 관리자_DBA_DataBase Administrator
                    - 데이터베이스 시스템을 운영하고 관리합니다.
                    - 컴퓨터시스템이나 데이터베이스 관련 많은 지식과 경험이 필요합니다.
                    - 조직 내의 사용자를 위해 데이터베이스 설계 및 구축, 제어를 담당합니다.
                    - 주로 데이터 정의어와 데이터 제어어를 이용합니다.
                    - 주요 업무
                        - 백업 및 회복 기법 정의
                        - 시스템 데이터베이스 관리
                        - 시스템 성능 감시 및 성능 분석
                        - 자주 하지 않는 업무(구성 초기에만 작업합니다.)
                            - 데이터베이스 구성 요소 선정
                            - 데이터베이스 스키마 정의
                            - 물리적 저장 구조와 접근 방법 결정
                            - 무결성 유지를 위한 제약 조건 정의
                            - 보안 및 접근 권한 정책 결정
                            - 데이터베이스 재구성
                - 응용 프로그래머_Application Programmer
                    - 데이터 언어를 삽입하여 응용 프로그램을 작성합니다.
                    - 주로 데이터 조작어를 사용합니다.
                - 최종 사용자_End User
                    - 데이터베이스에 접근하여 데이터를 조작합니다.
                    - 주로 데이터 조작어를 사용합니다.
                    - 구분
                        - 캐주얼 사용자
                        - 초보 사용자
                        /*
                            - 사용자    >   WEB1  >  WAS1    > DB   /DB _ sub
                                        >   WEB2  >  WAS2
                                - DB는 하나이지만 subDB에 저장되어 DB가 다운되면 곧바로 실행할 수 있도록 합니다.
                        */
            - 데이터 언어
                - 사용자와 데이터베이스 관리 시스템 간의 통신 수단입니다.
                - 사용 목적에 따른 구분
                    - 데이터 정의어_DDL_Data Definition Language
                        - 스키마를 정의하거나 수정, 삭제하기 위해 사용합니다.
                        - 데이터 정의어로 정의된 스키마는 데이터사전에 저장됩니다.
                        - 스키마의 수정, 삭제가 발생하면 데이터 사전에서 변경됩니다.
                        - 데이터 사전에 저장된 스키마 정보는 데이터베이스 관리 시스템 또는 사용자가 필요한 경우 참고합니다.
                    - 데이터 조작어_DML_Data Manipulation Language
                        - 데이터의 삽입, 삭제, 수정, 검색 처리를 요구하기 위해 사용합니다.
                        - 절차적 데이터 조작어_Procedural DML
                            - 사용자가 원하는 데이터와 어떻게 처리해야하는지 까지 알려주는 언어입니다.
                        - 비절차적 데이터 조작어_Nonprocedural DML
                            - 사용자가 원하는 데이터를 설명합니다.
                            - SQL을 사용하는 엔진에는 옵티마이저가 내장되어 가장 최적화된 처리 과정을 예측하고 실행합니다.
                            = 선언적 언어_Declarative Language
                    - 데이터 제어어
                        - 대부적으로 필요한 규칙이나 기법을 정의하기 위해 사용합니다.
                        - 사용 목적
                            - 무결성 : 정확하고 유효한 데이터만 유지합니다.
                            - 보안 : 허가받지 않은 사용자의 데이터 접근 차단, 허가된 사용자에 권한 부여
                            - 회복 : 장애가 발생해도 데이터 일관성 유지
                            - 동시성 제어 : 동시 공유 지원
            - 데이터베이스 관리 시스템
                - 사용자와 데이터베이스 사이에 위치합니다.
                - 데이터베이스 관리와 사용자의 데이터 처리 요구를 수행합니다.
                - 기능에 따른 주요 구성 요소
                    - 질의 처리기_Query Processor
                        - 사용자의 데이터 처리 요구를 해석하여 처리합니다.
                        - DDL 컴파일러
                            - DDL로 작성된 스키마 정의를 해석하고 데이터 사전에 저장합니다.
                        - DML 프리컴파일러
                            - 응용 프로그램에 삽입된 데이터 조작어를 추출하여 DML 컴파일러에게 전달합니다.
                        - DML 컴파일러
                            - DML로 작성된 데이터 처리요구를 런타임 데이터베이스 처리기가 이해할 수 있도록 분석합니다.
                        - 런타임데이터베이스 처리기
                            - 데이터 처리 요구를 데이터베이스에서 실제로 처리합니다.
                        - 트랜잭션 관리자
                            - 사용자의 접근 권한, 제약 조건 위배 여부를 확인합니다.
                    - 저장 데이터 관리자_Stored Data Manager
                            /*
                                - 개발자가 컴파일러가 존재하지 않는 컴퓨터에서 SQL로 작성한 코드는 DBMS로 전송됩니다.
                                - DBMS 내에 컴파일러가 내장되어 있어 전송 받은 SQL 코드를 컴파일합니다.
                                - 여러 언어가 섞여 DB로 넘어오는데 이 속에서 DML 언어만 추출하는 것이 DML 프리컴파일러입니다.
                                - 다른 개발자가 전송한 SQL 코드가 동일한 경우 컴파일된 코드를 재사용하여 데이터를 출력합니다.
                                - 로그인에 주로 사용됩니다.
                                - 명령문이 DML일 경우 DML 컴파일러가 런타임 데이터베이스 처리기에 코드를 전송합니다. 
                                    > 동시성에 대한 문제를 트랜잭션 관리자가 있을 수 있습니다.
                                    - 동일 데이터는 엑세스에 순서를 부여해야 합니다.
                                - 저장 데이터 관리자가 데이터 사전으로 접근하여 데이터 위치를 확인한 후 

                                  데이터베이스에 접근합니다.
                            */

반응형