상세 컨텐츠

본문 제목

[Database] 데이터베이스의 종류와 특징

DataBase/Theory

by 찌니씨 2022. 10. 25. 16:26

본문

 

 

Database의 종류

 


  • 데이터베이스 DB (Database)

    데이터의 저장소. 

 

  • 데이터베이스 관리 시스템 DBMS(Database Management System)

    데이터베이스를 운영하고 관리하는 소프트웨어.

    계층형, 망형, 관계형 DBMS 중 대부분의 DBMS가 테이블로 구성된 관계형 DBMS(RDMBS) 형태로 사용됨. 

 

  • SQL(Structured Query Language)

    구조화된 질의 언어라는 뜻으로 관계형 데이터베이스에서 사용되는 언어.

    표준 SQL을 배우면 대부분의 DBMS를 사용할 수 있음.

 

 

 


 

DBMS 제작사 작동 운영체제 기타
MySQL Oracle 관계형 데이터베이스 관리 시스템(RDMS)
Unix, Linux, Windows, Mac
오픈 소스(무료), 상용
    ◦ 대규모 DB일 경우 시간이 많이 소요
◦ 사용자 관리 시스템 존재
◦ 쉽게 확장 가능
◦ 내장된 보안 기능 존재

◦ 강력한 보안인증 기능이 필요한 경우
다중 사용자다중 스레드 지원
MariaDB MariaDB 관계형 데이터베이스 관리 시스템(RDBMS)
Unix, Linux, Windows
오픈 소스(무료),
MySQL 초기 개발자들이 독립해서 만듦
     MySQL에 비해 애플리케이션 부분 속도가 약 4~5천 배 빠르고, 성능면에선 70% 향상을 보임 ◦ MySQL과 동일한 소스 코드를 기반

PostgreSQL PostgreSQL 오픈 소스 객체-관계형 데이터베이스 시스템 (ORDBMS)
Unix, Linux, Windows, Mac
오픈 소스(무료)
    ◦ 다양한 데이터베이스 객체를 사용자가 임의로 만들 수 있는 기능을 SQL 차원에서 제공
 테이블 상속 기능을 이용해 하위 테이블 생성 가능
◦ 상용 RDBMS급의 기능을 제공
 기본적인 CRUD 성능이 경쟁 DB에 비해 좋지 않음.
Oracle Oracle 관계형 데이터베이스 관리 시스템(RDBMS)
Unix, Linux, Windows
상용 시장 점유율 1위
    대량의 정보관리를 할 때 타 DBMS에 비해 좋은 성능을 보임.
◦ 오라클 자체 SQL 쿼리를 사용해 표준 형식과 약간 다름
기업용 (비IT업종) 으로 주로 사용


SQL Server Microsoft Windows 주로 중/대형급 시장에서 사용
       
MS-SQL Microsoft 관계형 데이터베이스 관리 시스템(RDBMS)  
   
◦ 데이터베이스 관리 시스템 툴(서버 관리 스튜디오)제공
◦ 모든 버전의 Windows에서 문제없이 잘 작동됨
◦ 중앙 집중식 테이버 베이스 제어로 통신 누락, 오류 발◦ 생 최소화
◦ .Net 언어 구현에만 초점을 맞춰 설계됨
◦ 분산된 기업환경에서의 집중된 서버 관리 도구 제공
Redis   (Remote Dictionary Server)
모든 데이터를 메모리로 불러와서 처리하는 메모리 기반 DBMS

메인프레임 시장 점유율 1위
     Key-Value 구조의 비정형 데이터를 저장하고 관리
◦ 비 관계형 데이터베이스 관리 시스템
◦메모리 기반이기에 속도가 빠르고 간편
◦문자열, 리스트, 해시, 셋, 정렬된 셋과 같은 다양한 자료구조의 지원
최고의 성능이 필요한 웹, 모바일, 게임, 광고 기술 
및 IoT 애플리케이션에서 널리 사용
MongoDB   크로스 플랫폼 도큐먼트 지향 데이터베이스 시스템
 
    ◦ ACID 대신 BASE를 택해 성능과 가용성을 우선시함
◦ 모든 데이터가 JSON 형태로 저장, 스키마가 없음
◦ 다양한 인덱싱 제공
◦ 일관성이 매우 중요한 작업에는 사용하기 힘들다
NoSQL 데이터베이스
SQLite SQLite Android, iOS 모바일 전용, 오픈 소스(무료)
    ◦ 복사가 쉬움, 사용자 관리 기능X
작은 데이터 베이스에 적합
성능 최적화 어려움
쉽게 구성 설정 가능
◦ 디스크에서 직접 읽고 쓸 필요가 있는 경우◦ 기본 개발 및 테스트

 

 



 


MySQL

 

숫자 ( NUMERIC)
자료형 한국어 범위 바이트 크기
    signed unsinged    
TINYINT 아주 작은 정수 -128 ~ 127 0 ~ 255 1 바이트 21×8=28=256
SMALLINT 작은 정수 -32768 ~ 32767 0 ~ 65535 2 바이트 22×8=216=65536
MEDIUMINT 중간 정수 -8388608 ~ 8388607 0 ~ 16777215 3 바이트 23×8=224=16777216 (약 1600만)
INT 정수 -2147483648 ~ 2147483647 0 ~ 4294967295 4 바이트 24×8=232=4294967296 (약 40억)
BIGINT 큰 정수 -9223372036854775808
~ 9223372036854775807
0 ~ 18446744073709551615 8 바이트 28×8=264
=18446744073709551616
(약 1800경)
DECIMAL 고정소수점 수 전체자리수(precision)와 소수점자리수(scale)를 가짐
  • DECIMAL(5)의 경우: -99999 ~ 99999
  • DECIMAL(5, 1)의 경우: -9999.9 ~ 9999.9
  • DECIMAL(5, 2)의 경우: -999.99 ~ 999.99
가변 최대 65자리(precision) 수
FLOAT 유동소수점 수 -3.402823466×1038 ~ 3.402823466×1038 4 바이트 유효숫자 10자리
DOUBLE 유동소수점 수 -1.7976931348623157×10308 ~ 1.7976931348623157×10308 8 바이트 유효숫자 17자리
BIT 비트 · 가변 최대 64비트
REAL 실수 DOUBLE이 적용됨
BOOL
BOOLEAN
불리언 TINYINT(1)이 적용됨
SERIAL 시리얼 BIGINT(20)이 적용됨

 

날짜와 시간 (DATE & TIME)
자료형 범위
DATE 0000-00-00 ~ 9999-12-31
DATETIME 0000-00-00 00:00:00 ~ 9999-12-31 23:59:59
TIMESTAMP 1970-01-01 00:00:00 이후로 지난 초
TIME -838:59:59 ~ 838:59:59
YEAR 1901 ~ 2155

 

문자열 (STRING)
자료형 크기
CHAR  
VARCHAR  
TINYTEXT 255 바이트 (28-1)
TEXT 64 KiB = 65,535 바이트 (216-1)
MEDIUMTEXT 16 MiB = 16,777,215 바이트 (224-1)
LONGTEXT 4 GiB = 4,294,967,295 바이트 (232-1)
BINARY  
VARBINARY  
TINYBLOB  
MEDIUMBLOB  
BLOB 64KiB
LONGBLOB 8,192KiB
ENUM  
SET  

 

자료형
GEOMETRY
POINT
LINESTRING
POLYGON
MULTIPOINT
MULTILINESTRING
ULTIPOLYGON
GEOMETRYCOLLE

 

 

데이터베이스 생성

CREATE DATABASE DB_NAME;

 

CREATE DATABASE db;

 

 

데이터베이스 선택

USE DATABASE DB_NAME;

 

USE DATABASE db;

 

 

데이터베이스 삭제

DROP DATABASE DB_NAME;

 

DROP DATABASE db;

 


 

테이블 생성

CREATE TABLE TABLE_NAME;

 

CREATE TABLE tb;

 

 

테이블 생성

CREATE TABLE TABLE_NAME;

 

create table items
(
    id         bigint auto_increment primary key comment 'ID', --자동으로 1씩 증가 설정, PK
    item_token varchar(255) not null comment 'item_token', -- null허용 하지 않음
    partner_id bigint       not null comment '파트너 ID', 
    item_name  varchar(255) not null comment '상품명',
    item_price int(11)      not null comment '상품 가격',
    status     varchar(30)  not null default 'PREPARE' comment '상태',
    deleted_at datetime(6)  null comment '삭제 일시',  -- null허용
    created_at datetime(6)  not null comment '생성 일시',
    updated_at datetime(6)  null comment '수정 일시'
) comment 'items' charset = utf8mb4; --comment, charset 설정
create index item_idx01 on items (item_token); --index 설정
create index item_idx02 on items (partner_id);
create index item_idx03 on items (created_at);
create index item_idx04 on items (updated_at);
create index item_idx05 on items (deleted_at);

 

 

테이블 확인

DESC TABLE_NAME;

 

DESC tb;

 

 

테이블 컬럼 추가/삭제

ALTER TABLE TABLE_NAME;

 

alter table item_options
    add item_option_name varchar(30) not null comment '옵션명 (빨강, 파랑, XL, L)'; -- 칼럼추가
    drop item_option_name varchar(30) not null comment '옵션명 (빨강, 파랑, XL, L)'; --칼럼삭제
    change item_option_name item_option_name char(60) not null comment '옵션명 (빨강, 파랑, XL, L)'; --새자료형
    add constraint item_options_item_option_groups__fk
        foreign key (id) references item_option_groups (`id`); -- 외래키 추가

 

 

다른 DB의 자료형과 기본 쿼리는 추후에;;; 

 

 

참고

https://zetawiki.com/wiki/MySQL_%EC%9E%90%EB%A3%8C%ED%98%95

 

MySQL 자료형 - 제타위키

다음 문자열 포함...

zetawiki.com

 

댓글 영역