Neo4j 是當今市場圖數據庫的領袖, 它具備可伸縮性和高可用性等企業級功能,是知足咱們需求的最佳選擇.php
圖數據庫解決哪類問題?正則表達式
爲何選擇Neo4j?數據庫
關係型數據庫不能很好地處理關係瀏覽器
NoSQL 數據庫不處理關係bash
Neo4j是基於Java的圖形數據庫,運行Neo4j須要啓動JVM進程,所以必須安裝JAVA SE的JDKide
#第一步:安裝jdk
ui
wget -c http://download.cashalo.com/schema/auto_jdk.sh source auto_jdk.sh
#第二步:執行以下自動化安裝腳本
spa
#!/bin/bash #neo4j 安裝 #1)設置hosts綁定 IP=`ifconfig|sed -n 2p|awk '{print $2}'|cut -d ":" -f2` echo "$IP neo4j" >>/etc/hosts #2)下載安裝neo4j cd /home/tools wget -c https://neo4j.com/artifact.php?name=neo4j-community-3.4.14-unix.tar.gz tar zxvf artifact.php\?name\=neo4j-community-3.4.14-unix.tar.gz -C /usr/local/ ln -s /usr/local/neo4j-community-3.4.14 /usr/local/neo4j-community #3)配置環境變量 cat >/etc/profile.d/neo4j <<EOF export NEO4J_HOME=/usr/local/neo4j export PATH=\$PATH:\$NEO4J_HOME/bin EOF source /etc/profile.d/neo4j #4) 配置資源 sed -i 's/#dbms.memory.heap.initial_size=512m/dbms.memory.heap.initial_size=2048m/g' /usr/local/neo4j-community/conf/neo4j.conf sed -i 's/#dbms.memory.heap.max_size=512m/dbms.memory.heap.max_size=2048m/g' /usr/local/neo4j-community/conf/neo4j.conf sed -i 's/#dbms.connectors.default_listen_address=0.0.0.0/dbms.connectors.default_listen_address=neo4j/g' /usr/local/neo4j-community/conf/neo4j.conf #5) 配置neo4j啓動腳本 cat >/etc/init.d/neo4j <<EOF #!/bin/bash ### BEGIN REDHAT INFO # chkconfig: 2345 99 20 # description: Neo4j Graph Database server SCRIPTNAME=\$0 NEO4J_CONF=/usr/local/neo4j-community/conf NEO4J_HOME=/usr/local/neo4j-community NEO_USER=root NEO4J_ULIMIT_NOFILE=60000 PATH=/sbin:/usr/sbin:/bin:/usr/bin NAME=neo4j DAEMON=\${NEO4J_HOME}/bin/\${NAME} PIDDIR=\${NEO4J_HOME}/run PIDFILE=\${PIDDIR}/neo4j.pid SCRIPTNAME=/etc/init.d/\${NAME} SYSTEMCTL_SKIP_REDIRECT=1 [ -x "\$DAEMON" ] || exit 0 #[ -r \${NEO4J_CONF}/\${NAME}.conf ] && . \${NEO4J_CONF}/\${NAME}.conf [ -n "\${NEO_USER}" ] || NEO_USER=\${NAME} # Debian distros and SUSE has_lsb_init() { test -f "/lib/lsb/init-functions" } # RedHat/Centos distros has_init() { test -f "/etc/init.d/functions" } if has_lsb_init ; then . /lib/lsb/init-functions elif has_init ; then . /etc/init.d/functions else echo "Error: your platform is not supported by \${NAME}" >&2 exit 1 fi do_start() { do_ulimit [ -d "\${PIDDIR}" ] || mkdir -p "\${PIDDIR}" chown "\${NEO_USER}:" "\${PIDDIR}" if has_lsb_init ; then start-stop-daemon --chuid \${NEO_USER} --start --quiet --oknodo --pidfile \${PIDFILE} --exec \${DAEMON} -- start else daemon --user="\${NEO_USER}" --pidfile="\${PIDFILE}" "\${DAEMON} start > /dev/null 2>&1 &" fi } do_stop() { \${DAEMON} stop } do_status() { if has_lsb_init ; then status_of_proc -p "\${PIDFILE}" "\${DAEMON}" "\${NAME}" else status -p "\${PIDFILE}" "\${NAME}" fi } do_ulimit() { if [ -n "\${NEO4J_ULIMIT_NOFILE}" ]; then ulimit -n "\${NEO4J_ULIMIT_NOFILE}" fi } case "\$1" in start) do_start ;; stop) do_stop ;; status) do_status ;; restart|force-reload) do_stop && do_start ;; *) echo "Usage: \$SCRIPTNAME {start|stop|status|restart|force-reload}" >&2 exit 3 ;; esac EOF #6) 設置權限 chmod +x /etc/init.d/neo4j #7) 啓動neo4j service neo4j start #8) 配置開機自啓動 chkconfig neo4j on
進入瀏覽器的7474界面設計
Cypher 語言3d
「Cypher」是一個描述性的類Sql的圖操做語言。至關於關係數據庫的Sql,可見其重要性!
其語法針對圖的特色而設計,很是方便和靈活。
沒有Join,是一大特色!
Cypher是一個申明式查詢語言,適合於開發者和在數據庫上作點對點模式(ad-hoc)查詢。
Cypher經過一系列不一樣的方法和創建於肯定的實踐爲表達查詢而激發的。許多關鍵字如like和order by是受SQL的啓發。正則表達式匹配實現模仿Scala 語言。
學好Cypher是學好Neo4j的關鍵,也是核心所在!
Create語法
create (n:Person {id:'20140101',name:'王五',age:30,card:123456})
至關於關係Sql的:
Create table Person(
id varchar2,
name varchar2,
age number,
card number );
Insert into Person values(‘20140101’,’王五’,30,123456);
Neo4j 字段類型
Match
Match查詢語法
Match 至關於select
MATCH (n:Person) RETURN n limit 25
等價於:
Select * from Person limit 25