반응형

Neo4j 15

[neo4j] Minimum Spanning Tree 사용하기

오늘은 MST(Minimum Spanning Tree) 알고리즘을 neo4j에서 사용하는 법에 대해서 써본다. 굳이 쓰는 이유는 neo4j라이브러리가 업데이트되면서 알고리즘을 쓰는 방법들이 조금씩 달라졌기 때문이다. 그럼 시작해본다. MST? A minimum spanning tree (MST) or minimum weight spanning tree is a subset of the edges of a connected, edge-weighted undirected graph that connects all the vertices together, without any cycles and with the minimum possible total edge weight. 위키피디아엔 위와같이 정의되어 있다..

2022/GraphDB(neo4j) 2022.07.06

[Neo4j / 데이터 불러오기] web csv에서 데이터 불러오기

이전에 다뤘던 주제인지 기억이 나지 않는다. 아무튼 일단 이야기해봐야지 데이터 구조 이해하기 https://github.com/neo4j-graph-analytics/book/tree/master/data GitHub - neo4j-graph-analytics/book Contribute to neo4j-graph-analytics/book development by creating an account on GitHub. github.com 위의 링크로 들어가면 transport-nodes.csv 라는 파일과, transport-relationships.csv 라는 파일이 존재한다. 즉 node와 edge다. 여기서 유의할점은 node를 먼저 만든 후 edge(relation)을 만든다는 것이다. neo..

2022/GraphDB(neo4j) 2022.07.05

[그래프 데이터베이스][무작정해보기] [14/30] count, collect, size,map, list 활용하기

데이터 집계하기 기본적으로 Neo4j에서는 데이터를 모아줌 아래의 Cypher문을 작동했을 때 결과 MATCH (p:Person)-[:REVIEWED]->(m:Movie) RETURN p.name, m.title 위의 결과를 잘 보면 오른쪽에 "The Replacements"가 연속되고 그 후 왼쪽에 "Jessica Thompson"이 연속되는 것을 볼 수 있음. 결과를 List로 모으기 Neo4j에서는 자료를 List형태로 모을 수 있음 다음 예시는 톰크루즈가 연기한 영화들을 리스트로 보여줌 MATCH (p:Person)-[:ACTED_IN]->(m:Movie) WHERE p.name ='Tom Cruise' RETURN collect(m.title) AS `movies for Tom Cruise` 위..

[그래프 데이터베이스][무작정해보기] [13/30] 쿼리 패턴 익히기

이 모듈이 끝나면 다음과 같은 것을 할 수 있어야 한다 - 여러 MATCH 패턴 사용 - 여러 MATCH 절 사용 - OPTIONAL 사용 - subgraph return - 변화하는 paths 길이 사용 MATCH절 순회 The Replacements라는 영화를 리뷰한 사람들을 팔로우하는 사람들을 찾고 싶다면 MATCH (follower:Person)-[:FOLLOWS]->(reviewer:Person)-[:REVIEWED]->(m:Movie) WHERE m.title = 'The Replacements' RETURN follower.name, reviewer.name 다음과 같은 순서로 그래프 엔진이 작동한다. 우선 영화를 찾는다. 그 후 영화를 리뷰한 사람들을 찾는다. 그런 후 다시 리뷰얼르 팔로우..

[그래프 데이터베이스][무작정해보기] [12/30] WHERE 를 활용한 쿼리

SQL과 비슷하게 WHERE를 활용해서 원하는 노드를 Query할 수 있다. 기본 질의문 구성은 다음과 같다 MATCH (n) WHERE n.property = what_you_want RETURN n.other_property 위의 질의문은 오직 노드에 대한 결과값을 처리하게 된다. 노드의 어떤 속성이 WHERE안의 조건과 맞는 노드를 RETURN하는 방식이다. 그냥 노드를 RETURN하게 해도 되고, 원하는 Property만 꺼낼 수도 있다. 특정 범위에 맞는 데이터 Query하기 MATCH (p:Person)-[:ACTED_IN]->(m:Movie) WHERE m.released >= 2003 AND m.released (m:Movie) WHERE 2003 () WHERE p.name STARTS ..

[그래프 데이터베이스][무작정해보기] [11/30] Ubuntu에 Neo4j 설치하기

오늘부터 블로그 말투를 바꿔야 겠다. 네이버 블로그에서 쓰던 말투로 해야 좀더 자연스럽게 글이 써지는 것 같아 그렇게 해야겠다. 얼마전에 노트북에 Ubuntu를 설치했다. 윈도우에 용량 90%, 우분투에 10%정도 할애했다. 저번 글에도 쓴거 같지만, 우분투를 설치해야했던 이유는 여러가지가 있었다. 그 중에 중요한것은 Apach Spark를 설치해야 했기 때문이다. 왜 그리 중요하나면 내 개인적인 관심사이기도 했으며, 그래프데이터 베이스 교재에도 Spark 부분이 있었기 때문이다. 추후에 남는 컴퓨터를 얻는다면, 여러 컴퓨터에서 Spark를 돌리는 것을 해봐야 겠다. 그럼 본문으로. 개요 : Ubuntu에 Neo4j 설치하기 준비물 : Ubuntu 20.04, 인터넷, tab키 Openjdk 11 설치하..

[그래프 데이터베이스][무작정해보기] [10/30] Relation과 Property로 Query하기

연습2 : 속성값으로 쿼리값 필터링 하기. 영화 데이터를 계속 사용함. 관계(Relationships) 관계는 복잡하고 깊은 데이터를 연결하는데 있어 Neo4j 그래프를 강력한 도구로 만들어준다. 관계는 방향성(Directed)이 있는 연결로 두 노드 사이를 관계종류(Relationship type)로 연결한다. 노드와 같이 속성(properties)을 가진다. 노드를 찾을떄, 관계의 속성값을 이용할 수 있다. ASCII art 노드와 관계 사이에서 데이터를 얻어내기 위한 syntax () // 노드 ()--() // 어떤 관계를 가진 두 노드 ()-[]-() // 어떤 관계를 가진 두 노드 ()-->() // 첫번째 노드가 두번째 노드에게 관계를 가지고 있다. ()(node2) RETURN node1,..

[그래프 데이터베이스][무작정해보기] [9/30] 노드속성을 이용한 쿼리 및 필터

코멘트 만들기 //를 이용해서 코멘트 표시할 수 있음 그래프의 데이터 모델 확인하기 : CALL db.schema.visualization() 처음 공부할때, 그래프의 데이터 모델을 확인하는 것은 유용하다. `CALL db.schema.visualization()`를 이용하여 노드, 라벨, 관계에대한 정보를 얻을 수 있다. 다음은 기본 movie data에서 실행했을때 결과. person과 movie 두 노드를 볼 수 있으며, 각각은 다른 색상으로 표시되어 있음. 6가지 relation이 있으며, 사람과 사람 사이에는 follow 할 수 있기 때문에 재귀적인 모습으로 표시됨. 속성 노드를 정의하기 위해 속성값을 더 집어넣을 수 있음. 속성은 속성 키 값으로 정의됨. 같은 타입의 노드들이 꼭 같은 속성을 ..

[그래프 데이터베이스][무작정해보기] [8/30] 사이퍼 기초다지기 - 노드 / 관계 생성, 원하는 정보 Query하기

개요. 사이퍼 언어 기초적인 구조를 이해해보고, 이를 응용해 2촌 찾아 보기를 해보겠습니다. Cypher란 무엇인가? ※파파고의 도움을 받아 공식 사이트 문장을 번역하였습니다. 더보기 Cypher is a declarative graph query language that allows for expressive and efficient querying updating and administering of the graph. It is designed to be suitable for both developers and operations professionals. Cypher is designed to be simple, yet powerful; highly complicated database quer..

[그래프 데이터베이스][무작정해보기] [7/30] A*(A-star) Algorithm Neo4j에서 실행해보기

들어가기 전에 복습하기 2021/01/10 - [30일 프로젝트/Graph DB] - [그래프 데이터베이스][무작정해보기] [6/30] A*(A-star) Algorithm 그림으로 이해하기. [그래프 데이터베이스][무작정해보기] [6/30] A*(A-star) Algorithm 그림으로 이해하기. 다음 예제는 A*(A-Star) Algorithm 을 사용합니다. 그 전에 A* 알고리즘이 무엇인지 간단한 그림을 통해 이해해보도록 하겠습니다. A* 알고리즘은 무엇이고 어디에 쓰이는가? A*(pronounced "A-star") is a graph. dfso2222.tistory.com 바쁘다면 한줄요약 A* 알고리즘은 다음과 같은 f(n)값을 최소화하는 방식으로 작동합니다. $f(n) = g(n) + h(..

반응형