一、Neo4j简介

Neo4j是开源的高性能图数据库,也是当前最流行的图数据库。你可能了解过elasticsearch,MongoDB,redis,etcd,HBase这类NoSQL,但你不一定了解过Neo4j,因为它确实比较小众。如果你已经了解过TigerGraph或者Titan,那也一定要掌握Neo4j,未来的图数据库领域,毫不夸张的说:Neo4j is always the best.

二、图、图数据库

图包含两种基本的数据类型:Nodes(节点) 和 Relationships(关系)Nodes 和 Relationships 包含key/value形式的属性。Nodes通过Relationships所定义的关系相连起来,形成关系型网络结构。属性(schema)并不是固定的,意味着可以随时拓展,相对于传统的关系型数据库来说,具有更好的便利行和扩展能力。

图形数据库是NoSQL数据库的一种类型,是以图形结构的形式存储数据的数据库。 它以节点,关系和属性的形式存储应用程序的数据。 正如RDBMS以表的“行,列”的形式存储数据,GDBMS以“图形”的形式存储数据。最常见例子就是社会网络中人与人之间的关系。关系型数据库用于存储“关系型”数据的效果并不好,其查询复杂、缓慢、超出预期,而图形数据库的独特设计恰恰弥补了这个缺陷。

三、Cypher是什么

Cypher是Neo4j进行图查询的语言,类似与SQL,也是声明式的查询语言。它的特点:

1.Cypher语句可以创建节点,创建关系,定义标签和属性,相当于SQL中的DDL。

2.Cypher可以对节点的某个属性创建索引,创建唯一约束,相当于SQL中的DDL。

3.Cypher可以通过指定的条件来查询节点和关系,相当于SQL中的DQL。

4.Cyper可以随时为节点新增(/修改/删除)标签,新增(/修改/删除)关系,新增(/修改/删除)属性,相当于SQL中的DML。

5.Cypher语句中允许使用变量,用来表示命名、绑定元素和参数。

6.Cypher中的常用关键字函数有如下几种,关键字和函数名不区分大小写。

1)创建:CREATE

2)匹配:MATCH,OPTIONAL MATCH

3)删除:DELETE,REMOVE,DROP

4)修改:SET

5)关键字:where,and,or,in,union,union all

6)函数:id(),labels(),relationships(),shortestpath(),startNode(),endNode()

四、Neo4j数据元素的基本概念

Node:节点,或者称为实体。节点的创建通过( )来表示

Label:标签,一个节点可以拥有多个标签。

Relationship:关系,节点之间可以用单向的箭头表示的相关逻辑。关系的创建通过 [ ] 来表示。

Relationship Type:关系类型,关系的分类。关系类型相对于关系,如同标签相对于节点。一条关系只可以指定一个关系类型,如果两个节点之间有多条关系,那么可以建立多条关系,并指定不同的关系类型。

Property:属性,用过key-value形式的键值对表示一个属性。节点和关系都可以设置属性。Property Key即属性的键。

Path:路径,一条路径就是包含一系列节点和节点关系的连续组合。

为方便理解上述的定义,通过一个简单的案例来演示,执行如下的Cypher,看看Neo4j究竟做了什么。

CREATE (database:Database {name:"Neo4j"})-[r:SAYS]->(message:Message {name:"Hello World!"}) RETURN database, message, r

可以通过Neo4j的浏览器界面看到执行后的结果,左侧标红的部分是新创建的Node Label, Relationship Type,Property Key

这里,创建database和message两个节点时,顺便创建了两个Label:Database和Message,创建了一条由database指向message的关系r,它的关系类型是SAYS,其中database节点的拥有一个属性,键为name,值为Neo4j,message节点也同样拥有一个属性,键为name,值为Hello World。而database和message只是节点的别名,r是关系的别名,Neo4j不会对别名做存储,所以无任何实际意义。

执行下面的Cypher一样可以查询出刚刚创建的节点和关系:

match (n:Database)-[r:SAYS]->(m:Message) RETURN n, m, r

下面的文章Cypher实战将详细演示Cypher语法。

Neo4j与Cypher相关推荐

  1. neo4j cypher_neo4j / cypher:悬挂查询参数

    neo4j cypher 一直以来,我一直在使用neo4j的密码查询语言, 迈克尔一直在告诉我在查询中使用参数,但是查询的性能始终可以接受,因此我没有必要. 但是,最近我正在研究一个数据集,并使用类似 ...

  2. (六)图数据neo4j之cypher(一)

    (六)图数据neo4j之cypher(一) 1.Cypher概述 cypher是一种声明式的图数据库查询语言,能高效的查询和更新图数据库,是依赖于模式的.所谓模式(Patterns)是就是众多节点和关 ...

  3. Neo4j常用Cypher查询语句

    Neo4j常用Cypher查询语句 作者:胡佳辉, CSDN博客:https://blog.csdn.net/gobitan [1] 查看图数据库中所有的标签 match (n) return dis ...

  4. Neo4j:Cypher – Neo.ClientError.Statement.TypeError:不知道如何添加Double和String

    我最近将支持Neo4j的应用程序从Neo4j 3.2升级到Neo4j 3.3,发现围绕类型强制的行为发生了有趣的变化,导致我的应用程序抛出了很多错误. 在Neo4j 3.2和更早版本中,如果将Stri ...

  5. Neo4j:Cypher –避免热切

    当心渴望的管道 尽管我喜欢Cypher的LOAD CSV命令使它容易地将数据获取到Neo4j中的方法,但它目前打破了最不惊奇的规则,因为它急切地在所有行中加载某些查询,即使是那些使用定期提交的查询. ...

  6. neo4j之cypher使用文档

    Cypher是图形数据库Neo4j的声明式查询语言. Cypher语句规则和具备的能力: Cypher通过模式匹配图数据库中的节点和关系,来提取信息或者修改数据. Cypher语句中允许使用变量,用来 ...

  7. Neo4j之Cypher概述

    第 3 章 Cypher 入门 这章的内容有些多,部分小节又会分为很多小片段,本章需要大家认真学习,重点掌握 3.1 Cypher 概述 3.1.1 Cypher是什么 Cypher 是一种声明式图数 ...

  8. Neo4J 与 Cypher 查询语言基础

    前言 图数据库,存储的是节点和关系,而不是表.在Neo4j中,节点和关系都由属性和标签描述. 在 Cypher 查询语句中,节点和关系的表述一般为: 节点:(Variable:Label1:Label ...

  9. 读书笔记——Neo4j实战 Cypher查询语言

    Cypher是对图形的声明查询语言, 使用图形模式匹配作为主要的机制作图形数据选择(包括只读和变更操作) . Cypher的声明模式匹配性质意味着可以通过描述想从它那里得到什么查询图形数据. 执行Cy ...

最新文章

  1. 发送经纬度坐标给指定手机
  2. 全球及中国碳交易行业十四五发展展望与建设趋势研究报告2022-2027年
  3. 物理化学 界面现象
  4. 【树的直径】 POJ 1985 Cow Marathon
  5. Java构建工具, ZeroC ICE, word2vec
  6. php编译称opcode文件,PHP源码保护和性能加速
  7. vnc 字体设置_Xterm字体大小的设置
  8. Java基础语法学习11——流程控制(循环)
  9. 风控人必知必会的征信知识
  10. 区块链 DAG分布式账本技术 DAG数据结构和基于区块的数据结构的差别 优势
  11. 2021 RoboCup机器人中国赛大学组比赛即将开始 智能佳为您提供适合的比赛平台
  12. java黄金分割点游戏_结对编程--黄金分割点游戏
  13. Python中的yield from语法
  14. 694.27公斤何登骥360搜索热头条 北方旱作国稻种芯功能水稻
  15. [GIS笔记] 闾国年:从地图到场景的创新发展
  16. 微信小程序分析送积分功能如何实现_微信小程序积分商城解决方案(一)
  17. 工艺角,PVT, TT,SS,FF,FS,SF
  18. Android Studio 3.x打开DDMS
  19. 摄影软文文案有哪些类型?
  20. 数据库提示错误代码ora 01688

热门文章

  1. 2020年教师计算机培训计划,2020年教师继续教育个人学习计划(精选3篇)
  2. 前端练习41 数组的空位填充
  3. c语言define需要分号骂,C语言中define的用法
  4. Understanding services:理解服务(Service)
  5. Service(服务)
  6. 视差图转为深度图_纽劢研习社 | 深度图的非深度讲解
  7. pycharm运行按钮灰色解决方法
  8. 实现自己的Tomcat、Servlet、多线程(线程池)处理请求
  9. 车载TBOX终端产品架构及功能简介
  10. PTA 5 动物发声模拟器(多态)分数 10