6.7 KiB
6.7 KiB
02강. 다양한 데이터베이스
DBMS에는 여러 종류가 있다. 데이터베이스의 사용 용도나 이를 제어하는 프로그래밍 환경 등 각각의 조건에 들어맞는 다양한DBMS가 고안되었기 때문이다.- 데이터베이스 중에서도
SQL로 데이터를 다루는 데이터베이스를관계형 데이터베이스(RDB: Relational Database)라고 한다.
1. 데이터베이스 종류
DBMS는 데이터 저장 방법에 따라 몇 가지로 분류할 수 있다.
계층형 데이터베이스
- 폴더와 파일 등의 계층 구조로 데이터를 저장하는 방식의 데이터베이스이다.
- 하드디스크나 DVD 파일시스템을 이러한 계층형 데이터베이스라고 할 수 있다.
- 하지만 현재
DBMS로 채택되는 경우는 많지 않다.
관계형 데이터베이스
관계 대수(relational algebra)라는 것에 착안하여 고안한 데이터베이스이다.- 쉽게 말하면 행과 열을 가지는 표 형식 데이터를 저장하는 형태의 데이터베이스를 가리킨다.
- 다만, 엄밀히 말해 관계 대수는 표 형식 데이터와는 아무런 관계가 없다.
- 표형식 데이터란 2차원 데이터를 말한다.
- 가로 방향으로는
열을, 세로 방향으로는행을 나열한다. - 관계형 데이터베이스에는 이러한 표를 잔뜩 저장해두고, 각각의 표에 이름을 붙여 관리한다. 이때 데이터베이스 안의 데이터는
SQL명령어로 조작할 수 있다.
객체지향 데이터베이스
자바나C++를 객체지향 언어라고 하는데,객체(object)라는 것을 중심으로 프로그래밍하는 언어이다.- 여기서
가능하면 객체 그대로를 데이터베이스의 데이터로 저장하는 것이 객체지향 데이터베이스이다.
XML 데이터베이스
XML이란 자료 형식을 가리키는 용어로, 태그를 이용해 마크업 문서를 작성할 수 있게 정의한 것이다. 태그는<data>데이터</data>와 같은 형식으로 표현한다.XML데이터베이스는 이처럼XML형식으로 기록된 데이터를 저장하는 데이터베이스이다.XML데이터베이스에서는SQL명령을 사용할 수 없다. 대신XML데이터를 검색할 때는XQuery라는 전용 명령어를 사용한다.
키-밸류 스토어(KVS)
- 키와 그에 대응하는 값(밸류)이라는 단순한 형태의 데이터를 저장하는 데이터베이스이다.
- 키와 밸류의 조합은
연상배열이나 해시 테이블(hash table)에서 자주 볼 수 있다. NoSQL(Not only SQL)이라는 슬로건으로부터 생겨난 데이터베이스로, 열 지향 데이터베이스라고도 불린다.
연상배열(associative array): 자료구조의 하나로, 키 하나와 값 하나가 연관되어 있으며
키를 통해 연관되는 값을 얻을 수 있다. 연상 배열, 결합성 배열, 맵(map), 딕셔너리(dictionary)로 부르기도 한다.
2. RDBMS 사용 시스템
RDBMS는 역사가 깊은 만큼 다양한 시스템에서 사용된다.메인프레임(main frame)은 대부분RDBMS를 사용한다고 봐도 무방하다.- 다만, 최근에는 메인프레임 자체를 찾아보기가 어려워졌다. 다운사이징으로 인해
소형 워크스테이션(workstation)으로 대체되었기 때문이다. - 그래도 여전히 데이터베이스 서버로는
RDBMS가 사용되었는데, 이때부터 클라이언트/서버 구조도 유행했다.
3. 데이터베이스 제품
RDBMS는 관계형 데이터베이스를 관리하는 소프트웨어를 일컫는 말이다. 다만RDBMS라는 이름의 소프트웨어가 존재한다는 뜻은 아니다.
Oracle
Oracle데이터베이스는 오라클에서 개발한RDBMS이다.- 현재 가장 많이 쓰이는
RDBMS중 하나로, 사실상RDBMS의 표준이라고 해도 문제없을 정도로 유명하다.
DB2
IBM이 개발한DB2는Oracle처럼 역사가 오래된RDBMS이다.- 다만 오라클이 유닉스 워크스테이션 중심이었던 것과 달리,
DB2는 발표된 이래 한동안IBM컴퓨터에서만 구동되었다. - 이후 유닉스나 윈도우 등의 플랫폼에서도
DB2를 구동할 수 있게 되었다.
SQL Server
SQL Server는 윈도우를 개발한 마이크로소프트가 개발한RDBMS로, 윈도우 플랫폼에서만 동작한다.
PostgreSQL
PostgreSQL은 오픈소스 커뮤니티가 개발한RDBMS이다. 무료 소프트웨어인 만큼 자유롭게 사용이 가능하다.- 기반이 되는
RDBMS는 캘리포니아 대학교 버클리 캠퍼스에서 탄생했는데, 그 때문인지는 몰라도 실험적인 기능이 포함되어 있거나 독특한 구로를 가지기도 한다.
MySQL
MySQL은PostgreSQL과 마찬가지로 오픈소스 커뮤니티에서 태어난RDBMS이다.- 경량 데이터베이스라는 점을 강조하여, 필요한 최소한의 기능만을 갖추고 있다.
- 하지만 기능이 확장되면서 지금은 다른
RDBMS와 비교해도 부족하지 않을 정도이다.
SQLite
- 오픈소스 커뮤니티에서 태어난
SQLite는 임베디드 시스템에 자주 쓰이는 작은RDBMS이다.
4. SQL의 방언과 표준화
RDBMS는 처음부터SQL명령어를 이용해 데이터베이스를 조작하도록 설계된만큼,SQL을 사용할 수 없는RDBMS는 없다.- 하지만 각 데이터베이스 제품 별로 기능 확장이 이루어지는 과정에서
비슷한 조작을 실행하더라도 서로 다른 명령어가 필요한상황이 발생했다. - 즉 특정 데이터베이스 제품에만 통용되는
고유 방언이 생겨나게 되었다. - 고유 방언의 간단한 사례로
키워드 생략을 들 수 있다. - 데이터를 삭제할 때는
DELETE명령어를 사용하는데,Oracle이나SQL Server에서는DELETE뒤에 붙는FROM을 생략해도 별 다른 문제가 없다. 그에 비해DB2나PostgreSQL,MySQL에서는FROM을 생략할 경우 구문 에러가 발생해서 실행되지 않는다. - 다른 대표적인 방언의 사례로
외부결합을 들 수 있다. Oracle에서는(+)라는 특별한 연산자를 이용해 외부결합조건을 저장하는 데 비해,SQL Server에서는*=연산자를 이용한다.- 이와 같은 방언들 없애기 위해
ISO나ANSI가 결정한SQL-92,SQL-99,SQL-2003등이 바로표준 SQL이고, 여기서 숫자는 책정된 해를 나타낸다. - 표준 SQL로 외부결합을 하는 방법은
LEFT JOIN이다.