Neo4j / / 2026. 1. 8. 07:41

[Neo4j] Overview

이 섹션에서는 Cypher®에 대한 개요와 Cypher가 SQL과 어떻게 다른지에 대한 간단한 논의를 제공합니다.

Cypher란 무엇인가?

Cypher는 Neo4j의 선언적 그래프 쿼리 언어(declarative graph query language)입니다.
이것은 2011년 Neo4j 엔지니어들에 의해 그래프 데이터베이스를 위한 SQL에 해당하는 언어로 만들어졌습니다.
SQL과 유사하게, Cypher는 사용자가 그래프에서 어떻게 검색할지보다는 무엇을 검색할지에 집중할 수 있게 합니다.
따라서 Cypher는 사용자가 효율적이고 표현력 있는 쿼리를 통해 이전에 알려지지 않은 데이터 연결과 클러스터를 드러냄으로써 속성 그래프 데이터베이스의 잠재력을 완전히 실현할 수 있게 합니다.

Cypher는 패턴과 관계를 매칭하는 시각적인 방법을 제공합니다.
이것은 다음과 같은 아스키 아트 타입의 구문에 의존합니다: (nodes)-[:CONNECT_TO]→(otherNodes).
둥근 괄호는 원형 노드를 위해 사용되고, -[:ARROWS]→는 관계를 위해 사용됩니다.
쿼리를 작성하는 것은 사실상 그래프의 데이터를 통해 패턴을 그리는 것과 같습니다.
다시 말해, 노드와 그들의 관계와 같은 엔티티들이 쿼리에 시각적으로 구축됩니다.
이것은 Cypher를 읽고 쓰기에 매우 직관적인 언어로 만듭니다.

Cypher와 SQL: 주요 차이점

Cypher와 SQL은 많은 면에서 유사합니다.
예를 들어, 그들은 WHEREORDER BY와 같은 많은 동일한 키워드를 공유합니다.
그러나 두 언어 사이에는 몇 가지 중요한 차이점이 있습니다:

Cypher는 스키마 유연적입니다

인덱스와 제약조건을 사용하여 부분 스키마를 강제하는 것이 가능하고 권장되지만, Cypher와 Neo4j는 SQL과 관계형 데이터베이스보다 더 큰 정도의 스키마 유연성을 제공합니다.
더 구체적으로, Neo4j 데이터베이스의 노드와 관계는 그래프의 다른 노드나 관계가 해당 속성을 가지고 있다고 해서 반드시 특정 속성 세트를 가질 필요가 없습니다(해당 특정 속성에 대해 속성 존재 제약조건이 생성되지 않은 한).
이것은 사용자가 데이터를 표현하기 위해 고정된 스키마를 사용할 필요가 없으며 그래프가 발전함에 따라 새로운 속성과 관계를 추가할 수 있다는 것을 의미합니다.

쿼리 순서

SQL 쿼리는 사용자가 원하는 반환 값으로 시작하는 반면, Cypher 쿼리는 반환 절로 끝납니다. 예를 들어, 다음 두 쿼리(모두 7보다 큰 평점을 가진 영화 제목을 데이터베이스에서 검색)를 고려해보세요. 첫 번째는 SQL로, 두 번째는 Cypher로 작성되었습니다:

SELECT movie.name
FROM movie
WHERE movie.rating > 7
MATCH (movie:Movie)
WHERE movie.rating > 7
RETURN movie.title

Cypher 쿼리는 더 간결합니다

직관적이고 화이트보드와 같은 절 구성 방법으로 인해, Cypher 쿼리는 종종 동등한 SQL 쿼리보다 더 간결합니다.
예를 들어, 다음 두 쿼리(모두 영화 The Matrix의 배우 이름을 데이터베이스에서 검색)를 고려해보세요. 첫 번째는 SQL로, 두 번째는 Cypher로 작성되었습니다:

SELECT actors.name
FROM actors
     LEFT JOIN acted_in ON acted_in.actor_id = actors.id
    LEFT JOIN movies ON movies.id = acted_in.movie_id
WHERE movies.title = "The Matrix"
MATCH (actor:Actor)-[:ACTED_IN]->(movie:Movie {title: 'The Matrix'})
RETURN actor.name

Cypher와 APOC

Neo4j는 APOC(Awesome Procedures on Cypher) Core 라이브러리를 지원합니다.
APOC Core 라이브러리는 사용자 정의 프로시저(user-defined procedures)와 함수(functions)에 대한 접근을 제공하며, 이는 Cypher 쿼리 언어의 사용을 데이터 통합(data integration), 그래프 알고리즘(graph algorithms), 데이터 변환(data conversion)과 같은 영역으로 확장합니다.

자세한 내용은 APOC Core 페이지를 방문하세요.


출처: https://neo4j.com/docs/cypher-manual/current/introduction/cypher-overview/

반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유