데이터베이스(Database, DB)란?
여러 사람이 공유할 목적으로 체계화해 통합, 관리하는 데이터의 집합
스프레드 시트와 기능은 거의 유사하지만 컴퓨터 언어로 제어가 가능하며 앱이나 웹을 통해 공유가 가능하여 전세계 누구나 데이터베이스 접근하고 편집이 가능하다는 장점이 있음.
데이터베이스의 특징
- 실시간 접근성(Real-Time Accessibility): 실시간 처리에 의한 응답이 가능해야 한다.
- 계속적인 변화(Continuous Evolution): 새로운 데이터의 삽입(Insert), 삭제(Delete), 갱신(Update)로 항상 최신의 데이터를 유지한다.
- 동시 공용(Concurrent Sharing): 다수의 사용자가 동시에 같은 내용의 데이터를 이용할 수 있어야 한다.
- 내용에 의한 참조(Content Refrerence): 데이터베이스에 있는 데이터를 참조할 때 사용자의 요구에 따른 데이터 내용으로 데이터를 찾는다.
데이터베이스 언어 종류
명령어 종류 | 명령어 | 설명 |
데이터 조작어 (DML : Data Manipulation Language |
SELECT | 데이터베이스에 들어 있는 데이터를 조회하거나 검색하기 위한 명령어를 말하는 것으로 RETRIEVE 라고도 함 |
INSERT UPDATE DELETE |
데이터베이스의 테이블에 들어 있는 데이터에 변형을 가하는 종류(데이터 삽입, 수정, 삭제)의 명령어들을 말함. | |
데이터 정의어 (DDL : Data Definition Language) |
CREATE ALTER DROP RENAME TRUNCATE |
테이블과 같은 데이터 구조를 정의하는데 사용되는 명령어들로 (생성, 변경, 삭제, 이름변경) 데이터 구조와 관련된 명령어들을 말함. |
데이터 제어어 (DCL : Data Control Language) |
GRANT REVOKE |
데이터베이스에 접근하고 객체들을 사용하도록 권한을 주고 회수하는 명령어들을 말함. |
트랜잭션 제어어 (TCL : Transaction Control Language) |
COMMIT ROLLBACK SAVEPOINT |
논리적인 작업의 단위를 묶어서 DML에 의해 조작된 결과를 작업단위(트랜잭션) 별로 제어하는 명령어를 말함. |
DBMS(Database Management System)
- HDBMS(Hierachical DBMS): 계층적인 형태의 DBMS. 초기 세팅이 변화하면 이에 대처하기가 힘들어 잘 쓰이지 않음. 초기 DBMS의 형태
- NDBMS(Network DBMS): 구성과 설계가 복잡하고 데이터 종속성을 해결하지 못함
- ODBMS(Object-Oriented DBMS): 정보를 객체의 형태로 표현하는 DBMS.
- RDBMS(Relational DBMS, 관계형 데이터베이스 관리 시스템): 테이블과 테이블의 관계를 기반으로 하는 가장 범용적인 데이터베이스 관리 시스템. 데이터의 일관성(Consistency)를 보장함. MySQL, Oracle, SQLite 등이 있음
- No-SQL(Not Only SQL): 데이터 간의 관계를 설정하지 않고 유연한 테이블 스키마를 가진다. 대용량 데이터/분산 처리에 적합하다는 장점이 있지만 데이터 일관성(Consistency)이 항상 보장되지 않는 단점이 있다. MongoDB, HBase, Cassandra, Redis 등이 있다.
구분 | 모델 | DBMS |
1세대 | 파일시스템 | - ISAM - VSAM |
2세대 | 계층형 (Hierachical) HDBMS | - IMS - System2000 |
3세대 | 네트워크형 (Network) NDBMS | - IDS - TOTAL - IDMS |
4세대 | 관계형 (Relational) RDBMS | - Oracle - My-SQL - DB2 - SQL Server - Sybase |
5세대 | 객체지향 (Object Oriented) ODBMS | - Object Store - UniSQL |
DBMS의 구조적 방법론에서 1~3세대는 4세대 (관계형) DBMS로 빠른 전환이 이루어 졌지만, 관계형 DBMS에서 객체지향 DBMS로는 전환이 되지 않고 있는 실정이다.
따라서 관계형 DBMS (RDBMS)인 Oracle, DB2, SQL Server 등이 DBMS로서 계속 현 상태를 유지하리라는 전망이다.
관계형 데이터베이스의 종류
Oracle - Oracle
전세계적으로 가장 많이 활용되는 관계형 데이터베이스 시스템 (RDBMS)이다.
오라클사에서 서비스하고 있으며 Unix, Linux, Windows 등의 대부분의 OS를 지원하고 있다.
Oracle Real Application Clusters (RAC)의 기능으로 데이터베이스 관리에 있어서 자원의 확장성과 장애에 대한 대처가 유연해 하다는 장점이 있다.
IBM의 DB2와 마찬가지로 중견기업, 대기업 등 대형화된 데이터를 관리하기에 최적화되어 있다.
오라클 DBMS는 각 버전별로 성능을 업그레이드 하여 출시하고 있는데, 현재 12C까지 출시가 되었다.
MS-SQL Server - Microsoft
마이크로소프트 (Microsoft)사의 대표적인 관계형 데이터베이스 시스템
1989년에 최초로 발표되었으며 역시 MS제품군이기 때문에 window server에서만 구동이 되고 C#과는 가장 높은 호환성을 자랑하는 DBMS이다.
성능에 따라 엔터프라이즈 에디션(enterprise edition), 비즈니스 인텔리젼스 에디션(business intelligence edition), 스탠다드 에디션(standard edition), 익스프레스 에디션(express edition)으로 나뉜다.
MySQL - Oracle (구 Sun)
썬 마이크로시스템즈에서 개발한 관계형 데이터베이스 시스템이다.
유닉스나 리눅스, 윈도우 운영체제 등에서 사용할 수 있으며 무엇보다 오픈소스의 장점으로 많은 기업에서 홈페이지나 쇼핑몰 등 일반적인 웹 개발에 널리 이용되고 있다.
2008년 SUN에 인수되었으며, 2009년 Oracle에서 SUN을 인수함에 따라 자연스럽게 Oracle의 소유가 되었다.
아직 오픈소스를 유지하고 있지만, 오라클에 비해 사용자 편의를 위한 기능, 사용자 실수 또는 재해에 대비한 기능, 성능향상 등 기능적인 한계를 보이고 있다.
다만 오픈소스이기 때문에 현재 많은 기업에서 활용하고 있다.
Maria DB - MariaDB 재단
마리아 DB는 2009년에 발표되었으며 비교적 역사가 짧다.
탄생배경은 MySQL이 오라클에 인수되면서 시작이 되었다고 한다.
오라클에서 MySQL을 인수, 아무래도 무료버전인 MySQL보다 주력 상품인 Oracle을 팔아야 하는 입자에서 오픈소스인 MySQL의 기능을 감소시키게 되었다.
이에 MySQL을 개발한 마이클 몬티 와이드니어스(Michael Monty Widenius)는 오라클과의 의견 충돌로 회사를 나와 새롭게 MariaDB를 개발했다고 한다.
MySQL과 완벽하게 호환되며 기본적인 명령어나 사용방법까지 동일하기 때문에 개발자 또는 DBA가 쉽게 접할 수 있으며 MySQL에 비해 성능적인 부분에서는 70%나 향상이 되었기 때문에 현재 Maria DB를 활용하는 기업들이 많이 늘어나는 추세이다.
DB2 - IBM
대형화된 데이터 관리를 목적으로 만들어진 IBM의 관계형 데이터베이스 관리 시스템이다.
1983년에 발표되었으며, 사용자들이 서로 관계된 여러 개의 데이터베이스를 동시에 접근할 수 있다.
DB2의 특징은 각 워크로드(업무)의 특성에 맞게 시스템이 최적화될 수 있으며, 자가 최적화, 자가 치유, 자가 구성, 워크로드 관리, 확장된 자동화 기능 등 다양한 기능을 구현할 수 있다.
또한 데이터 압축 기술이 좋기 때문에 대형화된 데이터를 다루는데 최적화 될 수 있다는 장점이 있다.
때문에 많은 중견기업, 대기업 권에서 DB2를 활용하고 있다.
Sybase - Sybase
사이베이스 사에서 개발, 1984년에 공개한 관계형 데이터베이스 시스템, 현재 (2010년)는 SAP에서 인수했다. 2011년에는 사이베이스 IQ 15.3이 출시되어 컬럼 단위 데이터 처리로 I/O 속도를 90%까지 향상시켰으며, 데이터 압축 저장, 스토리지 공간의 활용도를 높이게 되었다. 또한 오라클에 비해 비교적 저렴하기 때문에 많은 기업에서 관심을 가지고 있는 시스템이지만 아직까지 국내에서는 오라클에 비해 밀리는 추세이다.
그 외로 IBM의 infomix / Apache의 Derby / SQLite 등이 있다.
'Study > DB' 카테고리의 다른 글
[Mongo] 몽고(mongoDB)디비 CRUD 쿼리 문법 명령어 정리 (0) | 2023.02.15 |
---|---|
[Redis] Redis(레디스) 자료구조 (0) | 2023.02.05 |
[DBMS] Redis(레디스)란? - 6 (0) | 2023.01.22 |
[DBMS] Redis(레디스)란? - 5 (0) | 2023.01.21 |
[DBMS] Redis(레디스)란? - 4 (0) | 2023.01.19 |