CS/데이터베이스

Week3 오라클과 MySQL

호프 2023. 10. 30. 11:16

Oracle

오라클 개요

  • 오라클 사가 개발한 관계 DBMS - 가장 높은 시장 점유율
  • 유닉스, 리눅스, 윈도우 등 대부분의 운영체제를 지원
  • 온라인 트랜잭션 처리(OLTP: Online Transaction Processing), 데이터 웨어하우스, OLAP(Online Analytic Processing), 전자 상거래 등 최근에 등장하고 있는 데이터베이스의 중요한 응용 분야에 활용 가능

오라클 서버와 인스턴스

  • 오라클 서버: 오라클 인스턴스 + 오라클 데이터베이스
  • 오라클 인스턴스: 백그라운드 프로세스들과 메모리 구조의 조합
  • 접속(connection): 사용자 프로세스와 서버 프로세스 간의 통신 경로 - 사용자가 오라클 서버에 SQL 문을 입력하기 전에 반드시 오라클 인스턴스에 연결되어 있어야 함
  • 세션(session): 사용자가 오라클 서버로부터 인증될 때부터 시작하여 사용자가 로그아웃을 하거나 비정상적으로 종료될 때까지 지속

오라클 특징

  • 클라이언트 / 서버 환경 (분산 처리)
  • 대규모 데이터베이스
  • 다중 동시 데이터베이스 사용자
  • 높은 가용성, 높은 보안 관리
  • 멀티 미디어 데이터 타입 등 다양한 데이터 타입 지원

오라클 데이터베이스의 저장 구조

물리적인 저장구조

  • 데이터베이스의 물리적 구조는 데이터베이스 내의 운영체제 파일 (datafile) 들의 집합
  • 각 데이터 파일은 운영체제 블록들로 이루어짐

논리적인 저장 구조

데이터베이스 > 테이블 스페이스 > 세그먼트 > 익스텐트 > 오라클 데이터 블록
  • 오라클 데이터베이스는 적어도 하나 이상의 테이블 스페이스를 포함한다
  • 테이블 스페이스: 데이터파일이라고 부르는 하나 이상의 파일로 구성 - 시스템 테이블스페이스, 임시 테이블스페이스, 사용자 테이블스페이스 등으로 구분
  • 테이블 스페이스는 하나 이상의 세그먼트를 포함한다.
  • 세그먼트: 특정한 유형의 데이터 구조를 저장하기 위해 할당되는 익스텐트들의 집합
  • 익스텐트: 오라클 데이터 블록 (물리적 구조의 운영체제의 데이터 블록과는 다른 것) 들로 이루어짐
    • 오라클 데이터 블록은 읽기와 쓰기 연산의 가장 작은 단위 -> 데이터 파일 내의 데이터를 오라클 데이터 블록들로 관리

MySQL

MySQL 개요

  • 오라클 사의 DBMS 소프트웨어로 오픈소스로 제공, 교육용으로는 제한 없이 사용 해도 되지만 상용으로 사용하기 위해서는 상용 라이센스 필요

MySQL과 Oracle의 차이점

구조적 차이

  • Oracle: DB 서버가 통합된 하나의 스토리지를 공유하는 방식
  • MySQL: DB 서버마다 독립적인 스토리지를 할당하는 방식

조인 방식의 차이

  • Oracle: 중첩 루프 조인, 해시 조인, 소트 머지 조인 방식을 제공
  • MySQL: 중첩 루프 조인 방식을 제공

확장성의 차이

  • Oracle: 별도의 DBMS을 설치해 사용할 수 없음
  • MySQL: 별도의 DBMS을 설치해 사용할 수 있음

메모리 사용율의 차이

  • Oracle: 메모리 사용율이 커서 최소 수백MB 이상이 되어야 설치 가능
  • MySQL: 메모리 사용율이 낮아서 1MB 환경에서도 설치가 가능

구문의 차이

  • Null 값 확인 함수
    • Oracle: NVL
    • MySQL: IFNULL
  • 현재 날짜 및 시간 확인 함수
    • Oracle: SYSDATE
    • MySQL: DATE()
  • 날짜 포멧 변환
    • Oracle: TO_CHAR
    • MySQL: DATE_FORMAT
  • 요일 변환의 숫자 범위
    • Oracle: 일,월,화,수,목,금,토를 1,2,3,4,5,6,7로 인식
    • MySQL: 일,월,화,수,목,금,토를 0, 1,2,3,4,5,6로 인식
  • 문자와 문자 합치는 방법
    • Oracle: ' '
    • MySQL: COMCAT
  • 형변환 방법
    • Oracle: TO_CHAR
    • MySQL: CAST
  • 페이징 처리
    • Oracle: ROWNU BETWEEN 0 AND 10
    • MySQL: LIMIT
  • 시퀀스 사용시 다음 번호 불러오는 방법
    • Oracle: 시퀀스명.NEXTVAL
    • MySQL: 시퀀스명.CURRVAL

Reference

https://velog.io/@alicesykim95/Oracle%EA%B3%BC-MySQL%EC%9D%98-%EC%B0%A8%EC%9D%B4%EC%A0%90