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

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
27 [java][maven] jar 파일 의존성 한번에 다운로드 maven 사용 졸리운_곰 2023.08.24 192
26 Prometheus + Grafana로 Java 애플리케이션 모니터링하기 file 졸리운_곰 2020.12.17 279
25 Blockchain Implementation With Java Code file 졸리운_곰 2019.06.16 338
24 Java 코드로 이해하는 블록체인(Blockchain) 졸리운_곰 2019.06.16 377
23 순수 Java Application 코드로 Restful api 호출 졸리운_곰 2018.10.10 415
22 WebDAV 구현을 위한 환경 설정 file 졸리운_곰 2017.09.24 268
21 [Java] Apache Commons HttpClient로 SSL 통신하기 졸리운_곰 2017.03.27 784
20 JSoup를 이용한 HTML 파싱 졸리운_곰 2017.03.04 320
19 jsoup을 활용해서 Java에서 HTML 파싱하는 방법 정리 file 졸리운_곰 2017.03.04 579
18 NSA의 Dataflow 엔진 Apache NiFi 소개와 설치 file 졸리운_곰 2017.01.23 630
17 wordpress-java-integration 자바와 워드프레스 통합 졸리운_곰 2016.12.30 298
16 Create New Posts in Wordpress using Java and XMLRpc 졸리운_곰 2016.11.14 268
15 자바로 POST 방식으로 통신하기, java httppost 클래스를 활용한 예제 졸리운_곰 2016.11.14 647
14 [Java]아파치 HttpClient사용하기 file 졸리운_곰 2016.11.14 301
13 Building a Search Engine With Nutch Solr And Hadoop file 졸리운_곰 2016.04.21 435
12 Nutch and Hadoop Tutorial file 졸리운_곰 2016.04.21 391
11 Latest step by Step Installation guide for dummies: Nutch 0. file 졸리운_곰 2016.04.21 305
10 Nutch 초간단 빌드와 실행 졸리운_곰 2016.04.21 681
9 Nutch로 알아보는 Crawling 구조 - Joinc 졸리운_곰 2016.04.21 536
8 A tiny bittorrent library Java: 자바로 만든 작은 bittorrent 라이브러리 file 졸리운_곰 2016.04.20 418
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED