Neo4j 실습

Hansu Park·2024년 1월 21일
1
post-thumbnail
post-custom-banner

실제 DB를 띄워보고 브라우저 + 고언어 드라이버를 이용해 쿼리를 날려보자.

브라우저 이용

1. 계정 생성

Neo4j Aura 에 들어가 계정을 생성하자. 위에서 살펴봤듯이 제공되는 클라우드 서비스이다. Free를 사용하기에 비용 부담은 없다.

2. 인스턴스 생성

Free를 선택해주자.

이와 같은 창이 뜬다. 모달창을 끄지말자.
username, password가 나오는데 이를 꼭 기억해두자.
다운로드할 수도 있다.

몇 분 지나면 인스턴스가 생성된다. 참고로 굳이 aura를 이용해서 인스턴스를 만들지 않더라도 도커나 쿠버네티스를 활용할 수도 있다.

(만들어진 모습)

3. 인스턴스 접속


Open 버튼을 눌러 위와같은 모달창으로 이동한다.

비밀번호만 잘 입력해주면 접속할 수 있다.

상단의 커맨드를 비롯해 접속된 것을 확인할 수 있다.

4. 데이터 삽입 및 조회

CREATE (p:Person {name: "khal", age: 42}),  
  
(v:Person {name: "neria", age: 25}),  
  
(h:Person {name: "huchi", age: 17})  

보이는 커맨드창에 위와같은 싸이퍼 쿼리를 날렸다.

MATCH (p:Person) RETURN p;  

이후 위와 같은 쿼리를 날린다면


그래프가 조회되는 것을 확인할 수 있다.


테이블로써도 확인이 가능하다.

Go Driver를 통한 접속

Build applications with Neo4j and Go - Neo4j Go Driver Manual 링크를 참조하자.

1. 접속

간단한 App을 만들고,

package main  
  
import (  
    "context"    "github.com/neo4j/neo4j-go-driver/v5/neo4j")  
  
func main() {  
    ctx := context.Background()    // URI examples: "neo4j://localhost", "neo4j+s://xxx.databases.neo4j.io"    dbUri := "<URI for Neo4j database>"    dbUser := "<Username>"    dbPassword := "<Password>"    driver, err := neo4j.NewDriverWithContext(        dbUri,        neo4j.BasicAuth(dbUser, dbPassword, ""))    defer driver.Close(ctx)  
    err = driver.VerifyConnectivity(ctx)    if err != nil {        panic(err)    }}  

에 복사해두었던 정보들(uri, user, pw)를 입력하면 된다.
실행해보면 에러가 안나는 것을 확인할 수 있다.

2.쿼리 실행

이전에 만들었던 데이터들을 조회해보자.

// Get the name of all 42 year-olds  
result, _ := neo4j.ExecuteQuery(ctx, driver,  
    "MATCH (p:Person {age: $age}) RETURN p.name AS name",    map[string]any{        "age": 42, //예제에는 "42", 여기는 42    }, neo4j.EagerResultTransformer,    neo4j.ExecuteQueryWithDatabase("neo4j"))  
// Loop through results and do something with them  
for _, record := range result.Records {  
    fmt.Println(record.AsMap())}  
  
// Summary information  
fmt.Printf("The query `%v` returned %v records in %+v.\n",  
    result.Summary.Query().Text(), len(result.Records),    result.Summary.ResultAvailableAfter())

기본 예제에 있던 코드를 조금 수정한 위 코드를 실행하면

map[name:khal]  
The query `MATCH (p:Person {age: $age}) RETURN p.name AS name` returned 1 records in 4ms.  

라는 출력 결과가 나타남을 확인할 수 있다.

post-custom-banner

0개의 댓글