DB를 사용하다 보면 여러가지 종류의 DB를 보곤 하는데 이번에는 정리겸 3개의 DB를 비교해보려고 한다.
먼저 DB란 용어부터 먼저 정의하고 세가지 DB를 비교해보자
여러 사람에 의해 공유되어 사용될 목적으로 통합하여 관리되는 데이터의 집합
즉 자료를 구조화하여 저장함으로써 자료 검색과 갱신의 효율을 높이기 위해 우리는 데이터 베이스 db란 것을 사용한다.
오라클이란 미국의 오라클 회사에서 제작한 세계 점유율 1위 데이터베이스 관리 시스템이며 현재 유닉스/리눅스 체제에서 가장 많이 사용되는 DBMS이다. 관계형 데이터베이스 관리 시스템(RDBMS)의 대표 주자이며, MySQL, MSSQL 보다 대용량 정보관리를 할 때 성능이 좋다.
MySQL은 전세계적으로 가장 널리 사용되고 있는 오픈 소스 데이터베이스이며, MySQL AB사가 개발하여 배포 및 판매하고 있는 데이터베이스 관리툴이다. 다중 스레드, 다중 사용자 형식의 구조질의어 형식의 데이터베이스 관리 시스템이며, 오픈 소스로 기본적으로는 무료로 사용할 수 있다.
MSSQL DB는 마이크로소프트 SQL 서버(Microsoft SQL Server)는 마이크로소프트가 사이베이스(Sybase)를 기반으로 개발한 관계형 데이터베이스이다. 윈도우 개발환경에서 DB가 필요할 때 MSSQL을 사용한다. Microsoft의 개발 도구 및 통합 서비스와의 호환성이 높아 개발자들이 편리하게 데이터베이스 애플리케이션을 개발할 수 있도록 지원한다.
Oracle : 기본적으로 하나의 데이터베이스 인스턴스를 관리하는 방식
MSSQL : 하나의 서버에 여러 개의 독립적인 데이터베이스를 생성하는 방식을 지원
이러한 차이는 각 데이터베이스 시스템이 다양한 운영 환경과 요구 사항을 고려하여 설계되었기 때문. Oracle의 접근 방식은 주로 대규모 엔터프라이즈 환경에서 사용되며, MSSQL은 중소 및 대규모 비즈니스 애플리케이션에서 널리 사용.
Oracle 데이터 타입: VARCHAR2, NUMBER, DATE, TIMESTAMP, CLOB, BLO
MSSQL 데이터 타입: VARCHAR, DECIMAL, FLOAT, DATETIME, DATETIME2, TEXT, IMAGE
두 db 사이에 데이터 타입 정의에는 몇 가지 차이가 있다. 각각의 데이터베이스 시스템은 자체적인 데이터 타입을 정의하고 있으며, 몇 가지 기본적인 데이터 타입은 유사할 수 있지만 일부 차이가 있다.
가변 길이 문자열, 숫자 데이터, 날짜 데이터, 날짜와 시간 데이터, 대용량 문자열 데이터, 대용량 이진 데이터에서 이러한 차이가 있다.
CREATE SEQUENCE my_sequence
START WITH 1
INCREMENT BY 1
NOCACHE;
CREATE TABLE my_table
(
id INT IDENTITY(1,1) PRIMARY KEY,
-- Other columns...
);
Oracle : 테이블 스페이스를 사용하여 논리적인 데이터 분리를 제공하면서도 데이터 파일은 통합된 스토리지를 공유
MySQL : 각 데이터베이스가 독립적인 스토리지 디렉토리를 가지므로 데이터베이스 간에 논리적인 분리가 더 쉽게 이루어짐
Oracle Database는 상용 데이터베이스 소프트웨어이며, 사용자가 데이터베이스를 설치하고 구성하기 위해서는 Oracle Database를 다운로드하고 설치.
MySQL은 오픈 .소스 데이터베이스 관리 시스템이기 때문에 누구나 무료로 다운로드하고 사용
Oracle 데이터베이스 데이터 타입
데이터 타입 | 설명 |
---|---|
VARCHAR2 | 가변 길이 문자열 저장에 사용 |
NUMBER | 숫자 데이터 타입, 정수 및 소수점 숫자 지원 |
DATE | 날짜 데이터 타입 |
TIMESTAMP | 날짜와 시간 데이터 타입 |
CLOB | 대용량 문자열 데이터 저장에 사용 |
BLOB | 대용량 이진 데이터 저장에 사용 |
MySQL 데이터베이스 데이터 타입
데이터 타입 | 설명 |
---|---|
VARCHAR | 가변 길이 문자열 저장에 사용 |
DECIMAL | 숫자 데이터 타입, 고정 소수점 정밀도 |
FLOAT | 부동 소수점 숫자 데이터 타입 |
DATE | 날짜 데이터 타입 |
TIMESTAMP | 날짜와 시간 데이터 타입 |
TEXT | 대용량 텍스트 필드 저장에 사용 |
BLOB | 대용량 이진 데이터 저장에 사용 |
Oracle : SEQUENCE와 TRIGGER를 사용
MySQL : AUTO_INCREMENT 속성을 사용
CREATE TABLE my_table (
id INT AUTO_INCREMENT PRIMARY KEY,
other_column VARCHAR(50)
);
1). 구조적
2). 조인(join) 방식
3). 확장성
4). 메모리 사용률
5). 구문
Null 체크
현재 날짜 및 시간
날짜 포맷 변환
문자 합치기
페이징 처리
여러가지로 세가지 db의 차이가 있지만 가장 큰 것은 비용 때문이다
규모가 큰 곳에서는 아무래도 기능이 많고 대용량 데이터베이스 처리 퍼포먼스가 좋은 Oracle db를 사용하고, 규모가 작은 곳에는 MySQL을 사용하며, 윈도우 서버를 기반으로 한 곳에서는 MSSQL을 사용한다.
따라서, 사용자가 가장 적합한 데이터베이스를 선택할 때는 비용뿐만 아니라 다양한 요인을 종합적으로 고려하는 것이 중요한 것 같다.