직전 포스팅에서 엑셀과 데이터베이스를 간단하게 비교를 해 봤는데, 이번 글은 직전 포스팅의 후속글입니다. 따라서 예상 독자도 이전글과 동일하게 엑셀로 현업 실무를 하는, 개발자가 아닌 사람입니다.

 

이번 포스팅에서는 DBMS의 몇가지 종류와 특징들, 그리고 SQL이 무엇인지와 스키마에 대해 간략하게 알아보고자 합니다.

데이터베이스 프로그램(DBMS: Database Management System)의 종류

데이터베이스를 다룰 수 있는 컴퓨터 프로그램들이 어떤 것이 있는지를 구체적으로 알아봅시다. 사실 데이터베이스 프로그램 뿐만 아니라 데이터베이스의 패러다임도 다양한 종류가 있습니다. 일단은 가장 전통적이면서도 강력한 관계형 데이터베이스(Relational Database, RDB) 프로그램에 대해 알아보도록 하겠습니다.

햄버거에 맥도날드, 롯데리아, KFC가 있듯이 DBMS에는 sqlite3, mysql, mariadb, postgre-sql, oracle db 시리즈, mongodb, cassandra 등등 여러가지가 있습니다.

사실 근래들어서 새로운 database의 한 패러다임인 nosql db라는 것도 있는데 해당 내용은 나중에 시간이 남게 되면 추가적으로 다루며, 이번에는 다루지 않겠습니다.

일단 데이터베이스를 다루는 프로그램을 두개의 범주로 나누어 보겠습니다.

파일형 Database(Flat-file database)

엑셀의 경우 그 데이터 값들은 하나의 파일에 다 들어가 있습니다. 마찬가지로 데이터베이스 중에서 하나의 파일 형태로 존재하는 데이터베이스가 있습니다. 대표적인 예시로 SQLite3가 있습니다. 그 외에도 마이크로소프트 액세스 같은 것들도 파일형 데이터베이스를 지원합니다. 이어서 나오는 서버형 데이터베이스에 비해서는 처리할수 있는 규모나 성능은 다소 떨어질 수 있으나, 파일 하나에 데이터가 다 들어간다는 간편성이 있습니다.

서버형 데이터베이스

개발자들이 자주 사용하는 형식의 데이터베이스인 서버형 데이터베이스입니다. 실제 IT 서비스에서 자주 사용되는 데이터베이스들이며 파일형 데이터베이스에 비해 큰 규모의 데이터들도 쉽게 처리하며, 하나의 파일 형태로 존재하는 것이 아닌 하나의 컴퓨터에서 지속적으로 실행되고 있는 형태의 프로그램으로 존재합니다. 따라서 그 컴퓨터와 네트워크 연결이 가능한 다른 컴퓨터에서 원격으로 데이터들을 조회하거나 다룰 수 있으며 따라서 여러명의 사용자가 동시에 사용하는 것도 가능합니다. 이에 따라 인증 및 권한과 동시성과 관련된 다양한 복잡한 기능들도 제공을 합니다. 이에 해당하는 DBMS에는 Mysql, MariaDB, PostgreSQL, 오라클 데이터베이스 등이 있습니다.

 

SQL(Structured Query Language)

직역하면 구조화된 질의어에 해당합니다. SQL은 선언형 프로그래밍 언어에 해당하며, 관계형 데이터베이스 관리 시스템(RDBMS)을 사용하기 위한 컴퓨터용 언어입니다. 엑셀의 경우 GUI(Graphical User Interface)를 지원하기 때문에, 눈에 보이는 버튼들을 누르고 셀을 클릭한 뒤 값을 입력하거나 하는 식으로 직관적인 방법으로 데이터들을 처리할 수 있지만, 앞서 위에서 언급한 (관계형) 데이터베이스들은 데이터를 처리하기 위해서 SQL이라고 하는 프로그래밍 언어를 작성한 뒤 이를 이용해서 명령을 내려야 합니다.

데이터를 조회할때는 Select 구문, 수정할때는 Update 구문, 생성할때는 Insert into 구문, 제거할때는 delete from 구문이라는 프로그래밍 언어 문법(Syntax)에 맞는 SQL 구문을 작성한 뒤, 이를 DBMS에 전송해서 작업들을 수행할 수 있습니다.

따라서 이 RDBMS 종류를 다루기 위해서는 SQL이라는 언어를 잘 알아야 하는 것이지요. 혹은 이 SQL 구문들을 자동으로 생성해서 동작하게 끔 하는 프로그램을 별도로 개발한다면, 엑셀을 다루듯이 클릭 등의 직관적인 방법으로 데이터를 다룰 수 있게 할 수 있습니다.

 

관계형 데이터베이스와 스키마

관계형 데이터베이스(Relational-Database)

앞에서 관계형 데이터베이스에 대해서 자세한 설명을 하지 않고 넘어왔지만, 여기서 간략하게 관계형 데이터베이스가 무엇인지 짚고 가겠습니다.

데이터베이스를 어떤 식으로 저장할지는 여러 패러다임들이 있었지만 지금 가장 많이 쓰이는 형식이 관계형 데이터베이스(Relational Database)이며, 데이터베이스를 표 형태로 표현한다라는 뜻이라고 보시면 됩니다.

위 표를 보시면, 간단한 용어를 확인할 수 있는데, Relation(관계)는 표 자체를 뜻하고, Attribute는 특성값이라고 보시면 됩니다. 사실 엑셀도 표 형식이니 이해하기 어렵지 않을 것입니다.

엑셀에 위와 같은 데이터가 있다고 하면, 첫번째 행에 있는 이름, 국어, 영어, 수학 들은 attribute에 해당하며, 각각의 2번째 3번째 행은 tuple에 해당하게 됩니다. 이것이 표 형태로 있는 것이 relation이 됩니다.

이런 용어들은 크게 신경쓸 필요 없고, 다만 관계형 데이터베이스는 데이터를 위와 같은 표 형태로 나타낸다 라는 것만 기억하시면 됩니다.

데이터베이스 스키마

앞에서 관계형 데이터베이스가 표 형식을 따른다고 했습니다. 이때 이 "표의 형태가 데이터베이스 스키마"입니다. 

위에 예시에서 들은 2명의 학생의 국어,영어,수학 성적에 대한 Relation의 스키마를 표현하자면 다음과 같겠습니다.

이름이라는 attribute는 text 데이터를 저장하고, 국어와 영어 수학이라는 attribute는 정수 값을 저장하는 형태를 띱니다.

이 내용 자체가 성적과 관련된 저 Relation의 스키마입니다.

그리고 이 Relation은 RDBMS 및 SQL에서는 테이블이라고 부릅니다. 테이블은 직역하면 표라는 뜻을 갖지요.

 

References

ko.wikipedia.org/wiki/%EA%B4%80%EA%B3%84%ED%98%95_%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4

namu.wiki/w/Microsoft%20Access

namu.wiki/w/DBMS

ko.wikipedia.org/wiki/%ED%94%8C%EB%9E%AB_%ED%8C%8C%EC%9D%BC_%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4

+ Recent posts