Neo4j 学习笔记

Ne04j

简介

  • 一种Native graph database,即 本机图数据库系统。采用自定义的数据结构在本地硬盘存储图,而不是存在数据库关系型表中
  • 开源 Java 实现

Neo4j 存储

  • 顶点:node
  • 边:relationship
  • 顶点和边都可以有多个 key-value 对:成为 property

Neo4j 使用

  • Cypher:Declarative query language(声明式查询语言)
  • Traversal:Embedded Java lib

Cypher

Node

(name:type, {property_key:value, property_key:value...})

前面的 name:type 中,
name 表示该 Node 的名称
type 即为该 Node 的类型

后面的大括号内容中,即为多个 key-value 构成的 property

例子:

// 只有name
(Jerry)
// 有name,且有type
(Jerry:Dog)
// 有name,且有唐type,还有property
(Jerry:Dog, {name:"Jerry", sex:"male", age:"1"})
(爱玛:Vehicle,{name:"爱玛"})

Relationship

-[name:type, {property_key:value, property_key:value...}]->

其与 Node 的主要差别即为最外围的括号不是小括号,而是中括号,括号外还有形似箭头的组合字符。

-[:Cycling]->
-[:Cycling,{place:home, time: morning}]->

文件存储

分别存储所有的Node、Relationship 和 Property 的文件

  • Node store、Ralationship store、Property store文件
  • unique id:每个 node,relationship,property 都有自己的 unique id

Ralationship 双向链表

  • 同一个 node 的 relationship 形成一个双向链表
  • 链接指针为 relationship id
  • 相应的 node 中记录链表的第一个 relation id

Property 单向链表

  • 同一个 node/relationship 的 property 形成一个单向链表
  • 链接指针为 next property id
  • 链表第一个 property id 存在对应的 node/relationship 中

内存缓冲

OS 的文件系统有缓冲池,如页表

Node/Rel cache

  • Neo4j 对 node,relationship 和 property 缓冲
  • 内部的数据结构是以 node 和 relationship 为主要单位的,而 Property 是以附加形式加在 node 和 relationship 上

写文件

  • 一个 transaction(即事务,对数据库的一次操作请求)的写先保存,直至 transaction.finish() 时,才真正尝试修改数据
  • 采用了 transaction Log

HA,即 High Availability(高可用)

  • 采用多副本
  • 主副本把 transaction log 发送到从副本
  • 从副本 replay log 从而执行同样的操作
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三更鬼

谢谢老板!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值