JaeWon's Devlog
article thumbnail
반응형

최근에 면접을 보게 되면서 아래와 같은 질문을 받게 되었다.

"업무를 진행하면서 여러 DB를 사용해보셨을 텐데, Oracle, MySQL, MSSQL의 차이점을 말씀해주실 수 있으실까요?"

해당 질문을 받고 머리가 하얘졌다. 간단하게는 비용적으로 차이가 있고, MSSQL은 보통 윈도우에서 사용된다는 정도만 생각하고 있었다.

이번 글에서는 자세히는 아니고, 내가 생각하는 위 DB 들을 비교하여 정리해보고자 한다.


1. Oracle, MySQL, MSSQL

  • Oracle
    - Oracle DB는 미국 오라클(Oracle)사의 관계형 데이터베이스 관리 시스템(RDBMS)의 이름이다.
    - 현재 유닉스/리눅스 환경에서 가장 널리 사용되는 RDBMS이다.
    - 검색이나 업데이트용 언어로는 국제표준화기구의 표준 구조화 조회 언어와 PL/SQL을 지원한다.
    - MySQL, MSSQL 보다 대용량 정보관리 할 때 성능이 좋다.
  • MySQL
    - MySQL DB는 세계에서 가장 많이 사용되는 오픈 소스의 관계형 데이터베이스 관리 시스템이다.
    - 다중 스레드, 다중 사용자 형식의 구조질의어 형식의 데이터베이스 관리 시스템이다.
    - 오픈 소스로 기본적으로는 무료로 사용할 수 있다.
  • MSSQL
    - MSSQL DB는 마이크로소프트 SQL 서버(Microsoft SQL Server)는 마이크로소프트가 사이베이스(Sybase)를 기반으로 개발한 관계형 데이터베이스이다.
    - 기업체에서 사용할 때 라이선스료를 지불하고 사용할 수 있다.
    - 윈도우 개발환경에서 DB가 필요할 때 MSSQL을 사용한다.

2. 각각의 DB 비교

  • Oracle vs MSSQL
    1. 데이터베이스의 생성
      - Oracle : 하나의 서버에 하나의 데이터베이스 생성
      - MSSQL : 하나의 서버에 여러 개의 데이터베이스 생성
    2. 데이터 타입 정의
      - 일반적으로 정수형, 문자형, 날짜 형에서 차리를 가진다.
      - 정수형
          => Oracle : Number
          => MSSQL : tinyint > smallint > int > bigint 로 나누어진다.
      - 문자형
          => Oracle : varchar2(10), nvarchar2(10) 등 으로 정의
          => MSSQL : varchar(10), nvarchar(10) 등으로 정의
      - 날짜형
          => Oracle : date
          => MSSQL : smalldatettime, datetime
    3. 테이블 생성 시 자동 증가(auto increment)
      - Oracle : 자동 증가 옵션이 없어, 직접 구현
      - MSSQL : 테이블 생성 시 자동 증가 옵션(identity(1,1)) 사용
  • Oracle vs MySQL
    1. 구조적
      - Oracle : DB 서버가 통합된 하나의 스토리지를 공유
      - MySQL : DB 서버마다 독립적인 스토리지를 할당
    2. 조인(join) 방식
      - Oracle : 중첩 루프 조인, 해시 조인, 소트 머지 조인 방식 제공
      - MySQL : 중첩 루프 조인 방식 제공
    3. 확장성
      - Oracle : 별도의 DBMS를 설치해 사용할 수 없음
      - MySQL : 별도의 DBMS를 설치해 사용 할 수 있음
    4. 메모리 사용률
      - Oracle : 메모리 사용률이 커서 최소 수백MB 이상이 되어야 설치 가능
      - MySQL : 메모리 사용율이 낮아서 1MB 환경에서도 설치가 가능
    5. 구문
      1.  Null 체크
        - Oracle : NVL
        - MySQL : IFNULL
      2. 현재 날짜 및 시간
        - Oracle : SYSDATE
        - MySQL : DATE
      3. 날짜 포맷 변환
        - Oracle : TO_CHAR
        - MySQL : DATE_FORMAT
      4. 문자 합치기
        - Oracle : ''
        - MySQL : COMCAT
      5. 페이징 처리
        - Oracle : ROWNUM VETWEEN 0 AND 10
        - MySQL : LIMIT

3. 마무리

- 실무를 진행하면서 느꼈던 것은 대기업과 같은 곳(경제적 여유가 있는 곳..?)에서는 오라클을 선호하고, 비용을 아껴야 하는 중소기업들은 대체로 MySQL을 선호하였고, 윈도우 서버를 기반으로 한 곳에서는 MSSQL을 사용하는 등 3가지로 나뉘었었다.
- 대기업들이 Oracle을 쓰는 이유는 유료인 만큼 다양한 기능을 제공한다. 내장함수도 많고, 성능도 좋으며, 대용량 처리에서도 퍼포먼스가 좋다. 또한, 많이 대중화되어 높은 실력자가 많고, 많은 레퍼런스가 쌓이면서 각종 문제점 해결에도 쉽다.
- Oracle 과 MySQL 의 가장 큰 차이는 비용인 것 같다. 비용을 내는 만큼 많은 기능을 제공하고, 무료인 점에서 기능에 제한이 있다.


참고

- https://junghn.tistory.com/entry/DB-MSSQL%EA%B3%BC-%EC%98%A4%EB%9D%BC%ED%81%B4%EC%9D%98-%EC%B0%A8%EC%9D%B4%EC%A0%90-%EC%A0%95%EB%A6%AC

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

반응형
profile

JaeWon's Devlog

@Wonol

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!