저장 프로시저 및 UDF
복잡한 로직을 캡슐화하고 Cypher를 확장하는 사용자 지정 저장 프로시저와 사용자 정의 함수를 작성하고 배포하는 방법을 학습합니다.
저장 프로시저 및 UDF은(는) CoddyKit의 무료 Neo4j Graph Database Fundamentals 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Neo4j Graph Database Fundamentals 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Neo4j Graph Database Fundamentals 강의에는 총 4개의 강의가 포함되어 있습니다.
이 강의의 일부는 아직 번역되지 않았으며 영어로 표시됩니다.
Extending Neo4j's Capabilities
Welcome to extending Neo4j! Sometimes, Cypher isn't enough for complex logic or specific integrations. That's where custom code comes in.
Neo4j allows you to extend its functionality using Stored Procedures and User-Defined Functions (UDFs), typically written in Java.
- Stored Procedures perform actions, like creating nodes or running complex algorithms.
- User-Defined Functions (UDFs) return values, just like built-in Cypher functions.
They encapsulate complex logic, improve query readability, and boost performance for repetitive tasks.
Procedures vs. User-Defined Functions
It's crucial to understand the difference between procedures and UDFs:
- Stored Procedures:
- Called withCALL package.procedure()
- Can perform side effects (create, update, delete data)
- Return tabular results (rows and columns)
- Can access the graph database directly - User-Defined Functions (UDFs):
- Called within Cypher expressions (e.g.,RETURN my.udf(n.property))
- Must be pure functions (no side effects)
- Return a single scalar value (e.g., string, number, boolean, list)
- Cannot modify the graph or access it directly
Stored Procedure Anatomy (Java)
Stored procedures are Java classes compiled into a JAR file. They use specific Neo4j annotations.
Here's the basic structure for a simple procedure that doesn't take any parameters and returns a string:
package com.coddykit;
import org.neo4j.procedure.Procedure;
import org.neo4j.procedure.Name;
import org.neo4j.procedure.Description;
import org.neo4j.graphdb.Result;
import java.util.stream.Stream;
public class MyProcedures {
// Define the output record structure
public static class StringOutput {
public String value;
public StringOutput(String value) {
this.value = value;
}
}
@Procedure(value = "my.hello")
@Description("Returns a simple greeting.")
public Stream<StringOutput> hello() {
return Stream.of(new StringOutput("Hello from CoddyKit!"));
}
}Key Elements of a Procedure
Let's break down the previous code:
@Procedure(value = "my.hello"): This annotation declares a method as a stored procedure and defines its full name (my.hello).@Description: Provides a description visible in Neo4j Browser.- Output Class (
StringOutput): Procedures return aStreamof custom objects. Each object represents a row in the result, and its public fields become the column names. Stream<StringOutput>: The return type for procedures.
This Java code is ready to be compiled into a JAR and deployed.
Deploying Your Custom Procedure
To make your Java procedure available in Neo4j, you need to compile it and place the resulting JAR file into the database's plugins directory.
Steps:
- Compile your Java code into a JAR file (e.g.,
my-procedures.jar). - Copy the JAR file into your Neo4j installation's
pluginsfolder. - Restart your Neo4j database instance.
After restarting, Neo4j will discover and register your new procedures and functions.
Calling a Stored Procedure
Once deployed, you can call your procedure using the CALL keyword in Cypher. Let's try calling our my.hello procedure:
CALL my.hello();User-Defined Function (UDF) Anatomy
UDFs are similar to procedures but have different annotations and return types. They are designed to be used inline within Cypher expressions.
Here's the basic structure for a UDF that takes a string and returns a modified string:
package com.coddykit;
import org.neo4j.procedure.UserFunction;
import org.neo4j.procedure.Name;
import org.neo4j.procedure.Description;
public class MyFunctions {
@UserFunction("my.capitalize")
@Description("Capitalizes the first letter of an input string.")
public String capitalize(@Name("input") String input) {
if (input == null || input.isEmpty()) {
return input;
}
return Character.toUpperCase(input.charAt(0)) + input.substring(1);
}
}Key Elements of a UDF
Let's look at the UDF's components:
@UserFunction("my.capitalize"): This annotation declares a method as a UDF and defines its full name (my.capitalize).@Name("input"): Specifies the name for the parameter when used in Cypher.- Return Type: UDFs return a single scalar value (e.g.,
String,Long,Boolean,List<String>). They do not return aStreamor custom output objects.
Like procedures, this Java code must be compiled into a JAR and deployed to the plugins folder.
Calling a User-Defined Function
After deploying your UDF, you can use it directly within Cypher queries as part of an expression. It behaves just like built-in functions.
Let's use our my.capitalize UDF:
RETURN my.capitalize("hello world");
// Or with graph data:
MATCH (p:Person)
RETURN p.name, my.capitalize(p.name) AS CapitalizedName;Quick Check: Procedures & UDFs
Which of the following statements is TRUE regarding Neo4j Stored Procedures and User-Defined Functions (UDFs)?
Recap & Next Steps
You've learned how to extend Neo4j with custom Java code!
- Stored Procedures execute complex actions, return tabular results, and are called with
CALL. - User-Defined Functions (UDFs) return single scalar values, are pure functions (no side effects), and are used inline in Cypher expressions.
- Both require Java code, specific Neo4j annotations, compilation into a JAR, and deployment to the Neo4j
pluginsdirectory.
These powerful extensions allow you to integrate custom logic, algorithms, and external services directly into your Neo4j environment, significantly expanding its capabilities.
AI 튜터와 함께 Neo4j Graph Database Fundamentals을(를) 배우세요 — 무료
브라우저에서 실제 코드를 작성하고 실행하며, 24/7 AI 튜터로부터 즉각적인 도움을 받고, 웹이나 앱에서 중단한 부분부터 계속 학습하세요.
- 코스
- 12
- 레슨
- 48
자주 묻는 질문
“저장 프로시저 및 UDF” 강의는 무료인가요?
네 — “저장 프로시저 및 UDF” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Neo4j Graph Database Fundamentals 강의 전체를 잠금 해제할 수 있습니다. Neo4j Graph Database Fundamentals 강의에는 총 4개의 강의가 포함되어 있습니다.
“저장 프로시저 및 UDF”에서 뭘 배우나요?
복잡한 로직을 캡슐화하고 Cypher를 확장하는 사용자 지정 저장 프로시저와 사용자 정의 함수를 작성하고 배포하는 방법을 학습합니다. 브라우저에서 직접 실행하는 실습 코드로 Neo4j Graph Database Fundamentals을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Neo4j Graph Database Fundamentals을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Neo4j Graph Database Fundamentals은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.
“저장 프로시저 및 UDF” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Neo4j Graph Database Fundamentals 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Neo4j Graph Database Fundamentals 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 저장 프로시저 및 UDF
- BI 및 시각화 도구 통합
- 고급 데이터 수집 파이프라인
- Neo4j의 전문 검색과 벡터 검색