"새로운 SQL이 뜬다" SQL과 NoSQL의 장점 결합한 NewSQL
2018.06.21 17:02
"새로운 SQL이 뜬다" SQL과 NoSQL의 장점 결합한 NewSQL
CIO
데이터베이스 부문의 한 개척자가 많은 NoSQL 지지자들 앞에서 '새로 각광받고 있는 NoSQL 데이터베이스를 선호해 기존의 관계형 데이터베이스를 피하고 있는 사용자들은 기존 데이터베이스의 장점을 내던지는 위험에 처하게 될 것'이라고 경고해 관심을 끌었다.
분산형 데이터베이스 소프트웨어 회사인 볼트DB의 CTO 마이클 스톤브레이커는 "대신 일부 기술적인 조정을 통해 SQL(Structured Query Language)을 더 새로운 시스템으로 바꿔 NoSQL 시스템을 완전히 탄력적으로 이용할 수 있다"고 주장했다.
이번 주 캘리포니아 주 산호세에서 열린 NoSQL Now 컨퍼런스에서 이런 주장을 한 스톤브레이커는 이 새로운 방식에 NewSQL이라는 이름을 붙이고 있다.
스톤브레이커의 회사가 이 NewSQL에 기반을 둔 데이터베이스 소프트웨어를 공급하고 있기는 하다. 그러나 이런 새 아키텍처에 대한 그의 주장은 기존 업체들에 비해 더 큰 무게를 갖는다. 스톤브레이커는 잉그레스(Ingres) 및 프로스트그레스(Prostgres) 데이터베이스의 수석 설계자였으며, 다른 많은 회사에서도 데이터베이스 발전에 공헌했다. 또 지난 2월 HP가 인수한 컬럼 지향형 데이터베이스 업체인 버티카(Vertica)를 공동 창업한 경력도 있다.
30년된 관계형 DB의 한계
SQL 기반의 관계형 데이터베이스 시스템은 NoSQL 지지자들이 주장하듯 사실상 종말을 앞두고 있다. 그러나 이는 SQL이 아닌 데이터베이스 업체들의 실수 때문이다. 스톤브레이커는 기존의 관계형 시스템을 '코끼리'라고 부르면서, "코끼리는 SQL을 지원하기 때문에 결코 느리지 않다"고 말했다.
대부분의 상용 관계형 데이터베이스 소프트웨어가 시장에 나온 지는 30년이 넘었다. 이는 현대의 자동화되고, 많은 데이터를 처리해야 하는 환경에 맞춰 설계되지 않았다. 종종 확장이라는 명분 아래 수십 가지 새 기능이 추가됐지만, 의문이 많았다.
스톤브레이커는 "오라클은 확장이 되지 않는다"며, "성능이 필요 없다면 문제가 되지 않는다. 하지만 성능이 필요하다면, 기존의 SQL 기반 시스템은 도움이 되지 않는다"고 강조했다.
스톤브레이커에 따르면 데이터베이스 시스템이 느려지는 데는 여러 이유가 있을 수 있다. 이런 시스템은 버퍼 풀(buffer pool)과 복구 목적에서 로그를 유지해야 한다. 또 래칭(latching)과 로킹(locking) 데이터 필드를 관리한다. 따라서 다른 작업의 덮어쓰기가 되지 않는다. 볼트DB의 실험 결과에 따르면, 이런 작업이 시스템 자원의 96%를 잡아먹고 있다.
따라서 기존 데이터베이스 시스템의 제약에 답을 제공해주는 몽고DB(MongoDB)와 카산드라(Cassandra) 같은 NoSQL 데이터베이스가 인기를 끌고 있는 중이라는 것은 많은 사람들이 알고 있는 사실이다.
제한적인 확장성이 가장 큰 단점
NoSQL NOW 컨퍼런스의 또 다른 세션에서는, 컨설턴트인 댄 맥크리어리가 개발자들로 하여금 NoSQL 데이터베이스를 개발하도록 박차를 가하고 있는 보통의 관계형 데이터베이스가 갖는 일부 단점에 대해 설명했다.
맥크리어리는 관계형 데이터베이스의 탄력성이 떨어진다는 점을 지적했다. 기본 아키텍처가 펀치 카드 시절에 설계됐다. 따라서 데이터 모델링 환경이 가혹하다는 게 요지이다. 기업들은 또 다른 데이터 칼럼을 추가해야 하는 경우 스키마(Schema)를 바꿔야 하는데, 아주 복잡한 작업이 될 수 있다. 개체 관계 모델링(Entity Relationship Modeling)이라고 불리는 관계형 테이블을 생성하는 모델링 프로세스 또한 데이터가 실제 존재하는 방식을 정확히 반영하지 못한다. "테이블에 잘 들어맞지 않는 사항들이 너무 많다. 한마디로 제약이 많다는 이야기다"라고 강조했다.
또 단일 서버 외곽으로 확장이 쉽지 않은 것이 SQL 데이터베이스의 또 다른 문제라고 지적했다. 데이터가 단일 서버의 용량을 초과해 성장하게 되면, 여러 서버로 조각을 내거나 분리해야 한다. 역시 복잡한 프로세스이다. 또 여러 테이블의 데이터를 융합하는 아우터 조인(Outer Joins) 같이 여러 서버를 대상으로 한 작업 수행에 문제가 많을 수 있다.
수학적인 정확성 떨어지는 NoSQL
NoSQL은 확장성과 탄력성이 뛰어나다. 그러나 스톤브레이커는 NoSQL 또한 나름의 제약이 있다고 주장했다. SQL 대신 NoSQL 데이터베이스 시스템만을 사용하면 수학적인 확신이 높은 아주 구조적인 쿼리를 수행할 수 없게 된다. SQL은 관계형 대수와 연산을 토대로 구축되었기 때문에 수학적인 확신을 보장한다. 잘 구조화된 쿼리는 쿼리 자체가 아주 복잡하더라도 포착해야 하는 모든 데이터를 포착할 수 있다.
또 다른 문제도 있다. NoSQL은 ACID(atomicity, consistency, isolation, durability) 계층에서의 처리를 제공하지 못한다. 시스템이 방해를 받더라도 데이터베이스 기반의 온라인 처리를 정확히 하기 위해 널리 사용되고 있는 매트릭스 세트이다. 그는 "애플리케이션 계층에서 쓰기가 가능하다. 그러나 이런 실행 목적으로 한 코드 작성은 안 하느니만 못하다"고 설명했다. 최근들어 NoSQL 데이터베이스는 저마다의 쿼리 언어를 사용하고 있다. 그리고 이는 애플리케이션 인터페이스를 표준화하기 어렵도록 만든다.
스톤브레이커는 이와는 대조적으로 NewSQL은 SQL 시스템 수준의 수학적 품질을 보증하면서, 동시에 NoSQL 시스템의 확장성을 제공한다고 주장했다.
다만 NewSQL에는 많은 새로운 아키텍처 설계가 필요하다. NewSQL은 주 메모리에서만 데이터베이스를 실행해 자원을 많이 소모하는 버퍼 풀을 제거한다. 또 서버에서 단 한 개의 쓰레드로만 처리해 래칭이 필요가 없다. (다만 다른 로킹 실행을 위해서는 추가적인 작업이 일부 필요하다). 더불어 이중화와 시스템 대체 작동을 위해 추가 서버를 사용하기 때문에 비용이 많이 드는 복구 실행이 필요 없다.
스톤브레이커의 주장에 따라면 NewSQL 방식을 사용하는 볼트DB의 시스템은 기존의 관계형 데이터베이스 시스템에 비해 작업을 45배 빠르게 실행할 수 있다. 또 39개 서버로 확장이 가능하며, 300개의 CPU 코어 전반에 걸쳐 초당 1600만 트랜잭션을 처리할 수 있다. 또 전형적인 하둡(Hadoop)에 비해 서버가 많이 필요없다. 그러면서도 하둡의 경우 실행을 위해 1000노드가 필요한 동일 작업을 20노드에 처리할 수 있다.
통합된 쿼리 언어에 대한 필요성 제기
이번 행사의 참가자 대부분은 NoSQL 사용자와 개발자들이었다. 그러나 많은 사람들이 스톤브레이커의 SQL 친화 방식에 일부 장점이 있다고 생각하는 듯 보였다. 다만 개인적인 주장들에는 동의를 하지 않았다.
온라인 광고 회사인 더블클릭(DoubleClick)의 설립자이자 몽고DB를 만든 사람 중 한 명인 드와이트 매리먼은 SQL 자체의 문제 때문에 확장성과 성능이 떨어지는 건 아니라는 스톤브레이커의 주장에 의견을 같이 했다. 그러나 SQL이 누구나가 자신들의 데이터 쿼리를 위해 사용하기 원하는 언어가 되지는 않을 것이라고 주장했다. 매리먼은 "나만 하더라도 애플리케이션을 작성한 원본 언어와 가까운 무언가를 사용하기 원할 것"이라고 덧붙였다. SQL 기반으로 저장된 절차는 많은 프로그래머들이 작업하는데 특히나 어려움을 준다.
맥크리어리는 스톤브레이커가 이런 문제를 해결해야 하는 상황에 직면할 것이라고 말했다. 프로세서는 더 빨라지지 않을지도 모른다. 그러나 칩 코어는 계속 확장될 전망이다. 따라서 여러 프로세서로의 확장이라는 문제를 해소할 필요가 있다고 강조했다.
맥크리어리는 또 NoSQL 사용자들이 통합된 쿼리 언어를 사용하고 있지 않아 전반적인 NoSQL 도입이 늦춰질 것이라는 스톤브레이커의 관점에 의견을 같이했다. 그러나 새 데이터베이스의 통합 쿼리 툴로는 SQL 이외의 언어를 쓸 것을 제안했다. XLM 문서에 쓰는 쿼리 언어인 XQuery 같은 것들이다. editor@itworld.co.kr
본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.

