SQL이 여전히 널리 사용되는 5가지 이유
원문보기: https://www.itworld.co.kr/t/61023/%EA%B0%9C%EB%B0%9C%EC%9E%90/328131
요약
편재성(Ubiquity)와 안정성
- 편재성: SQL에 대한 지식은 많은 개발자에게 기본 요소
- 안정성: 개발자가 의존할 수 있는 효과적인 표준이고, 버전이 바뀌어도 크게 변경되지 않는다.
- 장기적인 지원 계획에 적합
- 데이터 인프라 미리 계획 가능
- 다른 개발자에게 프로젝트를 인수인계 하기 쉽다.
- 특정 데이터베이스에 묶이지 않고 자신이 데이터를 소유하면서 원하는 대로 데이터를 다룰수 있다.
과학적 근거
- 논리적인 설계
- 작동 방식만 이해하면 매끄럽게 사용 가능
- SQL이 사실상의 표준
- 잘 계획하면 확장 가능
ex) 2016년 표준의 변경을 통해 데이터베이스 벤더가 다양한 JSON 형식을 지원할 수 있도록 했다.
최적화의 책임
이점
- SQL은 선언적 언어
- 선언적 언어: 해법을 정의하기보다는 문제를 설명. 명령형 프로그래밍 언어는 "어떤 방법"으로 할 것인지에 중점을 두는 반면에, 선언형 프로그래밍 언어는 "무엇"을 할 것인지에 중점을 두고 있다.
- 전체 계산을 구성하는 작업이 아닌 달성하고자 하는 결과에 집중할수 있다.
- 개발자와 데이터베이스 관점에서 쿼리가 더 쉬워진다.
비판
- SQL 옵티마이저의 성능 개선 효과가 크지 않다.
- 언어 컴파일러 오류: 대체로 개발자의 코드를 더 작고 더 빠른 바이너리로 잘 변환해 주지만, 가끔 실패해서 반대의 결과를 초래한다.
- 전통적인 데이터베이스 설계에 깊게 뿌리를 둔 언어가 현대의 환경에 맞을 수 있을까?
현대 개발자의 요구사항 충족
- 소프트웨어에 대한 수요와 소프트웨어 개발 속도, 개발자 수가 증가하면서 나타난
SQL의 문제: 이론적인 관점에서 SQL이 어떻게 작동하는지를 심층적으로 이해하는
개발자가 적다.
- 데이터베이스 아키텍처는 기능적 요구사항을 충족해야 할 뿐만 아니라 성능, 확장성, 보안 목표에도 부합해야 한다.
-> 2가지 모두 갖추지 않으면 성공적인 소프트웨어 개발을 위한 견고한 기반도 없다.
- 데이터베이스 선택에서 실수하는 경우에도 SQL 덕분에 더 나은 옵션으로 더 쉽게 전환할 수 있다.