Neo4j的特点
- SQL就像简单的查询语言Neo4j CQL
- 它遵循属性图数据模型
- 它通过使用Apache Lucence支持索引
- 它支持UNIQUE约束
- 它它包含一个用于执行CQL命令的UI:Neo4j数据浏览器
- 它支持完整的ACID(原子性,一致性,隔离性和持久性)规则
- 它采用原生图形库与本地GPE(图形处理引擎)
- 它支持查询的数据导出到JSON和XLS格式
- 它提供了REST API,可以被任何编程语言(如Java,Spring,Scala等)访问
- 它提供了可以通过任何UI MVC框架(如Node JS)访问的Java脚本
- 它支持两种Java API:Cypher API和Native Java API来开发Java应用程序
Neo4j的优点
- 它很容易表示连接的数据
- 检索/遍历/导航更多的连接数据是非常容易和快速的
- 它非常容易地表示半结构化数据
- Neo4j CQL查询语言命令是人性化的可读格式,非常容易学习
- 它使用简单而强大的数据模型
- 它不需要复杂的连接来检索连接的/相关的数据,因为它很容易检索它的相邻节点或关系细节没有连接或索引
Neo4j的缺点或限制
- AS的Neo4j 2.1.3最新版本,它具有支持节点数,关系和属性的限制。
- 它不支持Sharding。
Neo4j属性图数据模型
Neo4j图数据库遵循属性图模型来存储和管理其数据。
属性图模型规则
- 表示节点,关系和属性中的数据
- 节点和关系都包含属性
- 关系连接节点
- 属性是键值对
- 节点用圆圈表示,关系用方向键表示。
- 关系具有方向:单向和双向。
- 每个关系包含“开始节点”或“从节点”和“到节点”或“结束节点”
在Neo4j中,关系应该是有方向性的,如果尝试创建没有方向的关系,那么Neo4j会抛出一个错误消息,即关系应该是方向性的。Neo4j图数据库将其所有数据存储在节点和关系中。
图形数据库数据模型的主要构建块是:
- 节点
- 关系
- 属性
Neo4j - 图形理论基础
图是一组节点和连接这些节点的关系。图形数据存储在节点和关系在属性的形式。属性是键值对表示数据。图形是一组节点和连接这些节点的关系。 图形以属性的形式将数据存储在节点和关系中。 属性是用于表示数据的键值对。
节点(圆圈)的属性可以用键值对来写,比如节点是某人,其中属性包括性别、年龄、联系方式等。两个节点之间的箭头即为“跟随”关系。
Neo4j CQL数据类型
Neo4j CQL 函数
Neo4j CQL命令/条款
CREATE命令
“CREATE”命令
- 创建没有属性的节点
- 使用属性创建节点
- 在没有属性的节点之间创建关系
- 使用属性创建节点之间的关系
- 为节点或关系创建单个或多个标签
#创建一个没有属性的节点,<node-name>为节点名,<label-name>为节点标签名
CREATE (<node-name>:<label-name>)#访问节点时应使用<label-name>。
#创建具有属性的节点
CREATE (
<node-name>:<label-name>
{
<Property1-name>:<Property1-Value> #属性是键值对格式
........
<Propertyn-name>:<Propertyn-Value>
}
)
MATCH命令
- 从数据库获取有关节点和属性的数据
- 从数据库获取有关节点,关系和属性的数据
MATCH (<node-name>:<label-name>)
RETURN子句
- 检索节点的某些属性
- 检索节点的所有属性
- 检索节点和关联关系的某些属性
- 检索节点和关联关系的所有属性
RETURN
<node-name>.<property1-name>,
........
<node-name>.<propertyn-name>
#dept是节点名称,deptno是de