Neo4J粗谈
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
A Graph Database navigates a Document Store
Neo4j Highlights
true ACID transactions
high availability
scales to billions of nodes and relationships
high speed querying through traversals
文档型数据库 CouchDB, MongoDb 图结构数据库 Neo4J, InfoGrid, Infinite Graph
数据库总排名
http://db-engines.com/en/ranking
数据库总排名
图数据库排名
Method of calculating the scores of the DB-Engines Ranking
嵌入式的数据库
实例
图的创建 图的查询
根本原因分析
创建图
CREATE (A1:Device { name: "A1", status: "normal"}), (A2:Device { name: "A2", status: "normal"}), (B1:Device { name: "B1", status: "normal"}), (B2:Device { name: "B2", status: "normal"}), (B3:Device { name: "B3", status: "unavailable"}), (B4:Device { name: "B4", status: "normal"}), (C1:Device { name: "C1", status: "unavailable"}), (C2:Device { name: "C2", status: "normal"}), (C3:Device { name: "C3", status: "normal"}), (C4:Device { name: "C4", status: "unavailable"}),
Number of mentions of the system on websites. General interest in the system. Frequency of technical discussions about the system. Number of job offers, in which the system is mentioned. Number of profiles in professional networks, in which the system is mentioned.
MATCH (john {name: 'John'})-[:friend]->()-[:friend]->(fof) RETURN john, fof
例子2
找出朋友名字以S开头的组合 MATCH (user)-[:friend]->(follower) WHERE user.name IN ['Joe', 'John', 'Sara', 'Maria', 'Steve'] AND follower.name =~ 'S.*' RETURN user, follower.name
关系总是有方向的,关系可以被看做相关节点的进和出,这对于图的遍历 是很有用的
注意,一个节点可以对自己产生关系
Properties
节点和关系都可以有属性。 属性是一个键值对,KEY是一个 String。属性值可以是原始类型或 者一个原始类型的数组。举例, String,int和int[]都是设立的属 性值。
数据库历史
1923年,CTR发明了首款电动打孔机
数据库历史
1 9 5 0 年雷明顿兰德公司推出的 Univac I 一秒钟可以输入数百条记录的磁带驱动器
数据库历史
汞延迟线
数据库历史
1956 年IBM生产出第一个磁盘驱动器 ——Model 305 RAMAC
数据库历史
60 年代数据库系统的萌芽。
Neo4j is a Graph Database
A Graph Database —manages a→ Graph and —also manages related→ Indexes
Comparing Database Models
A Graph Database transforms a RDBMS
Structure
MATCH: 图模式匹配。这是最常用的从图里面获取数据的途径。
WHERE: 理论上不算一个从句, 应该算是 MATCH、OPTIONAL MATCH 和
WITH的一部分。为一个模式添加约束,或者通过WITH过滤中间结果。
RETURN: 返回
例子1
找出John和John的朋友们(间接的朋友关系) 并返回John和所有找到的间接朋友。
在一个社交网络,需要找到用户所有的朋友的 朋友。甚至是朋友的朋友的朋友。 于是,用同样为100万用户的MySQL和Neo4j执 行这个查询,并且结果是非常惊人的。
friends of friends friends of friends of friends . .
Neo4j Developer Productivity Increase
What is a Graph Database?
图论
欧拉
1736年哥尼斯堡七桥
开创了数学的一个新的分支 ——图论与几何拓扑
A Graph contains Nodes and Relationships
A Graph —records data in→ Nodes —which have→ Properties
Structure
CREATE (and DELETE): 创建(删除)节点和关系。
SET (and REMOVE):在节点上用SET设置属性的值或 者添加Label,并用REMOVE 删除他们。 MERGE: 匹配现有的或者创建新的节点和模式。这对 于连接独特的约束条件是非常有用的。
Query a Graph with a Traversal
A Traversal —navigates→ a Graph; it —identifies→ Paths —which order→ Nodes
Indexes look-up Nodes or Relationships
An Index —maps from→ Properties —to either→ Nodes or Relationships
CEO of Polar Rose
Johan Svensson
CTO of Neo Technology
Emil Eifrem CEO of Neo Technology
Biblioteka Baidu
Featured Customers
How much faster is a graph database
一个非常有意思的实验
A Graph Database elaborates a Key-Value Store
A Graph Database relates Column-Family
Column Family (BigTable-style) databases are an evolution of key-value, using "families" to allow grouping of rows. Stored in a graph, the families could become hierarchical, and the relationships among data becomes explicit.
1961:通用电气 开发了第一个数据库管理系统——IDS 1969: E.F. Codd发明了关系数据库。 1973:Cullinane公司开发了 IDMS ——一个针对IBM主机的基于网络模型的数据库。 1976:Honeywell公司推出了Multics Relational Data Store ——第一个商用关系数据库产品。 1979:Oracle公司引入了第一个商用SQL关系数据库管理系统。 1983:IBM推出了DB2数据库产品。 1985:为Procter & Gamble系统设计的第一个商务智能系统产生。 1991:W.H.“Bill” Inmon发表了”构建数据仓库”。
declarative graph query language
Language Drivers
Friends of Neo4j speak many languages, and work in many frameworks.
下载
http://www.neo4j.org/download
引言
奴隶制 (程序猿 Nigger) 被繁杂的代码、被无数的Bug、被冗长的SQL所奴役 想法变为产品是一个痛苦的过程 开发者的奴性
西方的解放运动
缘起
1999 我们十位工程师花去了他们大部分的时间与关 系型数据库抗衡。 起因,我们意识到我们的软件不是管理一堆个体的、 孤立的、离散的数据项,而是管理他们之间的关系。 虽然能够很容易的将离散数据存入关系表中,但是 对于其关系数据的存储是具有很大挑战的,并且查 询速度也是慢的惊人 现在版本2.0.1
Paths
Path是一个或者多个节点和他们之间的关系,代表一个查询或遍历的结果。
Paths
最短的path长度为0:
长度为1的path
其他长度为1的path
Traversal
Traversal 一个图就是根据一些规则访问他的节点和 关系。大多数情况下只有子图被访问,就像你已经 知道从图的哪里可以找到感兴趣的节点和关系。
Neo Technology, Inc.
headquartered in San Mateo, CA
Rod Johnson founder of the Spring Framework Nikolaj Nyholm Magnus Christersen Vice President of Intentional Software Corp
Properties
Labels
Label是一个图结构,用来将节点组成集合,所有用同一个label被标记的节点属于 一个集合。 许多数据库查询可以运行在这些集合中而不是整个图,这样使得查询更易编写和更 有效率。 一个节点可以被多个label标记,也可以没有label,label是图的可选项。 Label 用于定义约束和为属性增加属性。
Cypher相当于关系型数据库中的SQL。Cypher书写直观可以不用 编写复杂的查询代码即可实现对图数据库的操作。 ----百度百科 Cypher是一种声明式图查询语言,且对于图存储的查询及更新 操作具有高可读性和高效性。 Cypher 是一种非常简单而且强大的语言。通过Cypher 可以表达 非常复杂的数据库查询。 因此让你可以更关注你的领域,而不是迷失在数据库存储里面。
“Neo4j”
Neo
Investors
Neo Technology is a privately held company funded by Fidelity Growth Partners Europe, Sunstone Capital and Conor Venture Partners
数据库历史
传统数据库系统
网状数据库 层次数据库 关系数据库
数据库历史
数据模型
层次模型
网状模型
关系模型
面向对象模型
半结构化模型
NoSQL数据库
key-value存储 Tokyo Cabinet/Tyrant, Redis, Voldemort, Oracle BDB
列式数据库 Cassandra, HBase, Riak
Schema
Neo4j是一个schema可选的图数据库。 Indexes 创建索引可以提升性能,可以提升在数据库中查 找节点的速度。 Constraints Neo4j可以帮助你的数据整洁。用一些特殊的规则 来定制约束。任何破坏这些规则的改变将被拒绝。
Cypher Query Language
Introduction
启动
启动
Webadmin
Browser
The Neo4j Graph Database
Nodes
Relationships Properties Labels Paths Traversal Schema
Nodes
Relationships
Relationships
一个关系包含两个节点,而且开始和结束节点是有效的。
Relationships organize the Graph
Nodes —are organized by→ Relationships —which also have→ Properties
Labels group the Nodes
Nodes —are grouped by→ Labels —into→ Sets