SQL이란?
안녕하세요.
이번에 데이터 분석공부 계획을 세우면서 그동안 공부한 것을 복습겸 정리차원에서 포스팅하려고 합니다.
공부방법은 책, 영상, 등 굉장히 다양한데,
하나의 영상을 정했습니다.
바로 코드잇이구요. https://www.codeit.kr/
최소 하루 1시간 (약 90일 프로젝트)
비개발자 SQL데이터 베이스 -> 프로그래밍 기초 in 파이썬 -> 데이터 사이언스 입문 순서로 진행 예정입니다.
이번 첫 내용은 SQL의 역사와 SQL은 무엇인지에 관한 것입니다. (코드잇 내용 발췌)
1. SQL의 역사
1970년대 초, IBM이라고 하는 컴퓨터 회사는 System/R이라는 DBMS와, 이것을 사용하기 위해 필요한 언어인 SEQUEL을 만들었습니다. SEQUEL은 Structured English Query Language의 줄임말이었는데요.
SEQUEL은 '씨퀄'이라고 발음되었습니다. 그런데 SEQUEL은 그 단어가 이미 다른 곳에서 사용되고 있다는 문제(상표권 문제) 때문에 그 이름이 SQL(Structured Query Language)로 변경되었습니다. 이런 역사 때문에 아직도 SQL을 보고 ‘씨퀄’이라고 발음하는 분들도 있는데요. 그것보다는 ‘에스큐엘’이라고 정확하게 발음하는 것이 좋습니다.
SQL은 그 뒤로 IBM, 오라클이라고 하는 회사 등에 의해 제각각 발전하기 시작했습니다. 그러다가 1987년, 국제 표준화 기구(ISO)에서 SQL에 관한 국제 표준(ISO 9075:1987)이 제정되었습니다. 그 뒤로 해당 표준은 기존 내용이 개정되고, 새로운 내용들이 추가됨으로써 발전해갔고, 2020년 6월 기준으로 현재는 2019년 개정안이 최신입니다.
정리하면 현재 SQL은 공인된 국제 표준이 있습니다. 하지만 우리가 실제로 사용하는 SQL은 이 국제 표준에 완벽히 부합하지는 않습니다. 이게 무슨 말일까요? 그것은 바로 Oracle, Microsoft SQL Server, MySQL 등의 DBMS에서 지원되는 SQL이 표준을 완벽히 준수하지는 않는다는 뜻입니다.
각 DBMS의 SQL들은 SQL 국제 표준을 일부 준수하기는 하지만, 그 준수 정도가 각각 다릅니다.
예를 들어, 각 DBMS들은
(1) 표준에 있는 기능을 지원하지 않거나
(2) 표준에 있는 기능이더라도 다른 표현법을 사용하거나
(3) 표준에는 없는 기능을 지원하는
등의 방식으로 표준을 조금씩 어기고 있고, 그 모습도 DBMS마다 다른데요.
사람의 언어에 비유하자면, SQL 국제 표준이라는 '표준어'가 존재한다면 실제로 각 DBMS가 지원하는 SQL은 '사투리'처럼 조금씩 차이가 있는 것이죠.
왜 이런 현상이 발생한 걸까요?
그 이유는 다양하지만 일단 많은 DBMS 회사들이 '성능 향상'과 '더 다양한 기능 제공'을 위해서, 차라리 표준을 일부 벗어나는 것을 택하는 경우가 많기 때문입니다. 그리고 DBMS에 관한 모든 사안에 대해서 표준에 기재되어 있는 것도 아니기 때문에, 그런 부분들에 있어서 DBMS마다 차이가 발생하기도 하구요.
그래서 SQL을 배울 때는 본인이 사용할 DBMS의 SQL을 바로 공부하는 것이 가장 정확하고 빠른 길입니다.
하지만 SQL마다 조금씩 차이가 있더라도 서로 비슷한 부분이 훨씬 더 많기 때문에, 일단 한 DBMS의 SQL만 제대로 배워두면, 다른 DBMS의 SQL을 배우는 것은 어렵지 않습니다.
2. MySQL이란?
MySQL이라는 DBMS에 대해 알아보겠습니다.
MySQL은 현재 페이스북, 유튜브 등을 비롯한 유명한 서비스에서도 활발히 사용되고 있는 DBMS입니다.
MySQL은 가장 처음 MySQL AB라고 하는 스웨덴 회사에서 개발되었습니다. 그 뒤로 MySQL AB는 2008년, Sun Microsystems라는 회사에 인수되었는데요.
Sun Microsystems는 지금 IT 분야에서 아주 중요한 프로그래밍 언어인 자바(Java)를 개발한 회사입니다. 그리고 유닉스 계열의 솔라리스(Solaris)라고 하는 운영 체제를 만들기도 한 회사입니다.
2010년에 Sun Microsystems는 Oracle이라는 회사에 인수되었고, 이에 따라 자연스럽게 MySQL 또한 Oracle의 소유가 되었습니다.
그럼 Oracle은 어떤 회사일까요?
IT 분야에서 일하는 사람이라면 이 회사의 이름을 한번쯤은 들어봤을 텐데요. Oracle은 회사명과 같은, 오라클이라는 DBMS를 서비스하고 있는 회사로, 오라클은 현재 기업용 데이터베이스 시장에서 압도적인 영향력을 발휘하고 있는 DBMS입니다.
Oracle은 저작권을 매우 중요시하고, 기술을 상업화해서 이윤을 창출하는 능력으로도 유명한 회사입니다. Oracle은 구글이 자사의 자바 API를 무단으로 베껴서 안드로이드를 만들었고 이것은 '저작권 위반'이라고 주장하며 소송을 제기하기도 했죠.
사실 Sun Microsystems가 Oracle에 인수될 때, 많은 사람들이 Oracle이 자사의 DBMS인 오라클의 영향력을 더 넓히기 위해 MySQL을 시장에서 퇴출시키지 않을까하는 걱정을 하기도 했습니다. 그래서 MySQL을 만들었던 초기 개발자들은 회사에서 나와 MariaDB라고 하는 오픈소스 프로젝트를 시작하기도 했죠. 이 MariaDB 또한 오늘날 인기가 많은 DBMS 중 하나입니다.
다행히도 MySQL은 아직 오픈 소스 소프트웨어로 누구나 자유롭게 사용할 수 있습니다. 그런데 MySQL의 특이한 점은 Oracle의 상업용 라이센스로도 제공된다는 점입니다. 보통의 경우에는 MySQL을 오픈 소스 소프트웨어로 생각하고 별다른 제한 없이 사용해도 되지만, 만약 오라클에서 제공하는 MySQL에 관한 추가 서비스, 상시 기술 지원 등을 원한다면 상업용 라이센스를 사야합니다. 이 뿐만 아니라 만약 MySQL의 소스 코드를 가져다가 일부를 수정하고 자신의 제품의 일부로 만들어서 재배포하는 상황에서 그 소스코드를 공개하지 않으려는 기업이 있다면 이 경우에도 상업용 라이센스가 필요하구요.
Oracle은 자사의 기존 DBMS인 오라클과 기업 인수를 통해 얻게 된 MySQL을 둘다 잘 서비스하고 있습니다. 알려진 바에 따르면, 오라클과 MySQL 둘다 기술적으로 장단점이 다르고, 어떤 면에서는 상호보완적인 관계의 DBMS이기 때문에 Oracle에서 둘다 잘 관리해나갈 것으로 보인다는 이야기가 많습니다.
실제로 두 DBMS의 시장에서의 쓰임새를 보면 약간의 차이가 있습니다. 은행, 거래소 등과 같이 데이터 처리의 정확성, 운영의 안정성 등이 엄격하게 요구되는 분야에서는 오라클이 주로 사용되고 있고, 우리가 흔히 쓰는 앱, 웹 사이트 같은 서비스를 만들 때는 MySQL을 쓰는 경우가 많습니다. 이는 아무래도 오라클이 애초에 신뢰도가 중요한 비즈니스 분야에 적합하게 설계되어 있고, 해당 영역에서의 역사도 길기 때문입니다. 대신 MySQL은 무료로 사용할 수 있고 좀더 가볍다는 점이 장점이죠.
MySQL은 여러 DBMS 중에서도 특히 일반 사용자가 사용하기 편하다는 평가를 받습니다. 그리고 간단히 사용해볼 때 요구하는 컴퓨터 성능도 작은 편이라 부담이 덜하구요. 게다가 IT 세계에서는 LAMP(Linux + Apache + MySQL + PHP/Perl/Python)라고 하는 개발 플랫폼의 조합이 이미 관용어가 됐을 정도로, 많은 개발자들이 보편적으로 쓰는 DBMS이기도 합니다.
이번 포스트에서는 SQL의 역사와 MySQL에 대해 살펴봤습니다.
다음 포스팅에서는 MySQL 에 Data 를 Importing 하는 것과 관련 용어 등에 대해 정리해보겠습니다.
뿅