CS/MySQL

[TCPschool][1장] MySQL 시작

pythaac 2021. 7. 24. 21:34
이 글은 "TCPschool/코딩과 데이터/MySQL"을 읽고 주관적으로 작성된 글입니다.

https://tcpschool.com/mysql/intro

 

코딩교육 티씨피스쿨

4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등

tcpschool.com

 

1. MySQL 개요

  • 가장 널리 사용되고 있는 관계형 데이터베이스 관리 시스템
  • 오픈소스
  • 다중 사용자와 다중 스레드 지원
  • C, C++, Java, PHP 등 여러 언어의 API 제공

 

2. 데이터베이스

1) 데이터베이스란?

  • 통합하여 관리되는 데이터의 집합체
  • 데이터베이스 관리
    • 중복된 데이터 제거
    • 자료 구조화
    • 효율적 처리
  • 여러 업무에 여러사용자가 데이터베이스 사용 가능
  • 응용 프로그램과 다르게 별도의 미들웨어에 의해 관리됨
    • 데이터베이스를 관리하는 이러한 미들웨어를 RDBMS라고 함

2) 데이터베이스의 특징

  • 사용자 질의에 즉각적 처리/응답
  • 생성/수정/삭제로 최신 데이터 유지
  • 사용자가 원하는 데이터를 동시에 공유
    • 직렬성(Serializabliity)과 동시성(Concurrency)
      - 직렬성 : transaction이 일정한 순서로 순차 실행되는 것
      - 동시성 : transaction이 구성하는 각 쿼리문이 transaction 순서에 상관 없이 동시 실행
    • 동시성의 문제
      1. The Lost Update Problem
        - 서로 다른 transaction이 동시에 UPDATE할 경우, 한 UPDATE가 overwrite될 수 있음
      2. The Uncommitted Dependency Problem
        1) transaction 1에서 UPDATE 
        2) 1)도중 SELECT
        3) 2)도중 1)에서 오류 발생으로 ROLLBACK
        4) 데이터 불일치
      3. The Inconsistent Analysis Problem
        - 1.과 비슷한데, UPDATE가 손실되는게 아니라 불일치가 일어나는 경우를 말하는 듯
    • Serializable
      - transaction들 중첩되어 실행되어도 순차 실행되는 것과 결과가 같을 때를 의미
      - two-phase locking protocol에 의해 보장될 수 있음
      - two-phase locking protocol : 동시성 제어를 위해 상호 배제 기능을 제공하는 기법
    • 동시성 제한 수준
      1. Repeatable Read(RR)
        - tracsaction들의 실행 순서가 모두 serializable한 것
        - 하나의 레코드에 대한 lock이 transaction이 끝날 때까지 유지
      2. Cursor Stability(CS)
        - 하나의 레코드에 대한 연산이 수행될 때 lock 설정
        - 해당 레코드에 대한 연산이 끝나면 lock이 제거되는 제한 수준

https://untitledtblog.tistory.com/131

 

[관계형 데이터베이스] - 동시성 (Concurrency)

1. 데이터베이스에서의 동시성 데이터베이스는 다수의 사용자들이 동시에 접근하는 경우가 빈번하게 발생한다. 그러나 여러 사용자가 동시에 데이터베이스에 접근하는 상황에서 사용자들에

untitledtblog.tistory.com

  • 사용자가 데이터 주소가 아닌 원하는 데이터 내용을 따라 참조 가능
  • 응용 프로그램과 데이터베이스는 독립되어 데이터의 논리적 구조와 응용 프로그램이 별도로 동작
    • 데이터베이스의 논리적 독립성
      - 프로그램이 변경되어도 데이터베이스의 논리적 구조는 변경되지 않음

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=javaking75&logNo=140164944039 

 

[DB] 1장 데이타베이스 개념 체크 문제

1. 데이터 베이스의 설명중 부적합한 것은? 가. 중복되는 자료를 업애는데 있다. 나. 자료를 세분화해서 세...

blog.naver.com

3) SQL (Structured Query Language)

  • 데이터베이스에서 데이터를 정의 ,조작, 제어하기 위해 사용되는 언어
  • 정의, 조작, 제어 목적에 맞게 3가지로 구분
DDL
(Data Definition Language)
데이터베이스 / 테이블 등 생성, 삭제, 구조 변경 CREATE, ALTER, DROP, ...
DML
(Data Manipulation Language)
데이터베이스에 저장된 데이터 처리, 조회, 검색 INSERT, UPDATE, DELETE, SELECT, ...
DCL
(Data Control Language)
데이터베이스에 저장된 데이터의 보안성/무결성 제어 GRANT, REVOKE, ...

 

3. 관계형 데이터베이스

1) 관계형 데이터베이스란?

  • 테이블로 이루어지고, 테이블은 key와 value의 관계를 나타냄
  • 데이터의 종속성을 관계(relationship)로 표현하는 것이 특징
  • 테이블의 구성
    • 행(row) 또는 튜플(tuple) 또는 레코드(record)
    • 열(column) 또는 필드(field) 또는 속성(attribute)
  • 테이블은 이름을 가지며, 행 / 열 / 행과 열에 대응하는 값을 가짐
  • 관계형 데이터베이스는 테이블들이 다른 테이블들과 관계를 맺고 모여있는 집합체

2) 관계형 데이터베이스의 특징

  1. 데이터의 분류, 정렬 탐색 속도가 빠름
  2. 오래 사용되어 신뢰성이 높고, 어떤 상황에서도 데이터 무결성을 보장
  3. 기존 스키마를 수정하기 어려움
  4. 데이터베이스 부하를 분석하는 것이 어려움

3) 관계형 데이터베이스 용어

  • 열(column)
    • 각 열은 유일한 이름 / 타입을 가짐
  • 행(row)
    • 관계된 데이터의 묶음을 의미
    • 한 테이블의 모든 행은 같은 수의 열을 가짐
  • 값(value)
    • 테이블에서 행과 열에 대응하는 값
    • 열의 타입과 맞는 값
  • 키(key)
    • 기본 키(primary key)
      - 테이블에서 행의 식별자로 이용되는 열
      - 후보 키 중에서 데이터베이스 설계자가 지정한 속성
    • 후보 키(candidate key)
      - 테이블에 저장된 레코드를 고유하기 식별
    • 외래 키(foreign key)
      - 한 테이블의 키 중에 다른 테이블의 행을 식별할 수 있는 키
  • 관계(relationship)
    • 테이블 간의 관계는 관계를 맺는 테이블 수에 따라 다음과 같이 나뉨
      1. 일대일 관계
      2. 일대다 관계
      3. 다대다 관계
    • 이러한 관계를 나타내기 위해 외래 키(foreign key) 사용
  • 스키마(schema)
    • 테이블을 디자인하기 위한 청사진
    • 테이블의 각 열에 대한 항목 / 타입 / 기본 키 / 외래 키를 나타내야함
    • 개체-관계 다이어그램(entity-relationship diagram)이나 문자열로 표현
      - Reservation(ID, Name, Date, RoomNum)

 

4. MySQL 소개

1) MySQL이란?

  • 가장 널리 사용되고 있는 RDBMS (Oracle DB가 가장 많이 사용하는 듯)

https://db-engines.com/en/ranking

  • 오픈소스, 다중 사용자 및 다중스레드, 다양한 언어 API 제공
  • 유닉스, 리눅스, 윈도우 등 다양한 운영체제 지원
  • 특히 PHP와 함께 웹 개발에 자주 사용 (WAMP, LAMP)
  • 오픈소스 라이센스지만 상업 용도는 상업용 라이센스 구입 필요

2) MySQL의 장점

  1. 오픈소스로 무료
  2. 다양한 운영체제 / 언어
  3. 큰 데이터 집합에도 빠르고 효과적
  4. 표준 SQL 형식 사용
  5. MySQL 응용 프로그램을 사용자 용도에 맞게 수정 가능

3) MySQL의 역사

  • 생략