[DB] 1. 데이터 베이스 기초

sosimeow·2022년 10월 7일
0

Database

목록 보기
1/1
post-thumbnail

개인 학습을 위해 아래 docs 및 추가 자료를 참조해 작성한 기록 포스팅입니다.
http://bigdata.dongguk.ac.kr/lectures/DB/_book/MySQL1.html

1. 개요

Database 란

여러 응용프로그램 또는 사용자들이 공유|이용 할 수 있도록 체계적으로 통합, 저장한 데이터들의 집합
쉽게 데이터들을 저장하고 조회하는 프로그램이라 이해할 수 있다.

  • 데이터베이스는 단순한 저장소를 넘어 데이터 중복이 있을 경우 이를 통합하여 구조적이고 효율적으로 데이터를 저장한다.

1) 데이터베이스의 데이터 특징

데이터베이스가 구조적인 형태를 유지하며 데이터를 저장하기 위해 아래와 같은 데이터 저장 규칙이 있다.

통합된 데이터 (Integrated Data)
여러가지 데이터를 통합해 저장하는데 중복된 정보를 그대로 저장하면 용량 낭비가 발생한다. 따라서 데이터베이스는 중복된 정보에 대해 데이터를 통합하여 자료의 중복을 최소화하고자 한다.

저장된 데이터 (Stored Data)
컴퓨터가 접근할 수 있는 매체에 데이터를 저장한다.

운영 데이터 (Operational Data)
데이터베이스는 주로 조직의 목적을 위해 존재하고 활용되는 운영 데이터를 다루는데 이용된다.
ex) 쇼핑몰의 판매량이나 재고량 등

공유 데이터 (Shared Data)
여러 사람들이 공유하고 사용할 목적으로 통합 관리되는 데이터이다. 데이터베이스라는 sw 를 사용하는 가장 근본적인 이유가 된다. 하나의 컴퓨터나 시스템을 위한 데이터가 아니라 여러 시스템들이 공용으로 액세스하여 이용한다.

2) 데이터베이스의 기능 특징

  1. 최소한의 중복 (minimal redundancy) 만을 허용하는 통합 데이터(intergrated data)
  2. 실시간 접근성 (Real-Time Accessibility) : 데이터베이스는 사용자의 요구에 신속 정확하게 응답이 가능해야 한다. (검색, 주문 등의 작업)
  3. 지속적이고 동적인 변화 (Continuous Evolution) : 데이터의 Insert, Delete, Update 로 항상 최신의 데이터를 유지해 현실세계를 반영한다.
  4. 실제 데이터에 의해 참조 가능 (Content Reference) : 데이터베이스에 있는 데이터를 참조할 때 사용자의 요구에 따른 데이터 내용으로 데이터의 위치나 주소를 찾음. (주소 x)
  5. 동시 공용 (Concurrent Sharing) : 다수의 사용자가 동시에 같은 내용의 데이터를 이용할 수 있어야 한다. (여러 고객이 같은 상품을 동시에 주문)

데이터 베이스의 목표

  1. 지속적인 데이터 관리와 보호 가능
  2. 안정성을 보장 가능
  3. 무결성을 보장 가능



2. DBMS : Database Management System

데이터베이스를 관리하기 위해 필요한 sw패키지 집합체

주요 기능

  • 데이터의 추가/조회/변경/삭제
  • 데이터의 무결성 체크
  • 트랜잭션 관리
  • 데이터의 백업 및 복원
  • 데이터 보안 관리

이미지 출처


DBMS 발전 과정

1) 파일시스템 (ISAAM, VSAM)
2) 계층형(Hierahical) HDBMS (IMS, System2000)

  • 데이터를 트리 구조로 표현하는 방식
  • 데이터 접근 속도가 빠르지만, 데이터의 중복이 많고 구조 변경이 어려우며 관계 표현에 제한이 있다.

3) 네트워크형 (Network) NDBMS (IDS, TOTAL, IDMS)

  • 데이터를 그래프 구조로 표현하는 방식 (노드, 링크)
  • HDBMS 보다 관계 표현이 유연하고 다대다 관계를 지원하지만, 구성과 설계가 복잡하고 데이터 종속성을 해결하지 못했다.

4) 관계형 (Relational) RDBMS (Oracle, My-SQL, DB2, SQL Server, Sybase..)

  • 데이터를 테이블 형태로 표현하는 방식 (테이블 간 외래키로 관계 표현)
  • 데이터 중복을 최소화하고 구조 변경이 쉬우며, SQL 을 사용해 데이터를 쉽게 조작할 수 있는 장점이 있다.
  • ACID 원칙을 준수하여 데이터 무결성과 일관성을 보장한다.
    5) 객체지향 (Object Oriented) ODBMS (Object Store, UniSQL)
  • 데이터를 객체 형태로 표현하는 방식
  • 성능 이슈와 표준화 부족, SQL 호환 x 등의 단점을 거의 사장됨.

6) NO SQL (Not Only SQL)

  • 테이블 형태의 관계형 모델이 아닌 여러가지의 모델로 데이터를 표현하는 방식. (Document, Key-Value, Graph 등으로 데이터를 나타낼 수 있다.)
  • 어느 한 가지 형태의 데이터베이스를 지칭하지 않고, RDBMS 의 테이블 형태가 아닌 형태를 띈 DB 를 총칭.
  • RDBMS 보다 확장성과 가용성이 높고 유연한 스키마를 가지지만, 데이터의 일관성이 항상 보장되지 않고 기존 SQL과 호환되지 않는 단점이 있다.
  • 대용량 데이터나 분산 처리에 매우 빠르게 대응 가능해 SNS 에서 쓰인다.
  • MongoDB, HBase, Cassandra, Redis

DBMS 제품


이미지 출처


-> 아래 기사를 통해 현재 점유율 1위는 MS, 2위는 AWS 임을 확인 가능 http://www.nextdaily.co.kr/news/articleView.html?idxno=205566



Data Warehouse : DW

분석을 위하여 여러 개의 데이터 저장소들에 흩어져 있는 각종 데이터를 하나의 저장소로 모은 데이터베이스

  • 일반적인 operational DB 와는 구별되는 analytical DB
  • Data warehousing : DW 를 구축하고 사용하는 프로세스



Database Object

DB 의 구성 요소 중 테이블이 가장 중요. 이 외에도 여러 종류의 자료 형태가 존재하는데, 이러한 DB를 구성하는 개별 단위 요소를 객체(Object) 라고 한다.

항목설명
테이블행과 열로 구성된 2 차원적인 표
시퀀스정수형 번호표 생성기
인덱스데이터 검색 속도를 향상시키기 위한 자료 구조
프로시저반한 타입이 없는 객체
함수반환 타입이 있는 객체






3. 관계형 데이터 모델

  • data model : 현실 자료를 추상화하여 정형화된 형태로 표현하는 방식
  • database model
    • DBMS 가 지원하는 공식 언어로 기술된 DB 구조나 형식
    • DBMS 와 결합하는 데 사용되는 데이터 모델
  • 관계형 데이터 모델(relation data model) : 테이블 형식(2차원 구조)을 이용하여 데이터를 정의하고 설명하는 데이터 모델
  • 관계형 데이터 베이스 : 관계형 데이터 모델을 이용한 데이터베이스



Relation Data Model 관계형 데이터 모델


이미지 출처


relation data model 용어

  • tuple (튜플, 레코드)

    • 유일성(uniqueness) : 테이블 내에는 2개 이상의 동일 튜플이 존재할 수 없음
    • 튜플들은 순서를 갖지 않음
  • attribute (속성, column, 통계데이터에서는 variable)

    • 순서를 갖지 않음
    • 속성값(attribute value) 는 반드시 원자값(atomic value)
  • table schema

    • DBMS 에서 데이터 구조를 기술
  • database schema

    • shcema : 구조와 표현법에 대한 정의
  • key : 테이블에서 특정 튜플을 식별 가능하게 하는 속성의 집합.

    • super key : 아무런 제약없이 튜플을 구분할 수 있는 속성의 집합, ex) (학번, 주민등록번호)
    • candidate key : 키 중 최소한의 속성만으로 구성된 키 ex) 주민등로번호
    • primary key : 후보키 중 하나만을 선택하여 식별자로 사용
    • foreign key : 다른 테이블의 기본키를 참조






4. SQL 개요

SQL(Structured Query Language)

DBMS 를 다루기 위한 표준언어, 응용프로그램과 DBMS 사이의 중간 다리 역할 담당

SQL 의 역할 분류
SQL은 (1)DBMS 를 제어, (2)데이터를 정의, (3)데이터를 조작으로 분류할 수 있으며 각 역할에 따라 SQL은 세가지 언어로 구성

1. DCL (Data Control Language, 데이터 제어 언어)

1) DB 에서 데이터 액세스를 제어
2) 데이터베이스에 접근하고 객체들을 사용하도록 권한부여(GRANT) 또는 회수(REVOKE)하는 명령어

2. DDL (Data Definition Language, 데이터 정의 언어)

1) 데이터의 저장 구조를 정의하는 언어 (테이블 등)
2) DB스키마, 테이블스키마를 정의, 수정, 삭제/인덱스의 생성 및 삭제를 (CREATE: 생성, ALTER: 변경, DROP: 삭제, RENAME: 이름변경, TRUNCATE)

  • DROP vs TRUNCATE

    TRUNCATEDROP
    처리속도빠름(한 줄씩 처리하는 DELETE 보다)빠름
    commit자동자동
    Rollback 가능 여부불가불가
    OUTPUT테이블을 CREATE 한 직후 상태로 되돌림테이블까지 삭제

3. DML (Data Manipulation Language, 데이터조작 언어)

1) 데이터에 접근 및 조작하는 언어
2) 튜플의 검색, 삽입, 삭제 수정과 같은 명령문

  • SELECT: 데이터 조회 명령어로 RETRIEVE 라고도 함
  • INSERT UPDATE DELETE: 데이터에 변형을 가하는 명령어 (삽입, 수정, 삭제) )

4. TCL (Transaction Control Lanquage, 트랜잭션 제어어)

1) 논리적인 작업의 단위를 묶어서 DML 에 의해 조작된 결과를 작업단위(트랜잭션) 별로 제어하는 명령어

  • COMMIT
  • ROLLBACK
  • SAVEPOINT



SQL 역할별 구문 작성법

1. SQL 데이터 제어문: 데이터베이스 객체 이용권한 부여

- GRANT
- DENY
- REVOKE

GRANT CREATE TABLE TO '사용자 계정'

2. SQL 데이터베이스/테이블 정의문 : DB 객체 생성, 삭제, 수정

- CREATE : 생성
- DROP : 삭제
- ALTER : 수정

CREATE DATABASE [데이터베이스_이름]

3. SQL 데이터 조작문 : 테이블 검색, 삽입, 갱신, 삭제

- SELECT
- INSERT
- UPDATE
- DELETE

https://inpa.tistory.com/entry/DB-%F0%9F%93%9A-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-%EA%B8%B0%EC%B4%88-%EA%B0%9C%EB%85%90
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=idjoopal&logNo=221559099309

profile
데이터 엔지니어 ing

0개의 댓글