TIL - MYSQL

HyeBin, Park·2022년 3월 29일
0

TIL

목록 보기
7/12
post-thumbnail

MYSQL

  • 1995년 스웨덴 회사였던 MySQL AB에 의해 개발된 관계형 데이터베이스
  • My는 개발자 중 한 사람의 딸의 이름 !?!!
  • MySQL : 오픈소스로 무료, MySQL과 인터페이스는 동일하나 성능은 더 좋음
  • MariaDB : 유료버전과 무료버전이 있음

특징

  • 한동안 웹개발 표준 기술 스택 중의 하나였음 => Linux Apache MySQL, PHP
  • 지금도 Postrgrest와 함께 가장 널리 쓰이는 프로덕션용 관계형 데이터베이스

용량 증대 방식

  • Scale-Up : 서버에 CPU와 Memory 추가
  • Sacle-Out : Master-Slave 구성, 일반적으로 클러스터 구성을 말함, MySQL은 지원하지 못함

클라우드

  • 컴퓨팅 자원을 네트웍을 통해 서비스 형태로 제공
  • No Provisioning : 준비할 필요없음
  • Pay As You Go : 지불만 하면 된다
  • 자원을 필요한만큼 거의 실시간으로 할당하여 사용한만큼 지불 => 필요한만큼의 자원을 유지하는 것이 중요

AWS (Amazon Web Service)

  • 가장 큰 클라우드 컴퓨팅 서비스 업체
  • 202년 아마존의 상품데이터를 API로 제공하면서 시작
  • 다수의 상장업체들과 많은 국내 업체들도 사요이작

EC2 - Elastic Cloud Compute

  • AWS의 서버 호스팅 서비스
    • 리눅스 혹은 윈도우 맥 서버를 론칭하고 로그인 가능
    • 가상 서버들이라 전용서버에 비해 성능이 떨어짐
    • Bare-metal 서버도 제공하기 시작
  • 다양한 종류의 서버 타입 제공
  • 구매 옵션
    • On-Demand : 시간당 비용을 지불되며 가장 흔히 사용하는 옵션
    • Reserved : 1년이나 3년간 사용을 보장하고 1/3정도에서 40% 디스카운트를 받는 옵션
    • Spot Instance : 일종의 경매방식으로 놀고 있는 리소스들을 보다 싼 비용으로 사용할 수 있는 옵션

S3 - Simple Storage Service

  • 아마존이 제공하는 대용량 클라우드 스토리지 서비스
  • 데이터 저장관리를 위해 계층적 구조를 제공
  • 글로벌 네임스페이스를 제공하기 때문에 디렉토리 이름 선정에주의
  • 디렉토리를 버킷이라고 부름
  • 버킷이나 파일별로 액세스 컨트롤 가능

AWS RDS

  • AWS가 제공해주는 다양한 관계형 데이터베이스 서비스

Docker

  • MySQL을 다른 OS에서 설치하려면 다양한 변수가 존재
    => 즉, 설치 과정이 OS와 OS버전에 따라 달라지게 됨
    => 다양한 다수의 소프트웨어들의 설치가 동반되는것이 일반적
  • Docker는 특정 프로그램과 그 프로그램을 실행하는데 필요한 기타 소프트웨어들을 하나의 패키지로 만들고 해당 프로그램의 개발과 사용을 도와주는 오픈소스 플랫폼
    • 이 패키지를 먼저 파일 시스템 형태로 만드는데 이를 Docker Image라고 한다.
    • Image는 다른 이들과 공유가능, 공유소를 Docker Registry 라고 부름
  • Docker Image를 실행시킨 것을 Docker Container라고 부름

관계형 데이터베이스 예제 - 웹 서비스 사용자/세션 정보

사용자 ID : 보통 웹서비스에서는 등록된 사용자마다 부여하는 유일한 ID

세션 ID : 세션마다 부여되는 ID

  • 세션 : 사용자의 방문을 논리적인 단위로 나눈것
    • 사용자가 외부 링크를 타고 오거나 직접 방문해서 올 경우 세셩을 생성
    • 사용자가 방문 후 30분간 interaction이 없다가 뭔가를 하는 경우 새로 세션을 생성
    • 사용자는 여러 개의 세션을 가질 수 있음

테이블 필드의 중요 속성

(1) PRIMARY KEY

  • 테이블에서 레코드의 유일성을 정의하는 필드
  • 중복된 값 x
  • Composite primary key : primary key가 두개 혹은 그 이상의 필드로 정의되는 경우

(2) FOREIGN KEY

  • 테이블의 특정 필드가 다른 테이블의 필드에서 오는 값을 갖는 경우

(3) NOT NULL

  • 필드의 값이 항상 존재해야하는 경우

(4) DEFAULT VALUE

  • 필드에 값이 주어지지 않은 경우 기본값을 정의해줌
  • timestamp 타입 : CURRENT_TIMESTAMP를 사용하면 현재 시간으로 설정됨

0개의 댓글