프로그래밍 세계에는 굉장히 다양한 언어가 존재한다. 개발 관련 언어나 데이터 모델링 언어 등 종류도 많은데, 한 가지 부류에 쓰이는 언어도 많이 있다.
그 중에 데이터베이스 관련 언어도 존재하는데, 데이터베이스 언어 중 오랫동안 사용되어 온 SQL이란 언어가 있다. 데이터베이스하면 SQL이란 말이 나올 정도로 아주 많은 프로그래머가 사용하는 언어다.
이번 아티클에서 SQL이 오랫동안 사용되어 왔지만, 여전히 인기 있고 많이 사용하는 이유에 대해서 알아볼까 한다.
구조화 쿼리 언어(Structured Query Language), SQL은 2023년 언어 인기 조사 중 4위에 오름
전문 개발자 절반 이상(51.52%)가 업무네 SQL을 사용 중, 코딩을 배우는 사람 중 약 1/3이 SQL을 사용하는 것으로 나타남
SQL은 수십션 동안 사용되며 개발자 사이에 엇갈린 평가도 받는다. 하지만 SQL의 미래가 여전히 밝은 이유는 무엇인가?
편재, 영어로 하면 omnipresence, ubiquitous라 하고 "어디에나 있음"을 의미한다.
그렇다면 편재성을 개발에 대입하면 어떻게 표현 할 수 있나?
개발에서의 편재성은 많은 개발자들이 어디에서든 사용하고 있다고 생각하면 된다.
SQL은 많은 개발자들에게 기본 요소고 그만큼 인력 풀이 넓기 때문에, SQL 기술을 갖춘 사람에 대한 수요에 대응하기 위해 SQL을 공부하고 경력을 개발하기 위해 더 많은 사람이 SQL을 배우게 된다.
SQL의 안정성은 언어에 대한 표준에서 온다 볼 수 있다.
SQL은 또한 개발자가 의존할 수 있는 효과적인 표준이고, SQL의 버전이 바뀌어도 크게 변하지 않아 장기적인 프로젝트에 적합하다.
그래서 SQL은 애플리케이션 내의 데이터에 대한 호환성 요구사항을 더 쉽게 충족하도록 해준다. 데이터베이스가 바뀌어도 SQL 용어를 사용하기 때문에 애플리케이션 로직을 수정할 필요가 없다.
결국에 SQL 언어의 편재성이 곧 안정성을 만들어 냈다고 볼 수 있을 것 같다.
SQL의 편재성이 높다면, 더 좋은 데이터베이스 언어를 배워 다른 개발자들과는 다른 특별한 기술을 가지는 것도 좋은 방법이라 생각할 수 있다. 그런데 어째서 아직도 많은 사람들이 SQL을 사용할까?
SQL의 인기는 기술적 관점에서도 살펴볼만한 가치가 있다.
기술적 관점에서 SQL의 가장 큰 이점은 논리적으로 설계됐다는 점이다. 즉, 작동 방식을 이해하면 매끄럽고 현명하게 사용할 수 있다.
SQL은 관계형 데이터베이스 모델과 매우 밀접하게 연결되어 있고, 모든 장단점도 그대로 갖고 있다. 실제로 많은 사람들이 SQL을 관계형 데이터베이스, NoSQL을 비관계형 데이터베이스라 칭하곤 한다.
하지만 SQL과 관계형 데이터베이스는 서로 별개다. 그 이유가 최근 많은 비관계형 데이터베이스가 테이블형 모델과 SQL 언어를 채택했기 때문이다. SQL과 관계형 모델은 꽤 오래 전부터 동의어로 사용되어 왔지만, 비관계형 데이터베이스가 부상하면서 이런 경계가 더 유동적으로 변했다.
실제로 관계형 데이터베이스와 비관계형 데이터베이스 두가지가 매우 다양하게 서로 다른 분야에서 잘 사용되고 있다. 그런데 이 두가지 데이터베이스가 모두 SQL 언어를 사용하고 있다는 점이 더 인기를 부각시키는 것으로 보인다.
SQL의 또 다른 이점은 선언적 언어라는 점이다.
선언적 프로그램에서 개발자는 원하는 작업을 수행하기 위해 프로그램이 취할 단계를 지정하는 것이 아니라 프로그램이 해야 할 작업을 설명한다.
이 말은 곧 우리가 어떻게 선언하느냐에 따라서 해야 할 작업을 줄이거나 더 많은 양의 데이터를 얻는 등 쿼리를 최적화시킴으로서 SQL의 성능을 향상시킬 수 있다는 것이다.
소프트웨어에 대한 수요와 소프트웨어 개발 속도, 개발자 수가 증가하면서 나타난 SQL의 문제는 이론적 관점에서 SQL이 어떻게 작동하는지 심층적으로 이해하는 개발자가 적다는 것이다.
최근 애플리케이션이 방대한 규모로 확장되고, 비즈니스에 대한 요구사항을 충족하는데에만 집중하기 때문에, 비즈니스 로직과 고객이 달성하고자 하는 것과 인프라의 복잡한 부분을 어떻게 할 지에 대한 부분은 개발이 완벽하게 되지 않는 경우가 많다.
이렇게 성능 문제가 나타나면 SQL의 동작 방식을 알고 있다면 큰 도움이 된다. 동일한 테이블에서 여러 번 데이터를 파싱하는 대신 더 큰 테이블에서 데이터를 골라내는 방법과 같은 쿼리 설계에 대한 이해가 성능에 큰 영향을 미칠 수 있다.
이러한 데이터 관리 기술은 데이터베이스 이론에 대한 이해에 기초한다. 실제로 이해하고 배포하기 위해 시간이 필요하지만 더 나은 결과를 제공하기 위해 이 과정이 필수적이다.
글을 보면서 내가 생각하는 SQL의 인기 비결은 곧 표현하기 가장 좋은 관계형 데이터베이스를 제일 먼저 언어로 구현함으로서 표준을 만들고(1), 그 표준과 호환성 덕에 다양한 애플리케이션에서 이용이 가능하며(2) 업데이트를 지속적으로 하고(3), 이론적으로 제대로 공부하면 이만큼 쉽고 좋은 데이터베이스 언어가 없을 것(4)이란 점인 것 같다.
결국엔 이 4가지가 서로서로 맞물리면서 SQL을 최고의 데이터베이스 언어로 만들어 낸 게 아닌가 생각한다.