Files
2021-12-13 21:23:43 +09:00

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이 개발한 DB2Oracle처럼 역사가 오래된 RDBMS이다.
  • 다만 오라클이 유닉스 워크스테이션 중심이었던 것과 달리, DB2는 발표된 이래 한동안 IBM 컴퓨터에서만 구동되었다.
  • 이후 유닉스나 윈도우 등의 플랫폼에서도 DB2를 구동할 수 있게 되었다.

SQL Server

  • SQL Server는 윈도우를 개발한 마이크로소프트가 개발한 RDBMS로, 윈도우 플랫폼에서만 동작한다.

PostgreSQL

  • PostgreSQL은 오픈소스 커뮤니티가 개발한 RDBMS이다. 무료 소프트웨어인 만큼 자유롭게 사용이 가능하다.
  • 기반이 되는 RDBMS는 캘리포니아 대학교 버클리 캠퍼스에서 탄생했는데, 그 때문인지는 몰라도 실험적인 기능이 포함되어 있거나 독특한 구로를 가지기도 한다.

MySQL

  • MySQLPostgreSQL과 마찬가지로 오픈소스 커뮤니티에서 태어난 RDBMS이다.
  • 경량 데이터베이스라는 점을 강조하여, 필요한 최소한의 기능만을 갖추고 있다.
  • 하지만 기능이 확장되면서 지금은 다른 RDBMS와 비교해도 부족하지 않을 정도이다.

SQLite

  • 오픈소스 커뮤니티에서 태어난 SQLite는 임베디드 시스템에 자주 쓰이는 작은 RDBMS이다.

4. SQL의 방언과 표준화

  • RDBMS는 처음부터 SQL 명령어를 이용해 데이터베이스를 조작하도록 설계된만큼, SQL을 사용할 수 없는 RDBMS는 없다.
  • 하지만 각 데이터베이스 제품 별로 기능 확장이 이루어지는 과정에서 비슷한 조작을 실행하더라도 서로 다른 명령어가 필요한 상황이 발생했다.
  • 즉 특정 데이터베이스 제품에만 통용되는 고유 방언이 생겨나게 되었다.
  • 고유 방언의 간단한 사례로 키워드 생략을 들 수 있다.
  • 데이터를 삭제할 때는 DELETE 명령어를 사용하는데, Oracle이나 SQL Server에서는 DELETE 뒤에 붙는 FROM을 생략해도 별 다른 문제가 없다. 그에 비해 DB2PostgreSQL, MySQL에서는 FROM을 생략할 경우 구문 에러가 발생해서 실행되지 않는다.
  • 다른 대표적인 방언의 사례로 외부결합을 들 수 있다.
  • Oracle에서는 (+)라는 특별한 연산자를 이용해 외부결합조건을 저장하는 데 비해, SQL Server에서는 *= 연산자를 이용한다.
  • 이와 같은 방언들 없애기 위해 ISOANSI가 결정한 SQL-92, SQL-99, SQL-2003등이 바로 표준 SQL이고, 여기서 숫자는 책정된 해를 나타낸다.
  • 표준 SQL로 외부결합을 하는 방법은 LEFT JOIN이다.
SQL에는 방언이 있다! 방언 대신 표준 SQL을 사용하는 편이 좋다!