728x90
반응형

Neo4j Bloom은 사람들이 그래프 데이터와 연결하고 상호 작용하도록 도와주는 도구에요.

데이터의 의미를 시각적으로 탐색하는 건, 데이터베이스에 저장된 관계와 속성을 탐색하려는 사용자에게 정말 중요하죠.

Bloom을 사용하면 그래프의 다양한 경로를 쉽게 확장하고 따라갈 수 있어서 탐색 및 분석에 딱 좋아요. 그런데 Neo4j Cypher의 강력한 기능을 활용하면 Bloom의 기능을 훨씬 더 향상시킬 수 있다는 사실!

Cypher는 데이터를 쿼리하고, 속성을 업데이트하거나, 새로운 관계를 추가하는 등의 쓰기 작업을 수행할 수 있는 훌륭한 쿼리 언어예요. Bloom은 이미 Cypher 쿼리를 지원하고 있어요. 검색어를 사용하면 검색창에서 특정 명령이나 Cypher 코드를 모든 매개변수와 함께 실행할 수 있고, UI에서 쉽게 불러올 수 있죠.

새로운 Bloom 2.2에서는 "Scene Actions"라는 도구를 추가해서 이 기능을 확장했어요.

장면 액션이란 무엇일까요?

장면 액션을 사용하면 장면에서 특정 노드 및 관계를 선택했을 때, 그 선택에 맞춰 Cypher 쿼리를 실행할 수 있어요.

장면 액션이 구성되면, 사용자는 노드나 관계를 선택하고 해당 노드/관계에 대해 사용자 지정 Cypher 쿼리를 실행할 수 있게 되는 거죠.

장면 액션을 추가하는 방법은 정말 간단해요!

왼쪽의 Perspective Designer 패널을 열고 "Saved Cypher"를 선택한 다음 "Scene actions"를 선택하세요.

마우스 오른쪽 버튼 클릭 컨텍스트 메뉴를 열면 액션 이름이 표시될 거예요.

Cypher 쿼리에는 실행할 코드가 포함되어 있어요. 사용자의 선택을 참조하려면 암시적 매개변수 $nodes와 $relationships를 사용하세요. Bloom은 매개변수의 값을 ID 목록으로 전달해 줄 거예요.

  • 표현식 $nodes의 id(n)는 사용자가 선택한 노드를 참조하게 돼요.
  • 마찬가지로 $relationships의 id(r)는 관계를 참조하겠죠.

액션 가용성을 통해 사용자가 선택한 노드 및 관계 유형에 따라 상황에 맞는 메뉴에 장면 액션을 표시할지 여부를 정의할 수 있어요. 기본적으로 모든 노드와 관계가 포함되어서, 사용자가 마우스 오른쪽 버튼을 클릭하기 전에 선택한 항목에 관계없이 장면 액션이 컨텍스트 메뉴에 나타날 거예요.

자, 한번 뛰어들어 볼까요!

다음 예는 일반적으로 사용 가능한 데이터 세트 "Northwind"를 사용해서 만들었어요. 여러분도 직접 데이터베이스에서 시작해보는 걸 추천해요. AuraDB Free에서 자신만의 인스턴스를 설정할 수 있답니다.

다음 데이터를 추가해보세요. 이 튜토리얼에서 설정하는 방법이 나와있어요. 아니면 간단하게 Neo4j Browser를 시작하고 명령 :play northwind graph를 실행한 다음 쉬운 단계별 튜토리얼을 따라해도 돼요. 필요한 모든 데이터를 얻을 수 있을 거예요!

데이터 모델 및 Order의 속성

다음은 우리가 사용할 데이터 모델에 대한 간략한 설명이에요 (그림 참조).

  • ( Customer )-[ PURCHASED ]->( Order )
  • ( Order )-[ ORDERS ]->( Product )
  • ( Product )-[ PART_OF ]->( Category )
  • 'Order'에는 각 주문의 기본 정보가 포함되어 있어요.
  • 'ORDERS' 관계에는 주문 항목 세부 정보(주문에 포함된 제품의 수량 및 가격)가 포함되어 있답니다.

다양한 예를 사용해서 장면 액션의 몇 가지 활용법을 보여드릴게요.

장면 액션 1: 고객이 구매한 제품 가져오기

고객 집합부터 시작해서, 시간이 지남에 따라 고객이 구매한 모든 제품을 검색하고 싶다고 가정해 볼게요.

기존 Bloom 기능을 사용해서 이 정보를 얻으려면 '확장' 작업을 두 번 사용해야 해요. 한 번은 고객의 주문을 확인하고, 다시 한 번은 주문의 제품을 확인해야 하죠.

장면 액션을 만들고 'Customer' 노드 라벨을 포함하는 사용자 선택으로 가용성을 제한할 수 있어요.

MATCH p = (c:Customer)--(:Order)--(:Product) 
WHERE id(c) in $nodes 
RETURN p

이 예에서는 다음과 같은 장점을 강조하고 있어요.

  • 선택한 노드/관계를 입력 값으로 사용해서 모든 읽기 작업을 수행할 수 있다는 점.
  • 반복적인 작업을 장면 액션으로 변환할 수 있다는 점.
  • 데이터 모델의 맥락에서 의미 있는 명령 이름을 사용해서 분석가의 탐색을 단순화할 수 있다는 점.

장면 액션 2: 최신 주문 받기

속성 값을 기준으로 경로를 확장하고 선택할 수도 있어요. 이 경우 가장 최근 순서를 검색하려고 하죠.

이 Scene Action은 고객 또는 제품 `Node` 라벨이 있는 선택 사항에 적용할 수 있고, 고객이 구매한 가장 최근 주문 또는 특정 제품이 포함된 가장 최근 주문을 얻을 수 있어요.

고객/제품에 대한 Scene Action을 생성하는 데 사용할 수 있는 Cypher는 다음과 같아요.

MATCH (c)
WHERE id(c) in $nodes
CALL {
   WITH c
   MATCH (c)--(m:Order)
   RETURN max(m.orderDate) as maxOrderDate
}
WITH c, maxOrderDate
MATCH p = (c)--(o:Order)
WHERE o.orderDate = maxOrderDate
RETURN p

이 예에서는 몇 가지 추가 이점을 확인할 수 있어요.

  • 속성, 집계 함수, 하위 `Query` 및 프로시저(APOC 및 그래프 데이터 과학에 대한 호출 포함)를 기반으로 경로를 탐색할 수 있어요.
  • 여러 카테고리에 Scene Action을 재사용하고 다른 카테고리에는 숨길 수 있어요.

Scene Action 3: 선택한 제품 중 두 개 이상을 포함하는 주문 받기

선택된 제품 세트가 주어지면 선택 항목에 둘 이상의 제품이 포함된 모든 주문을 검색하려고 해요.

이 경우 `Query`는 선택 항목 내에서 일부 공유 데이터를 검색하죠.

이 Scene Action은 제품 카테고리에만 적용돼요.

MATCH p = (w:Product)—-(:Order)--(q:Product)
WHERE id(w) in $nodes and id(q) in $nodes
RETURN p

여기에는 더 많은 장점이 있어요.

  • 선택 항목 내의 공유 속성 값이나 공유 `Relationship`을 기반으로 데이터를 검색할 수 있어요.
  • 선택 항목을 재사용할 수 있어요 (`$node`)를 동일한 `Query` 내에 두 번 이상 입력해야 해요.

Scene Action 4: 저렴하고 비싼 제품 구입

이 `Query`는 이전 `Query`와 매우 유사하지만, 이 경우 두 개의 분리된 `Query`로 구성된 UNION을 사용해요. 이전과 마찬가지로 선택 항목을 두 번 이상 적용하고 필요한 정보를 검색할 수 있죠.

이 Scene Action은 카테고리 `Node`용이에요.

MATCH (c:Category)-[r]-(p:Product)
WHERE id(c) in $nodes and p.unitPrice < 10
RETURN *
UNION ALL
MATCH (c:Category)-[r]-(p:Product)
WHERE id(c) in $nodes and p.unitPrice > 50
RETURN *

고급 Scene Action

다음 예에서는 데이터베이스의 데이터를 업데이트/생성해요. 사용자는 다음을 갖추어야 해요.데이터베이스에 쓰기 권한그리고 설정“쓰기 트랜잭션 허용"는 ""에서 활성화되었어요.Bloom의 섹션. ''는 설정 패널에서 활성화할 수 있어요.

Scene Action 5: 주문 수량을 10만큼 늘리기

지금까지 우리는 기본 그래프에서 데이터를 검색했어요. 때로는 데이터를 변경하고 더 복잡한 일련의 작업을 트리거하고 싶을 때도 있죠.

이 예에서는 사용자가 특정 주문 항목의 수량을 늘릴 수 있도록 하려고 하며, 이 비즈니스 작업을 수행하려면 다음 단계가 필요해요.

  • 주문과 제품 간의 ORDERS `Relationship`에 저장된 주문 항목을 선택해요.
  • '수량' 값을 10씩 늘려요.
  • Product `Node`를 선택하고 'unitsOnOrder' 값을 10만큼 늘려요.
  • Product `Node`에서 'unitsInStock'을 10만큼 줄여요.
  • 제품의 "unitsInStock"이 충분하지 않으면 작업을 수행해서는 안 돼요.

다음 Scene Action은 ORDERS 유형의 `Relationship`에 적용될 수 있어요.

MATCH ()-[r:ORDERS]-(p:Product)
WHERE id(r) in $relationships and p.unitsInStock > 10
WITH r, p
SET r.quantity = r.quantity + 10
SET p.unitsOnOrder = p.unitsOnOrder + 10
SET p.unitsInStock = p.unitsInStock — 10
RETURN *

Bloom은 데이터베이스에 쓰기를 시도하는 사용자에 대한 Neo4j의 권한을 계속 존중하므로 사용자는 데이터베이스 역할에 대한 적절한 승인을 받아야 해요.

이 예에서는 다음과 같은 이점을 확인할 수 있어요.

  • 기본 데이터를 변경하여 `Relationship` 속성(쓰기 작업)을 업데이트하고 Bloom에서 시각화를 업데이트할 수 있어요. (`Node` 속성도 변경할 수 있어요.)
  • Scene Action을 `Relationship`에 적용할 수도 있으며, Scene Action의 적용 범위를 단일 `Relationship` 유형으로 제한할 수도 있어요.
  • `Node` 및 `Relationship` 업데이트와 관련된 여러 작업을 쉽게 수행할 수 있으므로 Scene Action은 비즈니스 논리 절차를 구현하여 쉽게 실행할 수 있어요.

Scene Action 및 스타일 규칙 사용

'unitsOnOrder' 를 기반으로 제품에 대한 스타일 규칙을 추가해 보세요.  이 Scene Action을 장면에 적용하면 즉각적인 변화를 확인할 수 있어요!

Scene Action 6: 선택 항목에서 새 주문 만들기

지금까지는 데이터를 검색하고 속성을 업데이트했지만, 새 데이터를 추가하거나 데이터 삽입을 촉진하는 등 훨씬 더 많은 작업을 수행할 수 있어요.

선택한 제품과 고객을 고려하여 다음 요구 사항에 따라 새 주문을 생성할 수 있기를 원해요.

  • 선택한 모든 고객은 선택한 모든 제품과 연결된 새로운 주문을 갖게 돼요.
  • 'customerID', 'orderDate', 'orderID' 등 새 주문에 일부 값을 미리 입력하세요.
  • ORDERS `Relationship`이 있는 제품과 새 주문을 연결해요.
  • 주문의 "orderID" 및 제품의 "unitPrice"와 같은 `Relationship`의 일부 값을 미리 입력하세요. 다른 속성에는 기본값이 있을 수 있어요.

다음 Scene Action은 위 요구 사항의 정확한 순서에 따라 이 논리를 자동화하는 데 도움이 돼요.

MATCH (c:Customer)
WHERE id(c) in $nodes
WITH c
CREATE (c)-[r1:PURCHASED]->(o:Order)
SET o.customerID = c.customerID
SET o.orderDate = toString(localdatetime())
SET o.orderID = toString(id(o))
WITH c, o, r1
MATCH (p:Product)
WHERE id(p) in $nodes
CREATE (o)-[r:ORDERS]->(p)
SET r.discount = '0'
SET r.orderID = o.orderID
SET r.productID = p.productID
SET r.quantity = 1
SET r.unitPrice = p.unitPrice
RETURN *

먼저 제품과 고객을 선택하세요.

Scene Action은 새로운 Node와 Relationship을 생성해요.

이 마지막 예시를 통해 Bloom의 Scene Action의 더 많은 장점을 확인할 수 있어요.

  • 한 단계로 쉽게 새로운 Node와 Relationship을 만들 수 있어요.
  • 고객과 제품의 선택은 시각적으로 이루어지죠.
  • 특정 비즈니스 로직을 기반으로 새로운 데이터 삽입을 Customizing하세요.
  • 여러 Node와 Relationship을 추가합니다.
  • 현재 Graph 데이터에서 새로운 Property 값을 설정하고 다른 Property에 대한 일부 기본값을 정의합니다.
  • 이 작업은 사용하기 정말 쉬워요. 사용자는 제품과 고객을 선택하기만 하면 돼요. 그 후에는 사용자가 Bloom에서 직접 Property를 변경할 수 있어요.
  • 더 많은 고객을 선택하면 다른 Order가 생성됩니다.
  • 삽입은 동일한 트랜잭션에서 수행되므로 이 작업은 일관성 관점에서 안전해요.

그게 다야?

Scene Action의 적용은 Neo4j Cypher의 기능에 의해서만 제한됩니다.

이 작은 데이터 세트를 사용하더라도 Graph의 하위 집합을 표시하고, 데이터베이스의 데이터를 변경하고, 완전히 새로운 데이터를 생성할 수 있음을 보여드렸어요.

반복적인 작업을 자동화하고 복잡한 작업을 안전하고 통제된 방식으로 구현할 수 있으므로 사용자는 Graph 데이터를 효율적으로 조작하고 비즈니스 작업을 수행할 수 있어요.

그렇다면 이 기능을 어떤 용도로 사용하시겠어요?

피드백이나 제안을 보내주세요. . Bloom에 대한 추가 기술 정보가 필요하면 다음을 참조하세요. 선적 서류 비치, 또는 더 많은 사용 사례를 보려면 다음을 참조하세요. 웹사이트.


  • Scene Actions

에이치시스템즈의 LogTree는 Neo4j 기반 GraphRAG 플랫폼으로, 데이터를 자동으로 지식그래프화하고 자연어 질의로 즉시 답을 제공합니다.

👉 에이치시스템즈 홈페이지

728x90
반응형

+ Recent posts