카우치베이스 서버

SQL++ 사용자 정의 함수(UDF)를 사용한 트래버스 계층 구조

사용자 정의 함수(UDF)는 대부분의 RDBMS에 존재하는 기능입니다. Oracle PL/SQL(SQL용 프로시저럴 언어), SQL Server T-SQL(트랜잭트-SQL), PL/pgSQL(프로시저럴 언어/포스트그레SQL) 또는 기타 변형 언어에 관계없이 이러한 모든 언어는 다음과 같은 일반적인 특성을 제공합니다. 블록 구조, 조건 제어, 반복 루프 및 오류 처리로 구성되어 있습니다. 이러한 빌딩 블록을 사용하면 복잡한 작업을 개발할 수 있으며, 이를 분리하여 유지 관리 및 애플리케이션 무결성을 개선할 수 있습니다.

Couchbase의 경우 언어 선택 기준은 다음과 같습니다. SQL++ 사용자 정의 함수는 현재 RDBMS 구현에 존재하는 모든 기능을 지원하거나 Couchbase Query 서비스와 동일한 수준으로 지원할 수 있어야 하며, 오늘날 개발자의 선호도도 반영해야 한다는 점이 매우 명확합니다. Stack Overflow 개발자 설문조사에 따르면, 2020년 현재 전 세계에서 가장 일반적으로 사용되는 프로그래밍 언어는 다음과 같습니다. 자바스크립트.

SQL++ UDF/JS

Couchbase는 기본적으로 데이터를 JSON 형식으로 저장하는 문서 데이터베이스입니다(JavaS크립트 Object Notation). 쿼리 언어인 SQL++ 는 JSON용 SQL. 따라서 자바스크립트 언어는 JSON 데이터에 액세스하고 조작하는 가장 자연스러운 방법입니다.

이에 대한 자세한 내용은 카우치베이스 문서를 참조하세요. 카우치베이스에서 자바스크립트 전체 구현.

트리를 횡단하는 자바스크립트 UDF

자바스크립트는 강력하고 유연하며 비교적 쉽게 사용할 수 있습니다. 그 다재다능함을 보여드리기 위해 이 글에서는 조직 구조와 같은 트리 구조를 가로지르는 자바스크립트 UDF를 만들었습니다.

UDF: 트래버스 트리

UDF는 두 가지를 사용하여 컬렉션에서 재귀 검색을 수행합니다. 연결 필드(도착 및 출발)를 재귀에 사용할 수 있습니다.

매개변수는 다음 표에 나와 있습니다:

# 이름 설명
1 kSpace 쿼리의 키 공간입니다. 컬렉션 또는 쿼리일 수 있습니다.
2 startWith 이 값으로 connectToFld에 대한 검색을 시작합니다. 비어 있으면 모든 connectTo 값에 대해 검색이 수행됩니다.
3 연결 대상 컬렉션에서 connectTo 필드가 사용될 필드의 이름입니다.
4 connectFrom 컬렉션에서 connectFrom 필드가 사용될 필드의 이름입니다.
5 여기 보고서 계층 배열의 필드 이름입니다.
6 logKSpace UDF에 대한 선택적 로깅이 기록되는 키 공간입니다. 이 매개변수는 실행 함수와 함께 실행할 때만 실행할 수 있습니다.

계층 구조의 예

아래와 같은 조직 계층 구조를 고려해 보겠습니다.

traverse hierarchical data example

그리고 emp 컬렉션에는 다음과 같은 문서가 있습니다:

쿼리는 다음과 같은 결과를 생성합니다:

생성하기 트래버스 트리 사용자 정의 기능

Couchbase SQL++에서는 여러 가지 방법으로 UDF를 정의할 수 있습니다. 

스칼라 함수로서의 UDF

 

하위 쿼리가 있는 인라인 함수로서

 

외부 함수로 정의

그리고 트래버스 트리 UDF는 외부 함수 메커니즘을 사용합니다. 하지만 이 경우 함수에 대한 외부 코드 라이브러리를 제공합니다. 다음에 대한 자세한 내용은 Couchbase 설명서를 참조하세요. 외부 기능.

JavaScript 함수 라이브러리를 만드는 방법은 다음과 같습니다:

1- 함수 라이브러리 생성 - 이 예제에서는 쿼리 워크벤치를 사용하여 JavaScript 라이브러리를 생성합니다. 

Managing JavaScript function libraries

2 - 자바스크립트 코드 추가 및 편집

Editing Couchbase JavaScript code

이 [링크] 를 클릭하면 전체 traverseTree 자바스크립트 라이브러리 코드를 확인할 수 있습니다.

3 - SQL++ 사용자 정의 함수 만들기 

쿼리 워크벤치를 사용하여 UDF를 만들 수도 있습니다.

Add UDF function in SQL++

중요 참고 사항

Couchbase 7.0에는 JavaScript용 SQL++ UDF가 추가되었습니다. Couchbase 7.1에는 JavaScript 코드 내에서 SQL++ DML을 실행할 수 있는 기능이 추가되었습니다. 또한 UDF 관리를 위한 몇 가지 쿼리 워크벤치 UI 개선 사항도 있습니다.

면책 조항 - 이 문서에 제공된 자바스크립트 코드는 카우케이스 제품의 일부가 아니라는 점에 유의하시기 바랍니다. 이 코드는 JavaScript를 사용하는 SQL++ UDF의 기능을 설명하기 위한 목적으로만 제공됩니다. 사용자는 이 코드의 정확성을 확인하고 필요에 맞게 수정할 것을 권장합니다.

학습 계속하기

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

작성자

게시자 Binh Le

Binh Le는 Couchbase 쿼리 서비스의 수석 제품 관리자입니다. Couchbase에 입사하기 전에는 Oracle에서 근무하며 Sales Cloud Analytics 및 CRM OnDemand의 제품 관리 팀을 이끌었습니다. 영국 브라이튼 대학교에서 컴퓨터 공학 학사 학위를 받았습니다.

댓글 남기기

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

구축 시작

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

카펠라 무료 사용

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

연락하기

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