Offcanvas

개발자 / 빅데이터 | 애널리틱스 / 애플리케이션

'SQL을 넘어서...' 데이터 쿼리 처리용 새 언어 8종

2022.03.30 Peter Wayner  |  InfoWorld
지난 30년 동안 데이터베이스와 SQL은 동의어와 비슷했다. 데이터베이스에서 정보를 검색하고 싶은 사람은 SQL을 배워야 했다. 데이터베이스를 관리하거나 데이터베이스 관리자로써 직업을 얻고 싶은 사람은 그 뉘앙스를 이해해야 했다.

SQL 자체는 과거의 향기를 물씬 풍긴다. 메인프레임 사용자와 같은 방식으로 생각하고 코딩한다고 표현할 수 있다. 다른 분야는 소문자를 도입했지만 SQL 사용자는 SELECT나 WHERE 같은 단어를 계속 입력한다. 

실제로 데이터 검색에 있어서 SQL의 입지가 낮아지고 있다. 새로운 데이터베이스가 등장하고 일부는 완전히 새로운 언어를 사용한다. SQL의 인기가 적은 것이 아니다. SQL 작성 총량은 그 어느 때보다 많다. 단지 데이터 저장 세계가 더 빠르게 폭발적으로 성장하고 있을 뿐이다.

이 글에서는 데이터 검색에 대한 8가지 새로운 접근방식을 소개한다. 일부는 겉모습만 바뀐 혁신이다. 몇몇 개발자들은 SQL의 문법을 업데이트하여 좀 더 깔끔하고 읽기 쉽도록 했기 때문에 브라우저를 위한 코드 작성과 데이터 검색 사이의 차이가 줄어든 것이다. 이런 도구의 개발자들은 기본적인 구조가 SQL과 똑같다고 강조한다. SQL을 이해하는 이라면 배우기 쉽다는 의미다. 

그러나 다른 몇몇 도구는 완전히 다른 사고방식을 요구한다. 특히 데이터를 그래프 또는 시계열로 저장하는 데이터베이스는 검색 대상을 지정하는 방식에 대한 새로운 패러다임을 제시한다. 이 모든 옵션이 SQL보다 반드시 나은 것은 아니다. 하지만 모두 정보의 바다에 대해 다르게 생각할 기회를 제공한다.
 
Image Credit : Getty Images Bank
 
  • 그래프QL(GraphQL)
  • PRQL
  • 웹어셈블리(WebAssembly)
  • GQL
  • 그렘린(Gremlin)
  • N1QL
  • 말로이(Malloy)
  • 베이시스(Basis)

그래프QL(GraphQL)
그래프QL이라는 이름은 다소 헷갈린다. 그래프 데이터베이스로의 모든 가능성을 활용하도록 고안된 언어가 아니기 때문이다. JSON과 유사한 집합 형식으로 저장된 데이터를 쿼리 처리하기 위한 우아한 약칭에 가깝다. 쿼리는 결과에 대한 짧은 설명에 불과하다. 백엔드가 값에 제한이 있을 수 있는 이 필드 목록을 살펴보며 일치하는 결과를 찾기 위해 시도한다. SQL은 데이터베이스가 요청을 완료해야 하는 방법을 지정하며, 그래프QL 사용자는 단순히 필드 목록을 제공한다. 일부는 이것을 ‘예시 쿼리’라고 부른다.

언어는 일부 JSON 데이터베이스와 자연스럽게 겹친다. 그래프QL은 도표 스키마를 가진 관계형 데이터베이스 검색 작업에서 인기가 높아지고 있다. 스마트 백엔드는 집합 요청을 스키마에 일치하는 JOIN의 패턴으로 전환할 수 있다.

초기 이 언어는 페이스북에서 내부 프로젝트로 시작되었지만 독립적인 오픈소스 프로젝트로 공개됐다. 이후 다른 곳에서 그래프QL 백엔드를 개발하기 시작했다. 현재 각종 주요 언어와 여러 현대적인 실험적 언어로 작성된 버전들이 있다.

PRQL
소프트웨어를 파이프라인 또는 어셈블리 언어로 생각한다면 PRQL(Pipelined Relational Query Language, ‘프리퀄’이라 발음한다)이 마음에 들 수 있겠다. 이 언어의 쿼리는 작은 명령들의 체인으로 구조화되어 있다. 이 명령들이 어우러져 원하는 데이터를 가진 결과를 생성한다.

여러 현대적인 프로그래밍 언어와 마찬가지로 쿼리의 근간 모델은 기능적 접근방식을 취한다. 변수 등의 단순한 기능은 반복을 줄이고 플로(Flow)를 간소화한다. 한 줄의 결과가 긴 체인의 다음 줄로 전달된다. 한 단계를 없애고 싶다면 해당 줄을 코멘트 아웃 처리해도 나머지 파이프라인은 여전히 작동한다.

PRQL의 코드는 PRQL을 SQL로 변환하는 트랜스파일러(Transpiler)로써 러스트(Rust)로 작성된다. 기본적인 구조는 확장 가능하기 때문에 사용 사례에 따라 추가적인 추상화를 추가할 수 있다. 이런 실험 편의성 덕분에 빠르게 발전하고 있다.

웹어셈블리(WebAssembly)
웹어셈블리(WebAssembly ; Wasm)를 웹 브라우저 안에서 구동하는 빠른 애플리케이션을 개발하는 도구라고 생각하는 이들이 많다. 그러나 레드판다(Redpanda)라는 카프카(Kafka)를 대체하는 데이터 스트리밍 도구가 기획될 때, 개발진는 데이터를 제공할 뿐 아니라 그 과정에서 이를 전환하는 메커니즘을 추가하고자 했다. 웹어셈블리가 그들의 선택이었다.

레드판다는 불변의 정리된 데이터 스트림을 구성함으로써 원장으로써 기능한다. 이벤트가 수반되며 프로그래머는 과거 아무 시점의 스트림을 활용할 수 있다. 대부분은 새롭게 생성된 이벤트로 시작하지만 일부는 과거에 시작하여 역사적인 집합을 생성한다.

물론, 웹어셈블리는 훨씬 능력이 뛰어나고 로우 레벨이다. 일부 데이터베이스에 포함되어 있는 절차와 비교하면 특히 그렇다. 모든 개발자가 혁신적인 바이트 수준의 코드를 작성하고 싶어하는 것은 아니다. 그러나 이 옵션을 이용하면 SQL에서 가능한 수준을 넘어서는 정교한 전환을 위한 데이터 스트림을 가능해진다.

GQL
GQL(Graph Query Language)은 사이퍼(Cypher), PGQL, GSQL 등의 유사한 선언형 언어를 합병하기 위해 제안된 표준이다. 개발자는 일련의 노드를 위한 특정 모델을 지정하여 쿼리를 생성하고, 데이터베이스는 일치하는 결과를 찾는다. GQL은 노드 쌍이 여러 연결을 공유할 수 있는 더욱 복잡한 속성 그래프와 호환된다.

표준이 활발하게 개발되고 있다. 현재, 최고의 구현물은 연구 도구에 가깝다.

그렘린(Gremlin)
그래프 검색 분야의 초기 언어 중 하나인 그렘린은 노드들 사이의 연결을 검색하기 위한 일련의 단계를 요청한다. 일각에서는 ‘경로 기반’ 또는 ‘그래프 순회’ 언어라고 부른다. 각 쿼리는 단계에 기초하여 구축되며, 각 단계에는 기존 노드 맵핑, 목록 필터링, 결과 표 작성 등이 수반될 수 있다.

이 언어는 시작점에 불과한 경우가 많다. 예를 들어, 일부는 쿼리에 파이썬(Python) 코드가 포함될 수 있도록 파이썬 해석기를 내장하는 방식으로 그렘린을 확장 이용한다. 자바(Java) 같은 표준 프로그래밍 언어에 그렘린을 내장하여 프로그래머가 해당 언어 안에서 그렘린을 활용할 수 있도록 하기도 한다.

그렘린은 처음에 아파치의 팅커팝(TinkerPop) 프로젝트를 위해 개발됐다. 이후 아마존(Amazon)의 넵튠 같은 주요 트랜잭션 그래프 데이터베이스와 아파치 스파크 또는 하둡(Hadoop)을 사용하는 그래프 처리 프로세스가 이를 도입했다.

N1QL
카우치베이스(Couchbase)는 몇 년에 걸쳐 문서를 쿼리 처리하는 최고의 방법을 모색했다. 처음에는 쿼리를 자바스크립트 함수로 작성한 후 실행을 위해 데이터베이스로 전달했다. 훌륭한 일반적인 솔루션이었지만 결과가 너무 느리게 생성되는 경우도 있었다.

N1QL(‘니켈’이라고 발음한다)은 SQL 사용자가 카우치베이스에 저장되어 있을 수 있는 JSON 객체를 더 쉽게 처리할 수 있도록 고안됐다. 기본적인 쿼리는 SQL처럼 SELECT, FROM, WHERE 등의 키워드로 지정된 여러 개의 섹션이 있다. 데이터가 나오는 데이터 구조에 경로를 지정하는 자세한 방법은 JSON 객체의 집합 세계에 맞춰 조정된다.

N1QL은 실험을 장려하기 위해 쿼리를 테스트하고 개선하기 위한 시각적 인터페이스가 있는 쿼리 처리 워크벤치를 제공한다. 카우치베이스는 구조화된 데이터 대신에 텍스트 단어를 추구하는 쿼리를 위해 독립적으로 실행되는 포괄적인 완전 텍스트 검색 옵션을 제공한다.

말로이(Malloy)
말로이의 개발자에 따르면, SQL의 문제점은 문법 세부사항에 있다. 이 언어는 장황하고 숨겨진 함정이 많기 때문에 단순한 쿼리 표현에도 시간이 소요된다. 그래서 그들은 SQL로 컴파일링 할 수 있는 자연스러운 기본값과 더욱 단순한 문법을 가진 현대적인 프로그래밍 언어를 개발했다.

그 결과, 더욱 강력한 그래프QL을 닮은 문법이 탄생했다. 쿼리는 제한, 일치, 기본값 등의 결과에 대한 모델 또는 비전에 가깝다. 말로이는 일부 최적화를 백그라운드로 처리한다. 예를 들어, 더 스마트한 JOIN을 자동으로 생성하여 깊은 골과 팬 성능 함정을 방지할 수 있다. 

또 하위 쿼리를 통합하여 시간을 절약할 수 있다. 지표도 필요에 따라 추가된다. 그 결과, 쿼리 작성은 최신 코드를 작성하는 것처럼 느껴지며, 구두법은 구조를 간단명료하게 유지하는 기능을 한다.

말로이의 오픈소스 핵심 영역은 Node.js 코드를 포함시키기 위해 타이프스크립트(TypeScript)를 기반으로 개발되었다. VS 코드 플러그인은 개발을 간소화한다.

베이시스(Basis)
대부분의 쿼리 언어는 특정 데이터베이스와 직접 연관되어 있다. 반면 베이시스는 다양한 소스로부터 가져와 SQL 및 파이썬을 사용하여 필터링할 수 있는 파이프라인을 개발하려는 시도라고 할 수 있다. 파이프라인 끝에는 코드를 실행하는 것부터 AI 알고리즘과 차트 및 대시보드까지 다양한 표준 옵션에 데이터를 제공하는 익스포터(Exporter)가 있다.

개발자들은 이미 자체 코드에 이런 파이프라인을 개발하고 있으며, 많은 프로젝트가 유사한 구조에 의지하고 있다. 베이시스는 더욱 정교하게 사용자 정의할 수 있는 사전 개발 옵션을 제공한다. 입력값은 표준 데이터베이스 쿼리부터 API 탭과 사용자 정의 파이썬 코드까지 다양하다. 트랜스포머(Transformer)는 SQL의 기본적인 WHERE 항으로 제한되지 않는다. 왜냐하면 데이터가 파이프라인을 따라 흐를 때 필터 이상의 기능을 하는 파이썬 코드를 작성할 수 있기 때문이다.

베이시스는 1개 이상의 소스로부터 가져오고 1개 이상의 언어로 필터링하며 데이터를 1가지 이상의 형태로 제공하는 쿼리 처리 프로세스를 가능하게 하는 새로운 데이터 파이프라인 도구다. 이를 통해 거의 모든 소스로부터 데이터를 가져와 거의 모든 소비자에게 제공할 수 있다.

* Peter Wayner는 오픈소스 소프트웨어, 자율주행 차량, 개인정보 보호 강화, 디지털 트랜잭션, 스테가노그래피(steganography) 등 다양한 주제에 관한 16권 이상의 책을 저술했다. ciokr@idg.co.kr
CIO Korea 뉴스레터 및 IT 트랜드 보고서 무료 구독하기
추천 테크라이브러리

회사명:한국IDG 제호: CIO Korea 주소 : 서울시 중구 세종대로 23, 4층 우)04512
등록번호 : 서울 아01641 등록발행일자 : 2011년 05월 27일

발행인 : 박형미 편집인 : 천신응 청소년보호책임자 : 한정규
사업자 등록번호 : 214-87-22467 Tel : 02-558-6950

Copyright © 2024 International Data Group. All rights reserved.