카우치베이스 서버

N1QL 대 TSQL - 카우치베이스 서버와 SQL 서버를 사용한 집계

SQL은 오랫동안 사용되어 왔습니다. 구조화된 데이터를 처리하는 매우 직관적이고 효율적인 방법이며 수년 동안 데이터베이스를 위해 선택되어 왔습니다. 그러나 빅 데이터의 세계에서 데이터는 다음과 같은 특징을 가지고 있습니다. 속도, 다양성 그리고 볼륨. SQL은 2 "v"는 최적화에 문제가 없다: "속도" 및 "볼륨". 실제로 많은 새로운 SQL(N1QL, Spark, U-SQL, Impala, Drill 등)이 정확히 그렇게 하고 있습니다. 하지만 "다양성'는 다른 차원의 문제입니다! 빅 데이터는 예측할 수 없고 끊임없이 진화하며 들쭉날쭉한 체계, 희박한 값, 깊게 중첩된 구조 등 새로운 세계에서 복잡합니다. 이를 위해서는 SQL을 확장해야 합니다!

이러한 문제를 정확히 해결하기 위해 Couchbase Server 4에 N1QL을 구축했다는 소식을 전하게 되어 매우 기쁩니다! N1QL은 복잡한 데이터에 대한 사실상의 직렬화 표준인 JSON의 복잡한 구조를 쉽게 통과할 수 있습니다. N1QL을 사용하면 NULL뿐만 아니라 다음과 같은 속성으로 작업할 수 있습니다. 누락 을 다양한 형태의 JSON으로 처리할 수 있습니다. 또는 다음과 같은 연산자를 사용할 수 있습니다. 모든/모든 를 사용하여 JSON 문서에 포함된 배열을 쿼리할 수 있습니다. 또는 다음과 같은 명령을 사용할 수 있습니다. 언네스트 & 네스트 중첩 배열을 평평하게 하거나 평평하게 해제할 수 있습니다. 이러한 강력한 확장 기능이 너무 많아서 여기서는 언급하지 않겠습니다. 대신 원래 게시되었던 숨겨진 보석 하나를 보여드리겠습니다. 여기 에 의해 작성되었습니다. 이 보석은 N1QL을 사용하는 경우 집계에 매우 유용합니다. SQL Server와 같은 관계형 데이터베이스와 비교합니다.

N1QL의 가장 큰 장점 중 하나는 배열 유형을 이해하는 능력입니다. MAX()와 같은 집계 함수는 혁신적인 것은 아니지만 중첩과 배열을 추가하면 MAX()처럼 간단한 함수도 매우 강력해질 수 있습니다. 본격적으로 시작하기 전에 한 가지 주의할 점은 제가 과거 Microsoft에서 TSQL에 기여한 바가 있기 때문에 TSQL과 SQL Server에 대해 언급할 것입니다. 그러나 이것은 Oracle, Postgres, Mysql, Informix 또는 DB2 등에도 동일하게 적용됩니다: 최대 가격이 있는 제품의 속성을 찾으려고 한다고 상상해 보세요. SQL Server에서는 TSQL을 사용하여 작성하기 매우 간단한 쿼리입니다;

좋습니다. 결과는 다음과 같습니다. 가장 가격이 높은 제품은 ID가 3인 "c"라는 제품입니다.

실행 계획은 다음과 같습니다. 기본적으로 실행 계획은 최대 가격 값을 검색합니다. 값을 찾으면 중첩 루프 조인을 사용하여 테이블에서 제품ID 및 이름과 같은 제품의 다른 속성을 검색합니다.

하지만 N1QL은 여기서 큰 장점이 있습니다. MAX()를 배열로 처리할 수 있기 때문에 추가 스캔 없이 문서의 모든 속성을 반환할 수 있습니다.

또는 다음 쿼리를 사용하여 전체 문서를 간단히 반환할 수 있습니다;

N1QL 쿼리의 실행 계획을 살펴보겠습니다. 스포일러를 드리자면, MAX를 수행할 수 있는 단일 FETCH 연산이 표시되고 두 번째 FETCH 없이 투영이 수행됩니다.

이것은 꽤 멋진 트릭이고 성능 향상에 큰 도움이 되지만, N1QL의 기능은 이제 막 표면을 드러낸 것일 뿐입니다. N1QL을 통해 발견할 수 있는 것이 훨씬 더 많습니다. 여기에서 Couchbase Server 및 N1QL을 시작할 수 있습니다. 시작하기 가이드.

———————————————————

SQL Server 2016 및 Couchbase 4에서 이 기능을 직접 사용해 보고 싶으시다면 다음 스크립트를 통해 직접 확인해 보세요;

SQL Server 스크립트

참고: "test"라는 데이터베이스에서 실행합니다.

다음은 Couchbase 서버 스크립트입니다.

참고: "test"라는 버킷을 만듭니다.

insert into test(key,value) values("1",{productID:1, price:10, name:'a'});

이 문서 공유하기
받은 편지함에서 카우치베이스 블로그 업데이트 받기
이 필드는 필수 입력 사항입니다.

작성자

게시자 Cihan Biyikoglu, 제품 관리 이사, Couchbase

Cihan Biyikoglu는 Couchbase의 제품 관리 디렉터로, Couchbase Server 제품을 담당하고 있습니다. Cihan은 빅 데이터 애호가로서 20년 이상의 경험을 Redis Labs의 제품 팀에 제공하고 있습니다. Cihan은 C/C++ 개발자로 경력을 시작했습니다.

댓글 남기기

카우치베이스 카펠라를 시작할 준비가 되셨나요?

구축 시작

개발자 포털에서 NoSQL을 살펴보고, 리소스를 찾아보고, 튜토리얼을 시작하세요.

카펠라 무료 사용

클릭 몇 번으로 Couchbase를 직접 체험해 보세요. Capella DBaaS는 가장 쉽고 빠르게 시작할 수 있는 방법입니다.

연락하기

카우치베이스 제품에 대해 자세히 알고 싶으신가요? 저희가 도와드리겠습니다.