IBM DB2

**Db2**는 IBM에서 개발한 데이터베이스 서버를 포함한 데이터 관리 제품군이다. 초기에는 관계형 모델을 지원했으나, 이후 객체 관계 기능과 JSON, XML과 같은 비관계형 구조를 지원하도록 확장되었다. 브랜드 이름은 원래 DB2로 표기되었으나 2017년에 현재의 형태로 변경되었다. 초기에는 운영체제 OS/2에서 잘못 유도되어 DB/2로 표기되기도 했다.

## 역사
DB2의 기원은 1970년대 초반으로 거슬러 올라간다. 당시 IBM의 연구원이었던 에드거 F. 코드는 관계형 데이터베이스 이론을 설명했고, 1970년 6월에 데이터 조작 모델을 발표했다.

1974년 IBM 산호세 연구소는 코드의 개념을 구현하기 위해 System R이라는 관련 데이터베이스 관리 시스템(DBMS)을 개발했다. 시스템 R 프로젝트의 핵심 성과는 구조화된 질의 언어(SQL)였다. 관계형 모델을 적용하기 위해 코드는 DSL/Alpha라고 명명한 관계형 데이터베이스 언어가 필요했다. 당시 IBM은 코드의 아이디어에 대한 잠재력을 믿지 않았고, 코드의 감독을 받지 않는 프로그래머 그룹에게 구현을 맡겼다. 이는 이론의 처방 중 일부만 일치하는 코드의 관계형 모델에 대한 부정확한 해석으로 이어졌으며, 그 결과가 Structured English QUEry Language 또는 SEQUEL이었다.

IBM은 메타포 컴퓨터 시스템즈를 인수하여 80년대 중반부터 이미 사용 중이던 GUI 인터페이스와 캡슐화된 SQL 플랫폼을 활용했다.

SQL 개발과 병행하여 IBM은 최초의 그래픽 질의 언어인 쿼리 바이 이그잼플(QBE)도 개발했다.

IBM의 첫 번째 상용 관계형 데이터베이스 제품인 IBM SQL/DS는 1981년 DOS/VSE 및 VM/CMS 운영체제용으로 출시되었다. 1976년 IBM은 VM 플랫폼용으로 쿼리 바이 이그잼플을 출시했는데, 여기서 테이블 중심의 프런트엔드는 관계형 데이터베이스에 트랜잭션을 구동하는 선형 구문 언어를 생성했다. 나중에 DB2의 QMF 기능은 실제 SQL을 생성하고 DB2에 동일한 "QBE" 모양과 느낌을 가져다주었다. DB2 아키텍처의 메인프레임 버전에 대한 영감은 부분적으로 계층형 데이터베이스인 IMS와 전용 데이터베이스 조작 언어인 IBM DL/I에서 얻었다.

DB2(IBM Database 2)라는 이름은 1983년 IBM이 MVS 메인프레임 플랫폼에서 DB2를 출시했을 때 처음 붙여졌다. IBM이 Db2에서 SQL을 지지함에 따라 업계는 Ingres의 QUEL과 같은 대안에서 SQL로 이동하게 되었다. Db2는 1985년에 고객들이 일반적으로 사용할 수 있게 되었으며, 1989년까지 약 10억 달러의 매출을 기록하며 IMS와 대등한 수준으로 성장했다.

몇 년 동안 완전한 기능을 갖춘 DBMS로서의 DB2는 오직 IBM 메인프레임에서만 사용할 수 있었다. 나중에 IBM은 DB2를 OS/2, 유닉스, 마이크로소프트 윈도우 서버를 포함한 다른 플랫폼으로 이식했으며, 그 후 리눅스(리눅스 온 IBM Z 포함) 및 개인 정보 단말기(PDA)로 확장했다. 이 과정은 1990년대 전반에 걸쳐 일어났다. DB2 LUW(리눅스, 유닉스, 윈도우)가 될 코드의 초기 버전은 데이터베이스 매니저(Database Manager)라고 불리는 OS/2의 확장 버전 구성 요소의 일부였다.

IBM은 DRDA를 통한 분산 데이터베이스 기능의 추가를 포함하여 데이터베이스 매니저의 기능을 여러 차례 확장했으며, 이를 통해 근거리 통신망(LAN)의 원격 위치에 있는 데이터베이스에 대한 공유 액세스가 가능해졌다. (DRDA는 분산 데이터 관리 아키텍처(DDM)에 의해 정의된 객체와 프로토콜을 기반으로 한다.)

결국 IBM은 소프트웨어를 완전히 다시 쓰기로 결정했다. 데이터베이스 매니저의 새 버전은 각각 DB2/2 및 DB2/6000으로 명명되었다. 서로 다른 코드 베이스를 가진 다른 DB2 버전들도 동일한 '/' 명명 규칙을 따라 DB2/400(AS/400용), DB2/VSE(DOS/VSE 환경용), DB2/VM(VM 운영체제용)이 되었다. IBM 법무팀은 이 편리한 명명 규칙의 사용을 중단시키고 모든 제품 이름을 "플랫폼용 제품"(예: DB2 for OS/390)으로 불러야 한다고 결정했다. 메인프레임 및 서버 기반 제품의 다음 반복 버전은 DB2 Universal Database(또는 DB2 UDB)로 명명되었다.

### Db2 for LUW
1990년대 중반, IBM은 처음에 AIX에서 실행되는 DB2 Parallel Edition이라는 클러스터형 DB2 구현을 출시했다. 이 에디션은 고속 인터커넥트를 통해 통신하는 여러 DB2 서버에 단일 대형 데이터베이스를 분할하는 공유 무설계 아키텍처를 제공하여 확장성을 확보했다. 이 DB2 에디션은 결국 모든 리눅스, 유닉스, 윈도우(LUW) 플랫폼으로 포팅되었으며, DB2 Extended Enterprise Edition(EEE)으로 이름이 변경되었다. IBM은 현재 이 제품을 데이터베이스 파티셔닝 기능(DPF)으로 부르며 주력 제품인 DB2 Enterprise와 함께 번들로 제공한다.

오라클과 IBM 모두 Informix Corporation이 Illustra를 인수하고 유니버설 서버를 도입하여 데이터베이스 엔진을 객체 관계 데이터베이스로 만든 것을 따랐다. 2001년 IBM은 인포믹스 소프트웨어를 인수했으며, 이후 몇 년 동안 인포믹스 기술을 DB2 제품군에 통합했다. 기술적으로 DB2는 객체 관계 데이터베이스로 간주될 수 있다.

2006년 중반, IBM은 분산 컴퓨팅 플랫폼과 z/OS 모두를 위한 DB2 9의 코드명인 "Viper"를 발표했다. Z/OS용 DB2 9는 2007년 초에 발표되었다. IBM은 새로운 DB2가 XML을 "네이티브" 방식으로 저장하는 최초의 관계형 데이터베이스라고 주장했다. 기타 향상된 기능으로는 분산 플랫폼을 위한 OLTP 관련 개선 사항, z/OS를 위한 비즈니스 인텔리전스/데이터 웨어하우징 관련 개선 사항, 더 많은 자동 튜닝 및 자동 관리 기능, 추가적인 64비트 활용(특히 z/OS의 가상 스토리지), z/OS를 위한 저장 프로시저 성능 향상, z/OS와 분산 플랫폼 간의 SQL 어휘 통합 지속 등이 있다.

2007년 10월, IBM은 분산 컴퓨팅 플랫폼용 DB2 9.5의 코드명인 "Viper 2"를 발표했다.

2009년 6월, IBM은 LUW용 DB2 9.7의 코드명인 "Cobra"를 발표했다. DB2 9.7은 데이터베이스 인덱스, 임시 테이블 및 대형 객체에 대한 데이터 압축 기능을 추가했다. 또한 해시 파티셔닝, 범위 파티셔닝 및 다차원 클러스터링에서 네이티브 XML 데이터를 지원했다. 이러한 기능들을 통해 사용자는 데이터 웨어하우스 환경에서 XML을 직접 작업할 수 있게 되었다. DB2 9.7은 또한 오라클 데이터베이스 사용자가 DB2에서 더 쉽게 작업할 수 있도록 여러 기능을 추가했다. 여기에는 가장 일반적으로 사용되는 SQL 구문, PL/SQL 구문, 스크립팅 구문 및 오라클 데이터베이스의 데이터 유형에 대한 지원이 포함된다.

2009년 10월, IBM은 DB2 pureScale을 발표했다. DB2 pureScale은 메인프레임이 아닌 플랫폼을 위한 클러스터 데이터베이스로, 온라인 트랜잭션 처리(OLTP) 워크로드에 적합하다. IBM은 메인프레임의 DB2 데이터 공유 구현인 IBM 패러렐 시스플렉스를 기반으로 DB2 pureScale을 설계했다. DB2 pureScale은 결함 허용 아키텍처와 공유 디스크 스토리지를 제공하며, 최대 128대의 데이터베이스 서버까지 확장 가능하다.

2009년에는 DB2가 MySQL의 엔진이 될 수 있다는 발표가 있었다. 이를 통해 IBM i 플랫폼 및 기타 플랫폼 사용자가 MySQL 인터페이스를 통해 이러한 파일에 액세스할 수 있게 되었다. IBM i 및 그 전신인 OS/400에서 DB2는 운영체제에 긴밀하게 통합되어 있으며 운영체제의 일부로 제공된다.

2012년 초, IBM은 리눅스, 유닉스, 윈도우용 다음 버전인 DB2 10.1(코드명 Galileo)을 발표했다. DB2 10.1에는 데이터에 액세스하는 빈도에 따라 데이터를 효율적인 스토리지로 이동하는 다중 온도 데이터 관리와 행 및 열 액세스 제어를 포함한 새로운 데이터 관리 기능이 포함되었다. 또한 데이터 테이블을 압축하는 새로운 접근 방식인 "적응형 압축" 기능도 도입되었다.

2013년 6월, IBM은 DB2 10.5(코드명 "Kepler")를 출시했다.

2016년 4월 12일, IBM은 DB2 LUW 11.1을 발표하고 6월에 출시했다.

2017년 중반, IBM은 DB2 및 dashDB 제품군을 재브랜딩하고 이름을 "Db2"로 수정했다.

2019년 6월 27일, IBM은 AI 데이터베이스인 Db2 11.5를 출시했다. 질의 성능을 개선하기 위한 AI 기능과 AI 애플리케이션 개발을 용이하게 하는 기능이 추가되었다.

### Db2 for z/OS - 진화
1995년 V4 출시. 여러 DB2 엔진이 동일한 데이터에 액세스하는 "데이터 공유" 기능이 도입되었다.

1997년 V5 출시. 테이블스페이스의 온라인 재구성이 추가되었다.

1999년 V6 출시. 객체 관계 지원이 추가되었다. 여기서 "객체"는 이미지, 비디오, 텍스트와 같이 32K보다 긴 데이터 항목을 의미한다. 또한 트리거 지원이 추가되었다.

2001년 V7 출시. 데이터 세트의 동적 할당과 실시간 통계, 스크롤 가능한 커서, 초기 유니코드 지원이 추가되었다.

2004년 V8 출시. 64비트 지원, 새로운 인덱스 유형, 재귀적 SQL 등이 추가되었고 내부 카탈로그가 유니코드로 변환되었다.

2007년 V9 출시. 보안 기능인 Trusted Context와 "네이티브 XML" 지원이 추가되었다.

2010년 V10 출시. 시간 경과에 따른 데이터를 관리하는 Temporal Tables와 행 열 액세스 제어(RCAC)가 추가되었다.

2013년 V11 출시. JSON 지원이 추가되었다.

2016년 V12 출시. RESTful 서비스와 데이터 액세스 경로 최적화를 위한 AI 활용이 도입되었다.

2022년 5월 31일, IBM은 z/OS용 Db2 13을 출시했다.

### Db2 Warehouse
"데이터 웨어하우징"은 1988년 IBM 시스템 저널 기사에서 처음 언급되었다. Db2 Warehouse는 여러 소스의 데이터를 정규화하고 정교한 분석 및 통계 모델링을 수행하는 기능을 갖추고 있다.

Db2 Warehouse는 현재 다음과 같은 데이터 유형 및 분석 모델을 지원한다:
* 관계형 데이터
* 비관계형 데이터
* XML 데이터
* 지리 공간 데이터
* RStudio
* Apache Spark
* 인메모리 분석 처리
* 예측 모델링 알고리즘

Db2 Warehouse는 도커 컨테이너를 사용하여 온프레미스, 프라이빗 클라우드 및 다양한 퍼블릭 클라우드 환경에서 실행된다.

### Db2 on Cloud/Db2 Hosted
Db2 on Cloud: 이전 이름 "dashDB for Transactions"인 Db2 on Cloud는 99.99% 업타임 SLA를 제공하는 완전 관리형 클라우드 SQL 데이터베이스이다. 스토리지와 컴퓨팅의 독립적인 확장을 지원한다.

주요 기능:
* 탄력성: UI와 API를 통해 컴퓨팅과 스토리지를 독립적으로 확장할 수 있다.
* 백업 및 복구: 14일간의 백업 및 시점 복구 옵션을 제공한다.
* 암호화: 미사용 데이터 암호화 및 SSL 연결을 포함한 데이터 보호법을 준수한다.
* 고가용성: Db2의 HADR 기술을 사용하여 가동 중단 없는 업데이트 및 확장을 지원한다.
* 데이터 페더레이션: 온프레미스 및 클라우드에 분산된 데이터에 대한 통합 뷰를 제공한다.

Db2 Hosted: 이전 이름 "DB2 on Cloud"인 Db2 Hosted는 관리되지 않는 호스팅 버전의 Db2 클라우드 데이터베이스이다.

### Db2 Warehouse on Cloud
이전 이름 "dashDB for Analytics"인 Db2 Warehouse on Cloud는 고성능 분석 및 기계 학습 워크로드를 위해 구축된 완전 관리형 탄력적 클라우드 데이터 웨어하우스이다.

주요 기능:
* 자율 클라우드 서비스: 자동 튜닝 엔진을 통해 모니터링, 가동 시간 확인 및 장애 조치가 자동화된다.
* 분석 최적화: IBM 리서치에서 개발한 IBM BLU Acceleration 기술(칼럼형 저장 모델, 인메모리 처리 등)을 활용한다.
* 기계 학습 및 지리 공간 기능 내장: 데이터 이동 없이 데이터베이스 내에서 연관 규칙 학습, 분산 분석, K-평균 알고리즘, 회귀 분석, 나이브 베이즈 분류 등의 모델을 훈련하고 실행할 수 있다.

### Db2 BigSQL
2018년 IBM SQL 제품은 IBM Db2 Big SQL로 이름이 변경되었다. Big SQL은 Hadoop 엔진 상에서 MPP(대규모 병렬 처리) 및 고급 데이터 질의를 제공하는 엔터프라이즈급 하이브리드 ANSI 준수 SQL이다. HDFS, RDMS, NoSQL 데이터베이스, 객체 저장소 등 이기종 소스에 대한 단일 데이터베이스 연결을 제공한다.

## Db2 for IBM i

1994년 IBM은 다른 플랫폼의 DB2와 유사한 기능을 나타내기 위해 OS/400의 통합 관계형 데이터베이스 이름을 DB2/400으로 변경했다. 이 이름에도 불구하고 Db2 코드를 기반으로 하지는 않으며, 대신 IBM 시스템/38 통합 데이터베이스에서 발전했다. 현재 제품 이름은 IBM Db2 for i이다.

## 기타 플랫폼
* Db2 for Linux, UNIX and Windows (비공식적으로 Db2 LUW로 알려짐)
* Db2 for Z/OS (메인프레임)
* Db2 on IBM 클라우드.

## 에디션
IBM은 Db2의 네 가지 에디션인 Community Edition, Starter Edition, Standard Edition, Advanced Server Edition을 제공한다.

### IBM Db2 Community Edition
**IBM Db2 Community Edition**은 무료로 다운로드하여 사용할 수 있는 에디션이다. 버전 11.5는 모든 핵심 기능을 제공하지만 가상 프로세서 코어 4개, 인스턴스 메모리 16GB로 제한되며 엔터프라이즈 레벨의 기술 지원은 제공되지 않는다. 버전 12.1은 서버 메모리를 가상 또는 물리 서버당 8GB로 더 제한하며, 비프로덕션 환경으로 사용이 제한된다.

### Db2 Starter Edition
Starter 에디션은 Db2 버전 12.1에서 도입되었다. 유료 제품이며 4개 코어 및 16GB 메모리 제한이 있고, 네이티브 암호화, 감사 로깅, 페더레이션, Db2 pureScale 등과 같은 고급 기능 사용에 제한이 있다.

### IBM Db2 Standard Edition
Db2 Standard Edition은 최대 16개 프로세서 코어와 128GB RAM까지 프로덕션 및 비프로덕션 용도로 사용할 수 있는 영구 소프트웨어 라이선스로 제공된다.

### IBM Db2 Advanced Edition
Db2 Advanced Edition은 IBM 하이브리드 데이터 관리 플랫폼(HDMP)의 구성 요소로만 제공된다. 프리미엄 IBM 지원과 함께 무제한 프로덕션 및 비프로덕션 용도로 사용할 수 있다.

## 기술 정보
Db2는 명령줄이나 GUI에서 관리할 수 있으며, SQL과 XQuery를 모두 지원한다. Db2는 REXX, PL/I, 코볼, RPG, 포란, C++, C, Delphi, .NET, Java, 파이썬, 펄, PHP, Ruby 등 다양한 프로그래밍 언어를 위한 API를 제공한다. 또한 Eclipse 및 Visual Studio 통합 개발 환경에 대한 통합을 지원한다.

pureQuery는 데이터에 액세스하는 애플리케이션에 초점을 맞춘 IBM의 데이터 액세스 컴퓨팅 플랫폼이다. pureQuery는 Java와 .NET을 모두 지원한다.

## 같이 보기

* IBM
* 관계형 데이터베이스 관리 시스템(RDBMS)

## 참조


## 외부 링크
*  


분류:IBM 소프트웨어
분류:관계형 데이터베이스 관리 시스템
분류:사유 데이터베이스 관리 시스템