엑셀이 데이터베이스다.
엑셀 파일을 보면 네모칸이 있는 표가 있고, 아래에 탭이 있다. 탭을 시트(Sheet)라고 하고, 시트마다 다른 표를 만들 수 있다. 이런 표형식으로 자료를 만들 수 있는 프로그램을 스프레드시트(spreadsheet)라고 부른다. 스프레드시트는 행과 열로 구분된다. 행은 1 ~ N으로 아래로 떨어지는 개수 또는 순서 등으로 영어로는 row라고 부르며, 열은 A ~ Z로 옆으로 늘어선 항목을 말하고 영어로는 column이라고 부른다. 스프레드시트인 표는 이런 행(row)과 열(column)으로 구분되어 있다.
스프레드시트는 MS사에서 만든 엑셀이 가장 많이 사용되고, 맥에서는 numbers라는 스프래스시트가 있다. 또한 OpenOffice의 Calc와 구글 드라이브의 스프레드시트가 있다.
여행 계획을 엑셀로 짜 보자. 이번 여행은 3박 4일 일정으로 대만 여행 계획을 세울 예정이다. 코로나로 해외여행을 못 가니 계획이라도 해외로 짜 보자. row의 1번째는 시간을 작성하고 column에는 날짜를 기입한다. 시간은 1시간 단위로 기입하면 될 것 같다. 날짜는 여행 날짜를 기입한다.
첫날은 10시 비행시간 2시간 전에는 공항에 도착해야 하니 공항철도 시간 포함해서 7시에 출발해야 한다. 엑셀의 첫날 7시에 해당하는 칸에 ‘여행 출발’이라고 설레는 마음으로 기입한다. 8시 항목에는 ‘공항 도착 및 체크인’으로 기입한다. 10시 항목에는 ‘대만으로 고고’라고 기입한다. 대만까지는 대략 2시간 30분이 걸린다. 12시 30분 정도에는 타이페이 타이완 타오위엔 공항에 도착한다. 12시 항목에는 ‘대만 도착’이라고 작성한다. 이후에는 시간대 별로 일정을 기입한다.
여행 기간 중에는 언제든지 일정을 수정할 수 있다. 다만, 날짜를 수정할 수는 없다. 날짜는 여행사나 비행기 예약 등이 정해져 있기 때문에 날짜를 늘리기에는 힘들다. 일정 조정은 시간만 가능하다. 1시간 단위로 짰던 것을 30분 단위로 세세하게 짤 수도 있고, 휴양이라면 2,3시간 길게 짤 수도 있다. 날짜 항목(column)은 수정이 불가하지만, 시간(row)은 수시로 수정이 가능하다. 여행을 다녀온 후에 첫째 날 오후 3시에 무엇을 했는지는 엑셀 파일에서 첫째 날 항목(column)에서 3시 행(row)을 보면 쉽게 찾을 수 있다.
IT에서도 앞서 얘기한 스프레드시트(엑셀)와 똑같은 생긴 것이 있다. 엑셀은 데이터를 저장하기 위해서 저장하는 것이다. IT에서 방대한 데이터를 저장하기 위해 스프레드시트와 똑같이 생긴 데이터 베이스(DataBase)를 사용한다. 데이터 베이스에서도 행(row)과 열(column)이 존재한다. 행(row)은 데이터가 축적되고, 열(column)은 데이터의 항목을 말한다. 스프레드시트와 똑같이 작동한다.
앞서 첫째 날 오후 3시에 무엇을 했는지를 찾기 위해서는 첫째 날 열에서 오후 3시의 행을 찾았다. 해당 칸에 작성된 글자를 좀 더 유식하게 값(value)라고 부른다. 해당 value를 찾기 위해 날자 항목에서 찾으려는 시간을 찾는다. 또는 찾으려는 시간에서 날자 항목을 찾을 수도 있다.
열(column) 항목은 수정이 불가하고, 행(row)은 수시로 수정이 가능하다고 앞서 이야기한 바 있다. 행(row)은 축적되는 데이터이기 때문에 고정되어 있는 데이터가 아니다. 고정되어 있지 않기 때문에 데이터를 찾기 위해서는 기준을 세워야 한다. 이러한 기준을 키(key)라고 부른다. 여행 계획을 세웠던 스프레드시트에서는 시간이 키가 된다. 정리하면, 오후 3 시인 키(key)에서 첫째 날 항목(column)을 찾아서 나온 일정 값(value)을 찾을 수 있다.
이렇게 key와 value가 서로 묶여서 데이터를 쉽게 찾을 수 있도록 한 것을 관계형 데이터베이스(Relational DataBase - RDB)라고 부른다. 엑셀, 넘버스, 스프레드시트처럼 이런 데이터를 관리하고 작성할 수 있도록 해주는 프로그램을 데이터베이스 관리 시스템(DataBase Management System - DBMS)라고 부르고 있다.
엑셀에서는 데이터를 쉽게 작성하고, 찾고, 수정하고, 삭제할 수 있다. DBMS도 마찬가지로 데이터를 만들고(Create), 찾고(Read), 수정하고(Update), 삭제(Delete)할 수 있다. IT 사람들은 긴 단어는 별로 좋아하지 않는다. 웬만한 것들은 전부 다 첫 단어만 때서 약어로 만들어 버린다. Create, Read, Update, Delete도 앞자만 따서 CRUD라고 부른다.
여행 일정을 다시 보자. 3시에 첫째 날에는 무엇을 했는지는 찾을 수 있었다. 그러면 여행 동안 3시에는 무엇을 했는지 찾고 싶을 때는 3시에 해당하는 row의 항목들(column)을 보면 된다. 엑셀 시트는 눈으로 보고 바로 찾을 수 있다. 데이터가 많으면 스크롤 압박을 받아야 한다. 좀 더 찾기 쉽게 첫 행은 필터를 걸 수도 있다. 필터로 나오는 리스트가 많으면 이것도 체크하면서 찾기가 쉽지 않다. 조금 더 엑셀을 공부한 사람들은 엑셀 함수를 사용하여 원하는 항목의 값들을 찾을 수 있다. 더 나아가 여러 개 시트들에서 값을 찾아서 계산할 수도 있다.
데이터 베이스는 눈으로 보이지 않는다. 물론 DBMS - 데이터 베이스 관리 프로그램을 사용하면 데이터들을 볼 수 있지만, 엑셀처럼 필터를 걸어서 찾을 수는 없다. 특히나 개발에서 데이터 베이스는 눈으로 보는 것이 아닌 개발 프로그램에서 데이터 베이스의 자료를 찾아야 한다. 자료를 찾기 위해서는 데이터 베이스가 알아들을 수 있는 명령어로 요청해야 한다. 한마디로 데이터 베이스와 소통해야 데이터 베이스도 정확한 자료를 알려준다.
소통하기 위해서는 몸짓, 눈짓, 손짓 등도 있지만, 대표적으로 대화가 있다. 대화는 서로 알아들을 수 있는 언어가 있어야 가능하다. 서로 다른 언어로 대화를 하면 의미 전달은 불가능하다.
IT에서도 소통은 굉장히 중요한 요소이다.
시스템과 시스템 간 소통이 되지 않으면 서비스 자체가 불가능하다. 데이터 베이스와 개발 프로그램도 소통을 해야 한다. 데이터 베이스는 이미 만들어져 있는 제품이기 때문에 데이터 베이스에서 사용하는 언어가 기준이 된다. 이 언어를 SQL(Structured Query Language) 구조적 질문 언어라고 한다. 문법으로 구조화된 형식으로 질문을 보내면 데이터 베이스는 질문에 맞는 답을 보내준다. 질문을 구성하는 문장을 쿼리(query)라고 부른다. 쿼리로 데이터베이스의 자료를 넣거나, 찾거나, 삭제하거나, 업데이트할 수 있다.
데이터 베이스는 단 하나만 존재하지 않는다. 만약 데이터 베이스가 하나만 존재하고 한 회사에서만 독점한다면 그 회사는 세계적으로 독보적인 재벌 회사일 것이다. 스프레드 시트가 MS의 엑셀, 애플의 넘버스, 오픈오피스의 칼크, 구글 스프레드 시트처럼 다양하게 있는 것처럼 여러 회사들이 만든 데이터 베이스가 있다. 대표적으로 오라클에서 만든 오라클 데이터베이스, MS에서 MSDB, 지금은 오라클에 인수된 MySQL, 무료로 사용할 수 있는 mariaDB 등 다양한 데이터 베이스가 있다. 데이터 베이스를 만드는 회사가 달라도 SQL은 공통으로 사용되고 있고, 회사마다 약간의 기능적인 문법이 약간씩 다를 뿐이다.
Background Photo by Tobias Fischer on Unsplash