SQL++/N1QL 쿼리

문서 데이터에 대한 그래프 쿼리로 더욱 스마트한 검색

수십 년 동안 개발자들은 문서 데이터베이스의 유연성과 확장성 중 하나를 선택하거나 그래프 데이터베이스의 풍부한 관계 모델링을 선택해야 하는 답답한 트레이드오프에 직면해 왔습니다. 사기 탐지 시스템, 추천 엔진, 복잡한 공급망 추적기 등 이 두 가지가 모두 필요한 애플리케이션을 구축하려면 데이터 동기화, 지연 시간, 운영 복잡성 등 피할 수 없는 골칫거리를 처리하면서 두 개의 개별 시스템을 관리해야 하는 경우가 많았죠.

하지만 에이전트 애플리케이션은 더 많은 것을 요구합니다. 복잡한 관계를 가로질러야 합니다. 그리고 풍부한 계층적 데이터를 빠르게 관리할 수 있습니다.

우리는 그래프 모델 를 사용하여 이러한 이분법을 없앴습니다. 문서 저장소 위에 그래프 모델을 직접 계층화함으로써 기존 JSON 데이터를 이동, 복제 또는 별도의 데이터베이스 관리 없이 그래프로 쿼리할 수 있습니다. 이 그래프 모델은 SQL++에 그래프 패턴 매칭 및 관계 탐색을 위한 절을 모두 단일 고성능 플랫폼 내에서 사용할 수 있습니다.

이 게시물에서는 이 새로운 모델의 개념적 아키텍처를 소개하고, 이미 알고 있는 SQL++ 언어를 활용하는 방법을 살펴보고, 전례 없는 단순성과 확장성을 갖춘 관계 중심 애플리케이션을 구축하는 방법을 보여드립니다.

그래프 모델은 1) 기존 데이터 세트에 대한 가상 속성 그래프를 정의하는 “CREATE GRAPH” 문과 2) SQL++의 기존 FromClause에 “MATCH” 용어를 도입함으로써 SQL++를 확장합니다. ’MATCH“를 사용하면 쿼리 작성자가 Cypher(Neo4j) 및 SQL/PGQ 2023과 같은 인기 있는 그래프 쿼리 언어에서 볼 수 있는 것과 동일한 구문을 사용하여 탐색 쿼리 패턴을 지정할 수 있습니다. 다른 경쟁사의 ”볼트로 고정된 사이드카“ 그래프 확장과 Couchbase 그래프 모델을 구분 짓는 것은 문서, 정점, 에지 간의 시너지 상호작용입니다. 예를 들어, Couchbase 그래프 모델 쿼리는 쿼리 패턴 정점과 Couchbase 컬렉션/서브쿼리를 명시적으로 조인할 수 있습니다. 따라서 Couchbase 사용자는 조직의 데이터 모델을 보다 정확하게 모델링할 수 있는 강력한 개념(예: 하이퍼그래프, 하이퍼노드 그래프 등)을 표현할 수 있습니다. 

그 이면에서 Couchbase는 그래프 쿼리 패턴을 일련의 JOIN과 재귀적 CTE로 다시 작성하여 “CREATE GRAPH” 정의의 버텍스 및 에지 쿼리에 대해 작동합니다. 재작성된 쿼리는 기존 SQL++ 쿼리가 사용하는 것과 동일한 서비스(쿼리 서비스, 인덱스 서비스, 검색 서비스 등)를 사용하여 최적화되고 분할 병렬로 실행됩니다. 이 그래프의 가상적 특성으로 인해 사용자는 그래프가 작성될 때까지 기다릴 필요가 없으며 인사이트를 더 빨리 얻을 수 있습니다. MATCH를 기존 SQL++ 절과 결합함으로써, Couchbase 사용자는 JSON을 “유지”하면서 그래프화할 수 있습니다.

다음은 Couchbase의 그래프 모델 지원으로 활성화된 사용 사례입니다:

  1. 360도 환자 관리: 의료 데이터는 지저분하기로 악명이 높습니다. 환자의 기록은 이름, 주민등록번호, 주소와 같은 “문서'이지만, 병력은 방문한 의사, 처방전, 검사 결과, 보험 청구, 가족력 등 복잡한 관계의 웹으로 이루어져 있습니다. 이제 의사는 ”스미스 박사로부터 메트포르민을 처방받았지만 6개월 동안 클리닉을 방문하지 않은 제2형 당뇨병 진단을 받은 모든 환자를 그래프 패턴으로 보여주세요.“라고 요청할 수 있습니다.
  2. 사기 탐지: 사기범들은 네트워크에서 활동합니다. 이들은 주소, 전화번호 또는 장치를 공유하여 가상의 신원을 생성합니다. 이를 탐지하려면 연결 서로 관련이 없어 보이는 계정들 사이를 연결할 수 있습니다. 이제 분석가는 간단한 쿼리만으로 사기 링을 탐지할 수 있습니다: “10분 이내에 동일한 IP 주소에서 로그인하여 동일한 대상 계정으로 거래를 개시한 모든 사용자를 찾아보세요.”
  3.  추천 엔진: “X를 구매한 사람들이 Y도 구매했다”는 간단한 문제입니다. 하지만 “X를 구매하고 긍정적으로 리뷰한 당신과 같은 사람들(동일한 인구통계학적 특성)도 Y를 구매했다”는 복잡한 그래프 문제입니다. 이제 이커머스 사이트에서는 초개인화된 추천을 제공할 수 있습니다: “현재 사용자와 같은 ‘등산화'를 구매한 다른 사용자가 구매한 제품을 추천하되, ’캠핑 장비‘ 카테고리의 제품만 필터링하세요.’와 같이 말이죠.”
  4. 공급망 가시성: 현대의 공급망은 깊은 계층 구조로 이루어져 있습니다. 자동차에는 특정 합금이 포함된 피스톤이 포함된 엔진이 포함되어 있습니다. 합금 배치에 결함이 있는 경우 리콜할 자동차를 정확히 파악해야 합니다. 제조업체는 결함을 즉시 추적할 수 있습니다: “‘배치 #99’에 ‘Acme Corp'에서 공급한 ’피스톤 링'이 포함된 모든 완성된 ‘Model X’ 차량을 찾아보세요.‘ 이 트래버스(CONTAINS -> CONTAINS -> CONTAINS)는 재귀적 CTE를 사용하는 쿼리와 달리 그래프 모델에서 경로로 표현하는 것이 더 직관적입니다.

그래프 모델은 관계가 풍부한 데이터를 Couchbase 내에서 직접 액세스할 수 있도록 하는 데 한 걸음 더 나아갔습니다. JSON 문서와 그래프 구조 사이의 격차를 해소함으로써 이제 별도의 그래프 데이터베이스의 오버헤드 없이도 숨겨진 패턴을 발견하고 복잡한 질문에 답할 수 있습니다.

직접 사용해보고 피드백을 제공할 준비가 되셨나요? 완벽한 실습용 노트북을 준비했습니다. 도그_연구_그래프, 를 열고 샘플 데이터로 채우고 그래프 쿼리를 실행하여 “골든 리트리버에게 알레르기를 유발하는 성분이 포함된 모든 개 사료 제품 찾기”와 같은 질문에 답할 수 있습니다. 다운로드 Colab 노트북 를 클릭하고 지금 바로 데이터의 잠재력을 탐색하세요.

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

작성자

게시자 글렌 갈비조

댓글 남기기

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

구축 시작

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

카펠라 무료 사용

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

연락하기

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