본문 바로가기

KNU Freshman/컴퓨터학개론

(13) 데이터베이스

* 데이터베이스(DB)사용하는 이유

모든(대규모) 웹사이트를 보면 DB있음

Examples:

   – UPS / FedEx tracking

   – Amazon’s/eBay’s websites

   – Wal-Mart’s inventory system

   – Dell’s ordering system

   – Google’s search engine

 

* 데이터관리 시나리오 예시

시나리오

You run a movie rental startup.

Your customers rent DVD copies of movies.

Several copies of each movie.

 

요구사항

Which DVD disks have a customer rented?

Are any disks overdue?

When will a disk become available?

 

<Solution: A “File-based” System>

(Create an) Edit rented.txt file and list.txt file

장점?

텍스트 편집기는 사용하기가 쉬움

데이터를 삽입하고 삭제하기가 쉬움 (really?)

 

<문제점 1: 질의(Query)방법?>

Query 1: ‘Young-Woo Kwon’어떤 영화를 대여하였는가?

Search for ‘Young-Woo Kwon’

Read a movie rent by ‘Kwon’

Repeat it until there is no movie rent by ‘Kwon’

Query 2: 대여기간을 넘긴 영화가 있는가?

Query 1반복하고, 날짜를 읽어 대여기간을 확인함

너무 복잡함!!!

 

<문제점 2: 무결성(Integrity)>

데이터 무결성, 일관성의 어려움

직원이 값과 필드의 이름을 잘못 입력하였다면?

   • Customer: Young-KooKwon, Rent: 중경삼림, Due: May 20, 2024

잘못된 값을 넣거나, 동일한 값이지만 다르게 표현한다면?

   •Customer: Young-Woo Kwon, Rent: Chungking Express, Due: May 20, 2024

필드에 들어가야항목을 빼거나, 다른 순서로 넣는다면?

   •Due: May 20, 2024, Rented: 중경삼림

 

<문제점 3: 갱신(Update)>

모든 레코드에 새로운 필드를 추가/삭제/변경의 어려움

대여점 위치를 추가하고 싶다면?

Customer: Young-Woo Kwon, Rent: 중경삼림, Due: Sep. 5, 2020, Store: Bukgu

Modify the customer field to the first and last name fields

First: Young-Woo, Last: Kwon, Rented: 중경삼림, Due: Sep. 5, 2020, Store: Bukgu

새로운 정보를 저장하고 싶다면?

: 고객 정보를 저장하고 싶어 customer.txt 파일을 생성하고, 고객별로 전화번호를 저장함

customer: Young-Woo Kwon, Phone: 7566

 

<문제점 4: 복수의 사용자>

이상의 직원이 rent.txt 파일을 동시에 수정하는 경우.

   1) Alice starts to edit rent.txt, reads it into memory.

   2) Bob starts to edit rent.txt.

   3) Alice adds a record.

   4) Alice saves rent.txt to disk.

   5) Bob saves rent.txt to disk.

 

<문제점 5: 실행 실패 / 장애>

데이터를 업데이트하는 도중에 시스템 장애가 발생하는 경우

대여점에 영화 DVD반납하였음

직원이 rent.txt 파일에 반납 사실을 기록하는 도중 시스템이 꺼져버리고, 직원은 자리를 떠났음

직원이 돌아왔을 rent.txt 파일에 반납 정보가 기록되지 않았음

 

<문제점 6: 흩어진 데이터>

요구사항: 새로운 영화가 출시되었을 알림을 받기 원함

해결 방안

   – customer.txt 파일에 고객 정보 (전화 / 이메일)기록함

   – list.txt 파일에 새로운 영화가 기록되면 customer.txt 파일에서 고객 정보(다수)읽어 메일을 보냄

   – 알림을 받기 원하는 고객들을 메일링 리스트로 만들어 저장함

문제점

   – 텍스트 편집기를 사용하여 개의 파일에서 정보를 추출하여 합칠 있는 방법은 무엇인가? 엑셀?

   – customer.txtYoung-Woo Kwon여러 명이 있다면?

 

<문제점 7: 보안>

고객은 대여 회수를 알기 원함

rent.txt 파일에 접근할 있도록 하면서, 다른 항목에 대해서 수정이나 열람을 막을 있는 방법이 있는가?

나이에 따라 대여를 제한하고 싶은 경우

새로운 필드를 customer.txt, list.txt만들어서 고객 정보를 확인하고 대여함

 

<문제점 8: 효율성>

고객 수가 급증함

rent.txt file gets huge (gigabytes, terabytes, or more of data).

Slow to open and edit

Slow to query for customer information

 

[텍스트 편집기 사용의 문제점 총정리]

1. 질의방법이 없다.

2. 데이터 무결성, 일관성이 어렵다.

3. 갱신하기 어렵다. 

4. 복수의 사용자를 감당하기 힘들다. 

5. 실행 실패 및 장애가 발생할 가능성 높다.

6. 흩어진 데이터 찾기 힘들다.

7. 보안이 취약하다.

8. 효율성이 떨어진다.

 

* 주요 용어 정리

데이터: 기록될 있는 사실이나 정보

데이터베이스: 데이터의 집합

데이터베이스 관리 시스템(DBMS): 데이터베이스를 생성하고 관리할 있는 소프트웨어 시스템

 

* 데이터베이스의 종류 기본 개념

전통적인 데이터베이스

   – 숫자와 텍스트 정보를 저장하는 데이터베이스

최근의 데이터베이스

   – 멀티 미디어 데이터베이스

   – 지리 정보 시스템 (GIS)

   – Biological and Genome Databases

   – 데이터 웨어하우스

   – 데이터 레이크

   – 모바일 데이터베이스

데이터베이스는 다음을 통해 외부와 상호작용

   - 쿼리 (Query): 데이터 추출위한 명령

   - 트랜잭션 (Transaction): 데이터 삽입 / 삭제 / 읽기 등의 작업 등을 원자성 (atomicity)보장하며 수행

   - 데이터를 인가되지 않은 접근으로 부터 보호하며 쿼리 트랜잭션을 처리함

 

* 최근의 데이터베이스 개발 (1)

최근 IT 기술의 급격한 발전으로 인하여 다양한 데이터베이스 시스템이 등장하고 있음

   – 소셜 미디어는(e.g., Facebook, Twitter, LinkedIn ...) non-traditional data(e.g. posts, tweets, images, and video clips) 데이터를 저장함

      • 빅데이터로 인하여 다양한 형태의 데이터 종류를 저장할 필요가 있어 NoSQL (Not-only SQL) 시스템(Hive, Pig, Hbase, etc.)개발이 늘고 있음

   – Google, Amazon, Yahoo, eBay 등과 같은 기존의 기반 서비스도 검색 결과 저장을 위하여 NoSQL 데이터베이스를 사용함

      • 검색의 편리성, 정확성을 위하여 웹 페이지 정보를 읽어 자신들의 클라우드 서비스를 활용함

          – Google Cloud, Amazon AWS, MSAzure

 

* 최근의 데이터베이스 개발 (2)

NoSQL데이터의 특징과 기능이 변경되는 경우에 사용하기 위한 용어임

   – SQL고정된 데이터를 저장하기 위하여 사용되지만 NoSQL 그렇지 않음

특징

   – 고성능 쓰기 작업, 확장성: Ex) mongoDB, elasticsearch, Cassandra

   – 데이터 저장을 위하여 스키마가 필요없음 (스키마 = table)

   – 느슨한 형태의 무결성 / 일관성 정책을 사용함

   – 최신 언어(Python, Scala, Go, ...)에서 많이 사용됨

   – 분산 컴퓨팅 환경에 적합함

 

* 최근의 데이터베이스 개발 (3)

MongoDB

 

* 최근의 데이터베이스 개발 (4)

Hadoop

빅데이터를 위하여 Map Reduce Programming Model구현한 데이터 저장 / 처리 시스템

Map Reduce Example:

 

* 데이터베이스의 주요 특징

- 데이터 추상화

   - 데이터 모델을 통하여 저장된 데이터에 대한 자세한 사항을 숨기고, 사용자에게는 개념적인 형태로 보여줌

   - 프로그램은 저장된 데이터에 대하여 직접 접근하는 것이 아니라 데이터 모델을 참조하여 데이터에 접근함

 

- 데이터에 대한 다양한 뷰(view) 제공

   - 개별 사용자는 데이터베이스에 대한 서로 다른 뷰를 통해 데이터에 접근함

   - 사용자는 자신이 관심있는 데이터만 볼 수 있음

 

- 데이터 공유와 다수 사용자를 위한 트랜잭션 처리

   - 동시에 다수의 사용자가 데이터에 접근하고, 업데이트하는 것을 허용함

   - DBMS는 동시성 처리를 통해 각 트랜잭션이 정상적으로 실행되거나 취소될 수 있도록 함

 

* 데이터베이스 사용의 장점

- 중복 제어

- 무단 접근 제한

- 프로그램 객체의 영구적인 저장

- 효율적인 질의 처리를 위한 저장 구조 제공

- 질의(queries) 최적화

- 백업 및 복구 서비스 제공

- 다양한 사용자 인터페이스 제공

- 복잡한 데이터 관계 표현

- 무결성 제약 조건 적용

 

* DBMS쓰지 말아야할

• DBMS 사용 비용:

   – 높은 초기 투자 비용 및 추가 하드웨어 필요성 발생 가능

   – 일반성, 보안, 동시성 제어, 복구  및 무결성 기능 제공에 대한 오버헤드 (사업을 운영하는 지속적인 비용)

DBMS가 불필요한 경우:

   – 데이터베이스 및 응용 프로그램이 단순하고, 잘 정의되어 있으며, 변경될 가능성이 없는 경우

   – 다중 사용자의 데이터 접근이 필요하지 않은 경우

DBMS가 불가능할 수 있는 경우:

   – 범용 DBMS가 사용 가능한 저장 공간에 맞지 않는 임베디드 시스템의 경우

 

* 빅데이터의발전

Internet/Online Data

   – Clicks

   – Searches

   – Server requests

   – Web logs

   – Cell phone logs

   – GPS locations

   – User generated contents

   – Entertainment

Healthcare and Scientific Computations

   – Genomics, medical images, health care data, billing data

Graph data

   – Telecommunications network

   – Social networks

   – Computer networks

IoT

   – Sensors

Financial data

 

* 데이터 웨어하우스를 이용한 데이터 처리

Data analysis특징

   – 데이터는 추가되거나 읽혀지기만 한다.

   – 데이터는 절대로 업데이트되거나 삭제되지 않는다.

   – 엄격한 데이터 모델 스키마가 있으며 특정 분석 기법에 맞춰서 데이터가 저장되어 있다.

문제점:

빅데이터 분석에서는 사전에 정의된 데이터 모델이나 스키마를 적용할 없을 있다.

분석 기법이 사전에 정의되지 않는다.

 

* 데이터 레이크를 이용한 데이터 분석

데이터 저장소 관점

   – 데이터는 추가되거나 읽혀지기만 한다.

   – 데이터는 절대로 업데이트되거나 삭제되지 않는다.

   – 데이터는 변경없이 원시 형식으로 저장된다.

   – 메타데이터를 사용하여 데이터의 버전을 관리한다.

데이터 거버넌스(주권) 관점

   – 적절한 메타데이터가 필수적이며, 데이터 관리 주체를 명확히 명시해야 Data Swamp피할 있음

 

* Data Swamps

원시 데이터

찾거나 사용할 없는 형태로 저장된 데이터

민감한 데이터에 대하여 보호되지 않음

 

*파일 시스템과 DBMS의 비교

 

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

데이터베이스 언어

데이터베이스 사용자

데이터 모델

데이터베이스의 개념적 구조

 

 

* 데이터베이스 언어

SQL(Structured query language)

   – 데이터 정의어(DDL, Data Definition Language) /CREATE, ALTER, DROP

   – 데이터 조작어(DML, Data Manipulation Language) / SELECT, INSERT, DELETE, UPDATE

   – 데이터 제어어(DCL, Data Control Language) / GRANT, REVOKE

 

* 데이터베이스사용자

일반 사용자

  – 은행의 창구 혹은 관공서의 민원 접수처 등에서 데이터를 다루는 업무를 하는 사람

  – 프로그래머가 개발한 프로그램을 이용하여 데이터베이스에 접근한 일반인

 

응용 프로그래머

  – 일반 사용자가 사용할 있도록 프로그램을 만드는 사람

  – 자바, C, JSP 등의 프로그래밍 언어와 SQL사용하여 일반 사용자를 위한 사용자 인터페이스와 데이터를 관리하는 응용 로직을 개발

 

SQL 사용자

  – SQL사용하여 업무를 처리하는 IT 부서의 담당자

  – 응용 프로그램으로 구현되어 있지 않은 업무를 SQL사용하여 처리

 

데이터베이스 관리자 (DBA, Database Administrator)

  – 데이터베이스 운영 조직의 데이터베이스 시스템을 총괄하는 사람

  – 데이터 설계, 구현, 유지 보수의 과정을 담당

  – 데이터베이스 사용자 통제, 보안, 성능 모니터링, 데이터 전체 파악 관리, 데이터 이동 복사 제반 업무를

 

* DBMS의 기능

 

* 데이터모델

계층 데이터 모델 (hierarchical data model)

네트워크 데이터 모델 (network data model)

객체 데이터 모델 (object data model)

관계 데이터 모델 (relational data model) -> 제일 많이 쓰임

객체-관계 데이터 모델 (object-relational data model)-> 관계 데이터 모델과 객체 데이터 모델의 장점을 결합한 모델

 

데이터 모델 -> 데이터베이스 시스템에서 데이터를 저장하는 이론적인 방법

 

* 데이터 모델 사용

1) 포인터 사용: 계층 데이터 모델, 네트워크 데이터 모델

 

2) 속성 사용: 관계 데이터 모델

 

3) 객체식별자 사용: 객체 데이터 모델

* 데이터 모델과 각 모델에서 관계의 표현 방법

* 데이터 모델의 발전 역사

 

 

* 3단계 데이터베이스 구조(ANSI)

<스키마 구조>

(!스키마 = Table 무방!)

외부 스키마

    – 일반 사용자나 응용 프로그래머가 접근하는 계층으로 전체 데이터베이스 중에서 하나의 논리적인 부분임

    – 여러 개의 외부 스키마(external schema)있을 있음

    – 서브 스키마 (sub schema)라고도 하며, (view)개념임

    – () 대학 데이터베이스 학생처의 학생 정보, 교무처 수강 정보, 취업처 취업 정보

개념 스키마
    – 전체 데이터베이스의 정의를 의미
    – 통합 조직별로 하나만 존재하며 데이터베이터 관리자관리함
    – 하나의 데이터베이스에는 하나의 개념 스키마 (conceptual schema)있음
 
내부 스키마
    – 물리적 저장 장치에 데이터베이스가 실제로 저장되는 방법의 표현
    – 내부스키마(internal schema)하나
    – 인덱스, 데이터 레코드의 배치 방법, 데이터 압축 등에 관한 사항이 포함됨
 
<매핑>
매핑: 개념 스키마에서 일부 추출된 외부/내부 스키마 
  • 외부 / 개념 매핑
     – 사용자의 외부 스키마와 개념 스키마 간의 매핑
     – 외부 스키마의 데이터가 개념 스키마의 어느 부분에 해당되는지 대응 시킴
 
  • 개념 / 내부 매핑
     – 개념 스키마의 데이터가 내부 스키마의 물리적 장치 어디에 어떤 방법으로 저장되는지 대응 시킴
 
 
 

 

 

* ER Diagram --> Entity Relation

개념적 모델링: 복잡한 현실 세계를 단순화하고 데이터베이스의 논리적 구조를 시각적으로 표현하는 도구

주요 구성 요소:

     – 개체 (Entity): 데이터베이스에 표현될 대상(: 학생, 강좌, 교수)

     – 속성 (Attribute): 개체의 특징 (: 학번, 이름, 학과)

     – 관계 (Relationship): 개체 간의 연관성 (: 수강, 지도)

데이터베이스 설계의 첫 걸음: ER 다이어그램을 통해 데이터베이스 구조를 명확히하고 효율적인 설계 가능

 

<ER Diagram활용>

논리적 모델링: 개념적 ER 다이어그램을 구체화하여 실제 데이터베이스 구현에 필요한 세부 정보 추가

   – 기본 키 (Primary Key): 개체를 고유하게 식별하는 속성

   – 외래 키 (Foreign Key): 관계를 나타내는 속성

소통 협업 도구

   – 개발자, 데이터베이스 관리자, 사용자 간의 효과적인 의사소통 수단

데이터베이스 관리 시스템 (DBMS) 생성

   – ER 다이어그램을 기반으로 데이터베이스 스키마 자동 생성 가능

데이터 무결성 유지

   – 데이터베이스 제약 조건 설정을 통해 데이터 정확성 일관성 보장

'KNU Freshman > 컴퓨터학개론' 카테고리의 다른 글

(15) 인공지능  (0) 2024.06.09
(14) 소프트웨어공학  (0) 2024.06.09
(12) 분산시스템 / 클라우드  (0) 2024.06.03
(11) 네트워크  (1) 2024.06.03
(10) 통신의 발전 과정  (0) 2024.05.20