1. 개요
    1. Noe4j소개
      1. Java로 개발된 Graph database
      2. License : GPL, 일부는 AGPL/상업용.

버전 

기능

라이선스 

Community

기본 기능 

GPL 

Advanced

모니터링 기능

AGPL 또는 상용 라이선스

Enterprise 

온라인 백업, HA, 모니터링

AGPL 또는 사용 라이선스

 

  1. 보통 소셜 네트워크 데이터 같이 특정 데이터와 연관된 데이터들의 연관 정보들을 빠른 검색이 가능..
  • 참고 : cisco ,HP , adobe 등에서 사용 중.

 

  1. 특징
    1. 자바 기반의 그래프 DB로서, 임베딩 방식과 REST 방식을 지원한다.
    2. 트랜잭션을 지원하며, JTA를 지원한다.
    3. 인덱스 및 노드 탐색을 지원한다.
    4. 이중화를 통한 고가용성을 지원한다.
    5. 백업/복구를 지원한다.

    

  1. 그래프 데이터 베이스

    node , relationship , property  이렇게 3가지로 구성되어져 있으며, 밑에 사진 관계를 화살표와 해당 관계가 어떤 내용인지를 표시하고 있다.

  1. Neo4j 설치
    1. 설치 환경

OS : CentOS release 5.8 (Final)

kernel : 2.6.18

    jdk : 1.7.0_45

*참고 : 설치 권장 사양

CPU : 최소 인텔 코어 i3 / 권장 인텔 코어 i7

RAM: 최소 2 GB / 권장 16-32 GB 이상

HDD: 최소 10GB SATA / 권장 SSD SATA

최소 ext4 / 권장 ext4, ZFS

 

  1. 설치과정

# wget http://dist.neo4j.org/neo4j-community-2.0.0-unix.tar.gz

# tar xvfz neo4j-community-2.0.0-unix.tar.gz

# neo4j-community-2.0.0/bin/neo4j install

Graph-like power should be handled carefully. What user should run Neo4j? [neo4j] neo4j

User "neo4j" does not yet exist. Shall I create the account for you? [Yn]Y

Created user "neo4j".

  1. Neo4j Configuration Files
    1. /neo4j/conf/neo4j-server.properties 파일 설정

// 데이터베이스 디렉토리 지정

org.neo4j.server.database.location=data/graph.db

 

//외부 연결 설정 기본은 로컬만 허용. 주석처리 되어있음.

org.neo4j.server.webserver.address=0.0.0.0

 

// HTTP Connector

org.neo4j.server.webserver.port=7474

 

// HTTPS Connector

org.neo4j.server.webserver.https.enabled=true

// https port ( 모든 데이터 및 UI 액세스 용 )

org.neo4j.server.webserver.https.port=7473

// 인증서 위치(파일이 존재하지 않을 경우 자동으로 생성 )

org.neo4j.server.webserver.https.cert.location=conf/ssl/snakeoil.cert

// 개인 키 위치(파일이 존재하지 않을 경우 자동으로 생성)

org.neo4j.server.webserver.https.key.location=conf/ssl/snakeoil.key

 

// keystore 위치지정

org.neo4j.server.webserver.https.keystore.location=data/keystore

 

// rrd데이터 디렉토리 기본 설정됩니다.

org.neo4j.server.webadmin.rrdb.location=data/rrd

org.neo4j.server.webadmin.data.uri=/db/data/

 

// API 중에서 REST 엔드 포인트 ( Webadmin 에서 사용 )

org.neo4j.server.webadmin.management.uri=/db/manage/

// 그래프 엔진 튜닝 파일설정 파일

org.neo4j.server.db.tuning.properties=conf/neo4j.properties

// 콘솔 서비스

org.neo4j.server.manage.console_engines=gremlin, shell

 

  1. / neo4j/conf/ neo4j.properties 설정

// 저수준 그래프 엔진에 대 한 기본값

#neostore.nodestore.db.mapped_memory=25M

#neostore.relationshipstore.db.mapped_memory=50M

#neostore.propertystore.db.mapped_memory=90M

#neostore.propertystore.db.strings.mapped_memory=130M

#neostore.propertystore.db.arrays.mapped_memory=130M

 

// Autoindexing

// 자동 인덱싱 노드의 활성화, 기본값은 false

#node_auto_indexing = true

// 노드 속성 키 자동 인덱스를 사용 하는 경우 수

#node_keys_indexable = 이름, 나이

// 관계에 대 한 자동 인덱싱 활성화, 기본값은 false

#relationship_auto_indexing = true

// 관계 속성 키 자동 인덱스를 사용 하는 경우 수

#relationship_keys_indexable = 이름, 나이

 

// 계속 논리 로그, 디버깅 설정(날짜설정:"7 days" 용량:"100M size" 기본: "true")

keep_logical_logs = true

// 온라인 백업을 데이터베이스 사용 합니다.

online_backup_enabled = true

// 들어오는 백업 요청을 수신 하는 포트.

online_backup_server = 127.0.0.1:6362

 

//neo4j 업그레이드할 수 있을 수 있도록 설정

#allow_store_upgrade = true

// 사이퍼 쿼리 버전 설정

#cypher_parser_version = 1.6

 

// 원격 클라이언트 연결할 수 있도록 서버에서 쉘 사용 Neo4j 쉘.

#remote_shell_enabled = true

// 지정한 사용자 지정 셸 포트 (기본값은 1337).

#remote_shell_port = 1234

 

  1. /neo4j/conf/neo4j-wrapper.conf

wrapper.java.additional=-Dorg.neo4j.server.properties=conf/neo4j-server.properties

wrapper.java.additional=-Djava.util.logging.config.file=conf/logging.properties

wrapper.java.additional=-Dlog4j.configuration=file:conf/log4j.properties

 

// 자바 추가 매개 변수

wrapper.java.additional=-XX: + UseConcMarkSweepGC

wrapper.java.additional=-XX: + CMSClassUnloadingEnabled

 

// 가비지 수집 로깅을 사용 설정

#wrapper.java.additional=-Xloggc:data/log/neo4j-gc.log

#wrapper.java.additional=-XX: + PrintGCDetails

#wrapper.java.additional=-XX: + PrintGCDateStamps

#wrapper.java.additional=-XX: + PrintGCApplicationStoppedTime

// 초기 자바 힙 크기 (MB)

#wrapper.java.initmemory=3

// 최대 자바 힙 크기 (MB)

#wrapper.java.maxmemory=64

// 응용 프로그램 매개 변수입니다. 1에서 시작 하는 데 필요한 매개 변수를 추가

wrapper.java.app.mainclass=org.neo4j.server.Bootstrapper

// lockfile 설정

wrapper.pidfile=./data/neo4j-server.pid

wrapper.lockfile=./data/neo4j-server.lck

 

  1. 서비스 시작/중지

# bin/neo4j start

WARNING: Max 1024 open files allowed, minimum of 40 000 recommended. See the Neo4j manual.

WARNING! You are using an unsupported Java runtime. Please use Oracle(R) Java(TM) Runtime Environment 7.

Using additional JVM arguments: -server -XX:+DisableExplicitGC -Dorg.neo4j.server.properties=conf/neo4j-server.properties -Djava.util.logging.config.file=conf/logging.properties -Dlog4j.configuration=file:conf/log4j.properties -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -Dcom.sun.management.jmxremote.port=3637 -Dcom.sun.management.jmxremote.authenticate=true -Dcom.sun.management.jmxremote.password.file=conf/jmx.password -Dcom.sun.management.jmxremote.access.file=conf/jmx.access

Starting Neo4j Server...process [452]... waiting for server to be ready......... OK.

Go to http://localhost:7474/webadmin/ for administration interface.

 

# bin/neo4j stop

Stopping Neo4j Server [26380].... done

      

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  1. Neo4j 기본 조작 명령어
    1. /bin/neo4j – neo4j server 구동을 위한 명령

    neo4j <command>

     

    COMMANDS

    console

    foreground 로 서버를 실행. 중지는 CTRL-C.

    start / stop / restart

    서비스를 시작 / 중지 / 재시작

    status

    상태 확인.

    install

    최초 서버 설치시 사용함.

    remove

    서버를 삭제

    info

    간단한 기본 설정 확인 NEO4J_HOME CLASSPATH.

     

    1. /bin/neo4j-shell – neo4j 클라이언트 접속 명령

    neo4j-shell [REMOTE OPTIONS]

    neo4j-shell [LOCAL OPTIONS]

     

    REMOTE OPTIONS

    -port PORT

    접근포트 지정(default: 1337).

    -host HOST

    호스트 지정 (default: localhost).

    -name NAME

    RMI 지정 (default: shell).

    -readonly

    읽기전용으로 접속

     

    LOCAL OPTIONS

    -path PATH

    접근할 DB 경로 지정, 경로에 DB가 없다면 새로 생성함.

    -pid PID

    PID로 DB 접속

    -readonly

    읽기 전용.

    -c COMMAND

    쿼리 실행 후 접속 종료

    -config CONFIG

    설정 파일 위치 지정

     

    경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
    어린이용이며, 설치가 필요없는 브라우저 게임입니다.
    https://s1004games.com

    사용 얘제.

    #neo4j-shell

    #neo4j-shell -port 1337

    #neo4j-shell -host 192.168.1.234 -port 1337 -name shell

    #neo4j-shell -host localhost -readonly

     

    #neo4j-shell -path /path/to/db

    #neo4j-shell -path /path/to/db -config /path/to/neo4j.properties

    #neo4j-shell -path /path/to/db -readonly

     

    1. /bin/neo4j-backup – neo4j 백업 명령

    neo4j-backup -from SourceURI -to Directory

     

    백업타입

    SOURCE URI

    <running mode>://<host>[:<port>][,<host>[:<port>]]…

     

    running mode

    'single' 또는 'ha'.

    'ha' "고가용성모드에서 인스턴스.

    'single' 독립 실행형 데이터베이스.

     

    사용예제

    #mkdir /mnt/backup/neo4j-backup

    #neo4j-backup -from single://192.168.1.34 -to /mnt/backup/neo4j-backup

    #neo4j-backup -from single://freja -to /mnt/backup/neo4j-backup

    #neo4j-backup -from single://freja:9999 -to /mnt/backup/neo4j-backup

    #neo4j-backup -from ha://oden:5002 -to /mnt/backup/neo4j-backup

    #neo4j-backup -from ha://oden:5001,loke:5002 -to /mnt/backup/neo4j-backup

     

 

  1. Cypher Query

    Neo4j에서 이용되는 쿼리문

  • START요소 Id 또는 인덱스 조회를 통해 얻은 그래프에서 출발점.
  • MATCH그래프 패턴을 일치START 에서 시작 포인트에 바인딩.
  • WHERE조건절.
  • RETURN결과값을 반환.
  • CREATE노드  관계를 생성.
  • DELETE노드관계  속성을 제거.
  • SET 속성을 설정(=update).
  • FOREACH목록에 요소에  번씩 업데이트 작업을 수행.
  • WITH여러 개의 쿼리를 나누어 부분.

 

  • Create 문.

단일노드 만들기

CREATE n;

 

노드생성 및 속성값 부여.

CREATE (a {name : 'Andres'})

RETURN a;

 

CREATE n = {name : 'Andres', title : 'Developer'};

 

노드간 relationship 생성

START a=node(1), b=node(2)

CREATE a-[r:RELTYPE]->b

RETURN r;

 

START a=node(1), b=node(2)

CREATE a-[r:RELTYPE {name : a.name + '<->' + b.name }]->b

RETURN r;

 

CREATE p = (andres {name:'Andres'})-[:WORKS_AT]->neo<-[:WORKS_AT]-(michael {name:'Michael'})

RETURN p;

 

Ex)

CREATE (ee { name: "Emil", from: "Sweden" }) RETURN ee.name;

-데이터를 만드는 CREATE 절.

-() 괄호는 노드를 나타내는

-ee 새 노드에 대 한 변수

- {} 괄호 노드에 속성을 추가 하려면

-RETURN 절이 나타냅니다 반환 하려면 어떤 데이터

-'ee' 노드의 name 속성을 반환.

 

  • Delete 문

단일 노드 삭제

START n = node(4)

DELETE n

 

노드와 relationship 삭제

START n = node(3)

MATCH n-[r]-()

DELETE n, r

 

속성제거

START andres = node(3)

DELETE andres.age

RETURN andres

 

  • Set 문

속성 업데이트

START n = node(2)

SET n.surname = 'Taylor'

RETURN n

 

속성 삭제

START n = node(2)

SET n.name = null

RETURN n

 

속성 복사

START at = node(2), pn = node(1)

SET at = pn

RETURN at, pn

 

  • start 문

단순 노드 select

START n=node(1)

RETURN n

 

단순 relationship 확인

START r=relationship(0)

RETURN r

 

모든 노드 select

START n=node(*)

RETURN n

 

속성값으로

START n=node:nodes(name = "A")

RETURN n

 

Ex)

START ee=node(*) WHERE ee.name! = "Emil" RETURN ee;

 

- START 절 쿼리를 시작

-ee=node(*)모든 노드를 통해 검색

-WHERE 조건절 시작

-ee.name! name = "Emil" 비교

-RETURN 결과 출력.

 

  • macth 문

연관된 노드 확인

START n=node(3)

MATCH (n)--(x)

RETURN x

 

방향성 노드 확인

START n=node(3)

MATCH (n)-->(x)

RETURN x

 

Relationship 을 만족하는 노드 출력

START n=node(3)

MATCH (n)-[r]->()

RETURN r

 

START n=node(3)

MATCH (n)-[:BLOCKS]->(x)

RETURN x

 

START a=node(3), x=node(2, 4)

MATCH a-[:KNOWS*1..3]->x

RETURN a,x

 

Where 절을 포함한 구문

START david=node(1)

MATCH david--otherPerson-->()

WITH otherPerson, count(*) as foaf

WHERE foaf > 1

RETURN otherPerson;

 

Ex)

START ee=node(*) MATCH (ee)-[:KNOWS]->(friends) WHERE ee.name! = "Emil" RETURN friends;

 

-MATCH 절

에밀으로 패턴을 시작 하는

-(ee)-[: KNOWS]-> "freinds" knows 라는 관계와 매칭되는

- RETURN 결과값 출력.

 

 

 

  1. Webadmin

    Advanced 이상의 버전에서만 제공되는 웹으로 구현된 UI

    http://localhost:7474/webadmin/

     

  • Dash board

 

  1. 현재 노드 및 속성,관계, DISK 사용 상태를 표시해줌.
  2. 실시간으로 갱신됨 .
  • Data browser

  1. 사이퍼쿼리를 수행 할 수 있음.
  2. GUI 환경으로 Node를 추가

  1. Node 의 속성 및 속성값 추가
  2. 현재 Node와 연관된 관계 출력

  1. 관계 생성 및 속성 추가

3.1 관계 시작 Node 지정

3.2 관계의 type(이름)을 지정

3.3 관계와 연관되는 Node 지정

 

  1. 쿼리를 그래프로 자동 표현

 

 

  • Console

콘솔화면을 웹으로 구현가능함.

        

1.Neo4j-sheell 화면으로 전환

2.Gremlin shell 화면으로 전환

3.http 테스트를 위한 shell 전환

  • Indexes

DB에 인덱스 생성기능을 제공함

 

  • Server info

콘솔에서 확인가능한 설정 정보를 확인 할 수 있음..

 

  1. 정리

    Neo4j가 빅 데이터는 아니지만, 소셜 기능, 추천 기능 등에 활용에 적합 할 것으로 예상된다.

    그래프의 특징을 이용해서 구현을 해야 된다면 사용을 고려 해 볼만 하다. java에서 Spring Data Neo4j을 지원하고 있어

    보다 쉽게 구현이 가능하지만 기타 언어에서는 rest API 를 통하여 이용이 가능하다 하지만 구현이 상대적으로 쉽지 않을 것 같다.

[출처] https://woner.tistory.com/25

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
121 Java에서 JSON 문자열 생성 및 JSON 문자열을 자바 객체로 변환하기 졸리운_곰 2020.09.24 218
120 Jackson 라이브러리를 활용한 Map to Json Serialization 처리 졸리운_곰 2020.09.24 249
119 Mybatis selectMap 예제 file 졸리운_곰 2020.09.24 2362
118 스프링 myBatis JSON 형식 입력하고 출력하기 : Spring myBatis JSONType input output 졸리운_곰 2020.09.24 274
117 Java code example to export from database to CSV file file 졸리운_곰 2020.09.24 205
116 Export Oracle table to CSV file in Java 오라클 테이블을 CSV 파일로 변환 졸리운_곰 2020.09.24 760
115 Spring Batch and MongoDB 졸리운_곰 2020.09.21 307
114 Spring Batch to Read From MongoDB and Generate XML Files 졸리운_곰 2020.09.21 160
113 Spring Batch Goodies With MongoDB 졸리운_곰 2020.09.21 143
112 MongoBatis Ver 1.04 in SpringFrameWork (mongoDB + MyBatis) file 졸리운_곰 2020.09.21 207
111 Spring 몽고DB 연동 졸리운_곰 2020.09.21 182
110 MongoDB CRUD with Java Driver 몽고디비 java 연결 및 CRUD 테스트 졸리운_곰 2020.09.21 777
109 LinkedList - Java 구현 file 졸리운_곰 2020.03.25 181
108 MyBatis 에서 procedure 처리 졸리운_곰 2020.01.27 1142
107 neo4j 시작하기 졸리운_곰 2019.12.25 256
106 Neo4J Cypher 가이드 file 졸리운_곰 2019.12.25 273
» [DB] neo4j를 정리하자. file 졸리운_곰 2019.12.25 488
104 [java] HangulParser – 한글 자소 조합과 분리 졸리운_곰 2019.12.11 1672
103 Java 예제: 한글 초성 중성 종성 분리 (자모분리) 졸리운_곰 2019.12.11 365
102 [java] 유니코드 자음 모음으로 분리 했다 다시 붙이기 file 졸리운_곰 2019.12.11 416
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED