데이터베이스 시스템

김민규·2023년 9월 24일
0

DB system

목록 보기
1/14

데이터베이스와 데이터베이스 시스템

데이터, 지식, 정보

데이터 : 날것의 측량 값, 수치로만 존재하는 정보. raw Data라고도 함.
정보 : 실제로 사용할 수 있는, 의미를 부여한 데이터
-> 데이터 자체로도 사용이 가능하다면 정보가 될 수 있음.
지식 : 정보들 간 관계를 통해 얻은 유의미한 정보

데이터베이스란?

조직에 필요한 정보를 얻기 위해 논리적으로 연관된 데이터를 모아 구조적으로 통합해 놓은 것
데이터베이스 시스템은 데이터의 검색과 변경 작업을 주로 수행함
변경이란 시간에 따라 변하는 데이터 값을 데이터베이스에 반영하기 위해 수행하는 삽입, 삭제, 수정 등의 작업을 말함

데이터베이스의 개념

통합된 데이터(integrated data)
데이터를 통합하는 개념으로, 각자 사용하던 데이터의 중복을 최소화하여 중복으로 인한 데이터 불일치 현상을 제거

저장된 데이터(stored data)
문서로 보관된 데이터가 아니라 디스크, 테이프 같은 컴퓨터 저장장치에 저장된 데이터를 의미

운영 데이터(operational data)
조직의 목적을 위해 사용되는 데이터, 즉 업무를 위한 검색을 할 목적으로 저장된 데이터

공용 데이터(shared data)
한 사람 또는 한 업무를 위해 사용되는 데이터가 아니라 공동으로 사용되는 데이터를 의미

데이터베이스의 특징

실시간 접근성(real time accessibility)
데이터베이스는 실시간으로 서비스된다. 사용자가 데이터를 요청하면 몇 시간이나 몇 일 뒤에 결과를 전송하는 것이 아니라 수 초 내에 결과를 서비스한다.

계속적인 변화(continuous change)
데이터베이스에 저장된 내용은 어느 한 순간의 상태를 나타내지만, 데이터 값은 시간에 따라 항상 바뀐다. 데이터베이스는 삽입, 삭제, 수정 등의 작업을 통하여 바뀐 데이터 값을 저장한다.

동시 공유(concurrent sharing)
데이터베이스는 서로 다른 업무 또는 여러 사용자에게 동시에 공유된다. 동시는 병행이라고도 하며, 데이터베이스에 접근하는 프로그램이 여러 개 있다는 의미이다.

내용에 따른 참조(reference by content)
데이터베이스에 저장된 데이터는 데이터의 물리적인 위치가 아니라 데이터 값에 따라 참조된다.

정보 시스템의 발전

파일 시스템

데이터를 파일 단위로 파일 서버에 저장
각 컴퓨터는 LAN을 통해 파일 서버에 연결, 파일 서버에 저장된 데이터를 사용하기 위해
각 컴퓨터의 응용 프로그램에서 열기/닫기(open/close)를 요청
각 응용 프로그램이 독립적으로 파일을 다루기 때문에 중복 저장될 가능성이 높음
동시에 파일을 다루기 때문에 데이터의 일관성이 훼손될 수 있음

데이터베이스 시스템

DBMS를 도입하여 데이터를 통합 관리하는 시스템
DBMS가 설치되어 데이터를 가진 쪽을 서버(server), 외부에서 데이터 요청하는 쪽을 클라이언트(client)라고 함
DBMS 서버가 파일을 다루며 데이터의 일관성 유지, 복구, 동시 접근 제어 등의 기능을 수행
데이터의 중복을 줄이고 데이터를 표준화하며 무결성을 유지함

웹 데이터베이스 시스템

데이터베이스를 웹 브라우저에서 사용할 수 있도록 서비스하는 시스템
불특정 다수 고객을 상대로 하는 온라인 상거래나 공공 민원 서비스 등에 사용됨

분산 데이터베이스 시스템

여러 곳에 분산된 DBMS 서버를 연결하여 운영하는 시스템
대규모의 응용 시스템에 사용됨
-> 빅데이터에서 이 아키텍처의 개념을 많이 차용함.
빅데이터 처리의 시스템(하드웨어?) 아키텍처쪽은 이쪽과 비슷한 형태이다.
빅데이터 분석은 ai와 비슷함.

비전공자, 통계학자 등도 사용하기 때문에 데이터베이스는 일반적으로 시작 인덱스가 0인것과 다르게 1부터 시작한다. R 또한 동일.

파일시스템과 DBMS

데이터 저장방식

  1. 프로그램 내부에 저장
    코드에 데이터 자체를 저장하는 코드를 작성하게됨.
    데이터 변경시 매번 컴파일
    메모리 내부에 저장하는 기술을 만들어도 시스템 다운시 물리적으로 저장되지 않기 때문에 데이터가 사라질 수 있음. (=데이터 안정성이 떨어짐)

  2. 파일시스템
    프로그램 내부 저장 방식보다 데이터 변경에 대한 제약이 약해짐.
    데이터 구조자체가 바뀌면 다시 컴파일 해야함.
    같은 파일을 두 개의 프로그램이 공유하는 것이 운영체제 도움없이 불가능.

  3. 데이터베이스
    파일 시스템 방식보다 데이터 구조 변경에 대한 제약이 약해짐.
    어느 정도는 안바꿔도됨.
    데이터 값이 바뀌거나 구조가 바뀌어도 다시 컴파일 할 필요없음.

데이터베이스 시스템의 구성

데이터베이스 언어

SQL
데이터 정의어(DDL, Data Definition Language)
데이터 정의어는 scheme, 즉 머리글?카테고리? 데이터베이스의 전체적인 구조를 정의할 때 사용
create, drop table 등이 있다고한다.

데이터 조작어(DML, Data Manipulation Language)
데이터 조작어는 일반적으로 SQL이라고 하면 이것을 말한다.
select, from 등 일반적으로 데이터를 조작하거나, 지우거나 하는 명령어로 구성됨

데이터 제어어(DCL, Data Control Language)
데이터 제어어는 데이터 조작. 트랜잭션이라고 하는데 이건 다음학기에 한다고함~

데이터베이스 사용자의 구분

일반사용자
은행의 창구 혹은 관공서의 민원 접수처 등에서 데이터를 다루는 업무를 하는 사람
프로그래머가 개발한 프로그램을 이용하여 데이터베이스에 접근 일반인

응용프로그래머
일반 사용자가 사용할 수 있도록 프로그램을 만드는 사람
자바, C, JSP 등 프로그래밍 언어와 SQL을 사용하여 일반 사용자를 위한 사용자 인터페이스와 데이터를 관리하는 응용 로직을 개발

SQL 사용자
SQL을 사용하여 업무를 처리하는 IT 부서의 담당자
응용 프로그램으로 구현되어 있지 않은 업무를 SQL을 사용하여 처리

데이터베이스 관리자(DBA, Database Administrator)
데이터베이스 운영 조직의 데이터베이스 시스템을 총괄하는 사람
데이터 설계, 구현, 유지보수의 전 과정을 담당
데이터베이스 사용자 통제, 보안, 성능 모니터링, 데이터 전체 파악 및 관리, 데이터 이동 및 복사 등 제반 업무를 함.

SQL 사용자와 DBA의 차이점?
DBA는 시스템을 직접 관리한다.
DBL, DCL 등을 사용하여 테이블 구조 설계하고 전체적인 관리를 한다고 함.

DBMS의 기능

데이터 모델의 구분

계층 데이터 모델(hierarchical data model)
네트워크 데이터 모델(network data model)
객체 데이터 모델(object data model)
관계 데이터 모델(relational data model) -> 가장 많이 쓰임
객체-관계 데이터 모델(object-relational data model) -> 관계 데이터 + 객체 데이터

계층 데이터 모델과 네트워크 데이터 모델의 차이

계층 데이터 모델의 경우 트리 구조와 같다.
네트워크 모델의 경우 사이클이 존재한다. (=그래프 구조)
이 둘은 파일 시스템을 기반으로 제작되었다.

관계 데이터 모델
포인터가 없는 대신 속성값을 이용한다.
ex) 가리키는 id값이 포인터 대신 저장됨.
관계 데이터모델이 나오면서 DBMS 소프트웨어가 나오기 시작했다.
RDBMS, 관계 데이터 모델은 크기를 정해주어야했다. 굉장히 큰 텍스트 같은 경우 쿼리 등이 동작할 수 없기 때문에 넣어줄 수 없었다고 함.

객체 데이터모델
객체 데이터 모델은 objectid, 객체 식별자를 이용한다.
1990년대에 객체지향언어 c++, java등이 나오면서 객체 데이터 모델도 등장했다. 생각했던 만큼 실용적이지는 않아서 사장되었다는 듯? 몰?루
객체 데이터 모델에서 객체는 객체지향 프로그래밍과 다르게 메소드가 존재하지 않았기 때문.
모델 자체는 객체와 관계의 차이는 없었다.

객체지향의 특징을 이용했기 때문에 클래스의 변수(=참조변수)를 저장할 때 주소값을 가져서 메모리를 많이 차지하지 않는다.
포인터 개념의 중복값을 사용하기 때문에, 실제 파일의 롱텍스트와 같은 큰 값도 주소값으로 지정하여 사용가능함.
참조를 사용한다는 것이 속성값에 큰 데이터를 넣어줄 수 있게 해준다.
오라클에서 BLOB이라는 속성을 이용해 RDBMS에서 유사하게 구현했다고 한다?

DB의 개념적 구조

외부 스키마

일반 사용자나 응용 프로그래머가 접근하는 계층으로 전체 데이터베이스 중에서 하나의 논리적인 부분을 의미
여러 개의 외부 스키마(external schema)가 있을 수 있음
서브 스키마(sub schema)라고도 하며, 뷰(view)의 개념임
student 테이블이 있으면 학번, 주소 같은 정보들을 사용자 권한에 따라서 볼 수 있는것만 보여줘야 한다.
개인정보라던가... 이런걸 뷰라고 따로 만들어서 제공해줌. 윈도우라고 생각하면 된다.
접근할 수 있는 데이터 설정?

개념 스키마

전체 데이터베이스의 정의를 의미
통합 조직별로 하나만 존재하며 DBA가 관리함
하나의 데이터베이스에는 하나의 개념 스키마(conceptual schema)가 있음
테이블 내부에도 하나의 관계(relation)가 존재함.
테이블간의 관계는 relationship.
하나의 데이터를 record, tuple, row 등으로 부름.

내부 스키마

물리적 저장 장치에 데이터베이스가 실제로 저장되는 방법의 표현
내부 스키마(intenal schema)는 하나
인덱스, 데이터 레코드의 배치 방법, 데이터 압축 등에 관한 사항이 포함됨
= DBMS가 자체적으로 관리한다.
인덱스, 데이터 같은 파일로 저장되는 실제 데이터.
인덱싱 같은 것도 DBA가 보통 관리한다.
인덱싱은 테이블 검색을 빨리하기 위해 Primary key를 설정해주는 것. sorting 되있는 것을 빠르게 찾게 하는 것임.
DBMS는 B-tree 형태로 인덱스를 저장한다.

  • B-tree의 자식노드 수는 시간복잡도에서 log의 밑이 된다.
    ex) 1e4의 데이터를 B-tree에 저장할 때, 자식노드가 10개일 경우 탐색 시 시간복잡도는 5가됨.

외부/개념 매핑

사용자의 외부 스키마와 개념 스키마 간의 매핑(사상)
외부 스키마의 데이터가 개념 스키마의 어느 부분에 해당되는지 대응시킴

개념/내부 매핑

개념 스키마의 데이터가 내부 스키마의 물리적 장치 어디에 어떤 방법으로 저장되는지 대응시킴

  • scheme type 정의 시:
    char - 자리가 정해져있어 검색도 빠르다. 항상 자리가 고정되어 있다.
    var char - 자리가 가변적이기 때문에 주소를 저장할 때 사용
    fixed라는 것도 있다고 함.
    효율성에 따라서 두개중에 하나를 사용한다.

데이터 독립성

논리적 데이터 독립성(logical data independence)

외부 단계(외부 스키마)와 개념 단계(개념 스키마) 사이의 독립성
개념 스키마가 변경되어도 외부 스키마에는 영향을 미치지 않도록 지원
논리적 구조가 변경되어도 응용 프로그램에는 영향이 없도록 하는 개념
개념 스키마의 테이블을 생성하거나 변경하여도 외부 스키마가 직접 다루는 테이블이 아니면 영향이 없음

물리적 데이터 독립성(physical data independence)

개념 단계(개념 스키마)와 내부 단계(내부 스키마) 사이의 독립성
저장장치 구조 변경과 같이 내부 스키마가 변경되어도 개념 스키마에 영향을 미치지 않도록 지원
성능 개선을 위하여 물리적 저장 장치를 재구성할 경우 개념 스키마나 응용 프로그램 같은 외부 스키마에 영향이 없음
물리적 독립성은 논리적 독립성보다 구현하기 쉬움

profile
근거 없는 자신감 박살난 사고력 아무튼 할 수 있다

0개의 댓글