DB/오라클
2일차 - 데이터 베이스 이론및 개념
sami355
2022. 9. 17. 16:22
학교 공부를 정리한 글입니다.
(chap1)
- data의 정의
- 의미를 내포하고 있으며 **알려저 있는 사실(know facts)**을 저장한 것
- 거짓된 data는 data가 아니다
- 아무거나 데이터라고 하지 않으며 함축적인 의미를 지니고 있어야 한다.
- DataBase의 정의
- 관련되어 있는 데이터들의 정렬되어 있는 collection
- DBMS의 정의
- DB를 잘 관리하기 위해 필요한 것들의 패키지(데이터 중복과 데이터 종속 문제를 해결하기 위한 소프트웨어)
- DataBase system
- DB + DBMS (+DB Application)
- 최근 개발 툴
- NoSQL (example)
- 높은 성능
- 스키마가 필요없음
- document data model
- 하둡
- 대량의 자료를 분산 저장과 분석을 위한 프레임 워크
- 예를 들어 100만개의 연산이 필요하면 이를 100만개의 독립된 컴퓨터에서 처리하는 것 처럼 연산
- 스파크
- 하둡에서 연산된 데이터를 공유되는 메모리에 써서 디스크 IO를 줄임
- NoSQL (example)
- Application은 DB와 Query와 Transaction을 통해 상호작용한다
- Query는 특정 data를 검색하기 위해 위한 클라이언트의 요청
- Transaction은 데이터베이스에 atomically read/write하기 위해 발생하는 일련의 작업 혹은 연산
- Application은 비인가된 사용자의 접근을 막아햐 한다 → data protection
- DB를 사용할때 변경된 사항이 있으면 클라이언트의 요청에 즉각적으로 반영되어야 한다.
- DBMS의 전형적인 특징
- 데이터 베이스속에 존재하는 data의 타입, 구조, 제약들이 define 되어있다.
- 물리적으로 2차 저장 장치에 저장하도록 Constructing있다.(HDD or SSD)
- DataBase를 manipulate할 수 있다.
- Retrieval : 쿼리를 통해 검색을 전달할 수 있다.
- Modification : 컨텐츠의 삽입, 삭제, 수정을 할수 있디.
- Access : 웹 어플리케이션을 통해 접근할 수 있다.
- Processing, Sharing : 동시에 많은 유저들이 와도 ,데이터의 동시성과 유효성을 그대로 지니면서, 처리하고 공유할 수 있다.
- entities : 실체, 객체, 업무에 필요하고 유용한 정보를 저장하고 관리하기 위한 집합적인 것
- 엔티티는 실제 DB나 SQL상에 존재하지 않으며 이는 Conceptual Data Model에만 존재하는 일종의 개념이다.
- instance는 정의된 스키마에 따라 데이터베이스에 실제로 저장된 값이다.
- attribute : entity는 자신이 가지는 인스턴스들을 설명할 수 있는 속성(attribute)를 가진다.
- relation
- relation은 테이블을 말한다.
- relation은 스키마와 인스턴스로 이루어져 있다.
- schema
- schema란 관계형 데이터 베이스에서 기본 구조를 정의하는 것.(자바에서의 클래스 역할)
- schema는 테이블의 첫 행인 헤더를 나타내며, 속성, 자료 타입들의 정보를 내포하고 있습니다.
- instance
- instance는 테이블에서 실제로 저장된 데이터이다.
- Tuple
- tuple은 relation에서 행의 개수를 의미한다.
- 사진에서의 튜블의 개수는 3이다.
- 튜플은 행 혹은 카디널리티라고 불리기도 한다.
- attribute
- attribute는 relation에서 열의 개수를 의미한다.
- 사진에서의 속성의 개수는 3이다.
- 속성은 열, 차수라고 불리고도 한다.
- domain
- 도메인은 속성이 가질 수 있는 값의 집합이다.
- relation의 정의
- 행(Row)은 개체에 대한 데이터를 포함한다.
- 열(Column)은 개체의 속성에 대한 데이터를 포함한다.
- 한 열의 모든 항목은 동일한 종류이다.
- 각 열(Column)은 유일한 이름을 가진다.
- 테이블의 셀은 단일 값을 포함한다.
- 열(Column)의 순서는 중요하지 않다.
- 행(Row)의 순서는 중요하지 않다.
- 어떤 두개의 행(Row)도 동일하지 않다.
- relation이 정의되어야 DB가 정의 된다. 결론적으로 테이블이 조금 더 큰 개념이고 릴레이션은 데이터베이스에 사용되기 위한 조건을 만족하는 테이블이라고 보면 될 것 같다.
- DB의 특징들
- catalog : catalog는 database에 저장되어있는 테이터를 정확하고 효율적으로 이용하기 위해 참고해야 되는 스키마, 사상정보, 다양한 제약조건, 구조, 데이터 타입들을 저장하고 있으며 메타데이터라고도 불린다.
- Insulation : 프로그램과 데이터의 독립을 말한다
- 이를 program-data independence라고도 한다.
- DB를 바꾸지 않고도 프로그램을 수정해도 제대로 동작
- Data abstraction
- 데이터 추상화로 인해 프로그램-데이터, 프로그램-동작이 서로 분리 시켜준다.
- data model은 데이터 추상화의 종류이다.
- data를 여러개의 view로 제공해준다.
- 유저마다 볼 관심이 있는 데이터가 다르므로 이를 따로 구분해서 보여준다.
- sharing of data, multiuser transaction processing
- 여러명의 유저가 동시에 데이터로 접근하는 것을 제어 해준다. concurrency controll
- transaction
- ACID(atomicity, concistency, isolation, durability) → 시험에 나옴
- Recovery 트랜잭션이 DB에 영구적으로 영향을 가게 해준다.
- OLTP(online Transaction Processing) : DB에 중요한 부분중 하나
- DB의 특징
- Data normalization(데이터 정규화)을 통해 중복을 제어한다.
- 권한이 없는 접근을 제어한다.
- 객체의 영속적 저장을 지원한다. (기존의 DBMS에서는 객체의 저장을 지원하지 않았으나 OODBMS에서는 지원한다.)
- 효율적 질의 처리를 위한 저장 구조 제공(인덱스를 통해서)
- DBMS를 사용하지 않는게 더 좋은 경우
- 초기 투자 자본이 너무 클 때
- 특수한 데이터를 주로 다룰 떄
- 나만 사용할 때
chap2
- data model
- 데이터 모델은 구조, 연산, 제약 조건을 설명한다.
- 데이터 모델의 구조에는 elements와 relationship이 있다.
- valid한 데이터를 위해 특정한 **제약 조건(Constraint)**이 있다.
- 데이터 모델의 종류가 있다.
- Conceptual data model
- 매우 개념적인 모델이다.
- end 유저와 밀접한 관련이 있다.
- Physical data model
- 매우 자세한 모델링이다.
- Implementation data model
- Conceptual data model과 Physical model의 중간 정도
- 대부분의 상용 DB는 해당 모델을 채택한다.
- self-Describing
- XML or JSON
- Conceptual data model
- data base state → 해당 시점에서의 데이터베이스의 내용을 말하며 instance라고도 한다.
- Three-Schma Architecture (제일 중요)
- 목적 : physical database로부터 유저의 application을 분리하기
- Internal Schema(physical schema) : 저장장치의 관점에서 이해하고 표현한다.
- Conceptual Schma(Logical schema) : 데이터 베이스를 이용하는 사용자들의 관점을 통합하여 데이터베이스를 조직 전체의 관점에서 이해하고 표현한다.
- 하나의 데이터 베이스에는 하나의 개념 스키마만 존재한다.
- External Schema(view level) schema : 개별 사용자의 관점에서 데이터베이스를 이해하고 표현한다.
- 외부 스키마는 전체 데이터베이스 중 사용자가 관심을 가지는 일부분으로 볼 수 있어 서브 스키마라고도 한다.
- 스키마 사이의 대응관계를 Mapping이라고 한다.
- data independence (매우 중요!!!!!!!)
- 하위 단계의 데이터 구조가 변경 되어도 상위 단계에 영향을 미치치 않는 속성
- Logical data independence :
- 개념 스키마가 변경되어도 외부 스키마에는 영향을 미치지않도록 지원하는 것
- 논리적 구조가 변경되어도 응용 프로그램에 영향 없음
- Physical data independence :
- 내부 스키마가 변경되어도 외부/개념 스키마에는 영향을 받지 않도록 지원하는 것
- 저장 장치의 구조변경은 응용 프로그램과 개념 스키마에 영향 없음
- tab : 쿼리를 수행한 유저 소유의 모든 테이블 이름
참고