다양한 데이터베이스

유석현(SeokHyun Yu)·2022년 8월 5일
0

SQL

목록 보기
2/45
post-thumbnail

서론

데이터베이스는 사용 용도나 이를 제어하는 프로그래밍 환경 등 각각의 조건에 따라 다양하게 존재한다.

그중에서도 SQL로 데이터를 다루는 데이터베이스를 관계형 데이터베이스(RDB: Relational Database)라고 한다.

관계형 데이터베이스는 현재 주류를 이룰 정로로 많은 시스템에 채택되었으며 제품도 여러 가지가 있다.


1. 데이터베이스 종류

데이터베이스는 데이터 저장 방법에 따라 몇 가지로 분류할 수 있다.

지금부터 오래된 순서대로 몇몇 데이터베이스를 소개하겠다.

  • 계층형 데이터베이스

    역사가 오래된 데이터베이스로, 폴더파일같이 계층 구조로 된 데이터를 저장하는 방식이다. 하드디스크나 DVD 파일시스템을 이러한 계층형 데이터베이스라고 할 수 있다. 하지만 현재 데이터베이스로서 채택되는 경우는 많지 않다.

  • 관계형 데이터베이스

    관계 대수(relational algebra)라는 것에 착안하여 고안한 데이터베이스이다. 관계 대수라고 하면 뭔가 어려워 보이지만, 행과 열을 가지는 표 형식 데이터를 저장하는 형태의 데이터베이스를 가리킨다. 관계형 데이터베이스에는 이러한 표를 잔뜩 저장해두고, 각각의 표에 이름을 붙여 관리한다. 이때 데이터베이스 안의 데이터는 SQL명령어로 조작할 수 있다.

  • 객체지향 데이터베이스

    JAVA나 C++를 객체지향 언어라고 한다. 이때 말하는 '객체(object)'라는 것을 가능하면 그대로 데이터베이스에 데이터로 저장하는 것이 객체지향 데이터베이스이다.

  • XML 데이터베이스

    XML이란 자료 형식을 가리키는 용어로, 태그(예: <data> </data>)를 이용해 마크업 문서를 작성할 수 있게 정의한 것이다. XML 데이터베이스는 이처럼 XML 형식으로 기록된 데이터를 저장하는 데이터베이스이다. XML 데이터베이스에서는 SQL 대신 XQuery라는 전용 명령어를 사용한다.

  • 키-밸류 스토어(KVS)

    키(Key)와 그에 대응하는 값(Value)이라는 단순한 형태의 데이터를 저장하는 데이터베이스이다. NoSQL(Not only SQL)이라는 슬로건으로부터 새애겨난 데이터베이스로, 열 지향 데이터베이스라고도 불린다.


2. RDBMS 사용 시스템

RDBMS는 역사가 깊은 만큼 다양한 시스템에서 사용된다.

메인프레임(대형 컴퓨터)은 대부분 RDBMS를 사용한다고 해도 과언이 아니다.

기업의 기반 시스템으로 채택되는 것은 아주 일반적인 일이다.

다만, 최근 들어 메인프레임 자체를 찾아보기 어려워졌다.

다운사이징으로 인해 소형 워크스테이션으로 대체되거나, 클라우드에서 자체적으로 구동하기 때문이다.

그래도 여전히 데이터베이스 서버로는 RDBMS가 사용되었는데, 이때부터 클라이언트/서버 구조도 유행하기 시작했다.

3. 데이터베이스 제품

지금까지 설명한 것처럼, RDBMS라는 용어는 관계형 데이터베이스를 관리하는 소프트웨어를 일컫는 말이다.

다만 'RDBMS'라는 이름의 소프트웨어가 존재한다는 뜻은 아니다.

실제로 시중에 판매되거나 오픈소스로 자유롭게 다운로드 할 수 있는 유명한 제품으로 다음과 같은 것이 있다.

오래된 순서대로 나열해보겠다.

  • Oracle

    Oracle은 오라클에서 개발한 RDBMS이다. 역사가 깊은 만큼 많은 시스템에서 채택해 사용중이며 현재 가장 많이 쓰이는 RDBMS 중 하나로, RDBMS의 사실상 표준이라고 해도 문제없을 정도로 유명하다.

  • DB2

    IBM이 개발한 DB2는 Oracle처럼 역사가 오래된 RDBMS이다. DB2는 발표된 이래 한동안 IBM 컴퓨터에서만 구동되었다. 이후 유닉스나 윈도우 등의 다른 플랫폼에서도 구동할 수 있게 되었지만 시장 점유율을 확대할 수는 없었다. Oracle이 더 유명한 것 역시 이 같은 배경과 관련이 있다.

  • SQL Server

    SQL Server는 윈도우를 개발한 마이크로소프트가 개발한 RDBMS로, 윈도우 플랫폼에서만 동작한다. 앞에서 먼저 언급한 RDBMS에 비해 비교적 새로운 제품이다.

  • PostgreSQL

    PostgreSQL은 오픈소스 커뮤니티가 개발한 RDBMS이다. 무료 소프트웨어인 만큼 자유롭게 사용할 수 있다.

  • MySQL

    MySQL은 PostgreSQL과 마찬가지로 오픈소스 커뮤니티에서 태어난 RDBMS이다. 세상에 나올 당시만 해도 경량 데이터베이스라는 점을 강조하다 보니 필요한 최소 기능만을 갖추었었다. 하지만 기능이 확장되면서 지금은 다른 RDBMS와 비교해도 부족하지 않을 정도이다.

  • SQLite

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


4. SQL의 방언과 표준화

RDBMS는 처음부터 SQL 명령어를 이용해 데이터베이스를 조작하도록 설계된 만큼, SQL을 사용할 수 없는 RDBMS는 없다.

하지만 각 제품별로 기능 확장이 이루어지는 과정에서 '비슷한 조작을 실행하더라도 서로 다른 명령어가 필요한' 상황이 발생하기 시작했다.

즉, 특정 RDBMS 제품에만 토용되는 '고유 방언'이 생겨난 것이다.

이 같은 고유 방언의 간단한 사례 중 하나로 키워드 생략을 들 수 있다.

데이터를 삭제할 때는 DELETE 명령어를 사용하는데, Oracle이나 SQL Server에서는 DELETE 뒤에 붙는 FROM을 생략해도 별 다른 문제가 없다.

그에 비해 DB2PostgreSQL, MySQL에서는 FROM을 생략할 경우 구문 에러가 발생해 실행되지 않는다.

프로그래밍 언어의 세계에서 '방언'은 환영받지 못한다.

이 같은 방언을 없애려면 모두 '표준어'를 사용하면 된다.

ISO나 ANSI가 결정한 'SQL-92', 'SQL-99', 'SQL-2003'등이 바로 표준 SQL이다.

여기서 숫자는 책정된 해를 나타낸다.

지금까지 많은 RDBMS가 표준화에 동참하여 기능을 확장해온 덕택에 현재는 방언이 많이 줄어들었다.

앞으로 설명할 내용도 표준 SQL을 기준으로 설명한다.

profile
Backend Engineer

0개의 댓글