6

你知道Neo4j这是什么数据库吗?有什么用吗?

 4 years ago
source link: http://mp.weixin.qq.com/s?__biz=MzU2ODk2NDMwNw%3D%3D&%3Bmid=2247484015&%3Bidx=1&%3Bsn=7028475c61ef6bbd3b499fe40e625bbf
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

欢迎关注公众号【 Ccww笔记 】,原创技术文章第一时间推出

前言

aQRNV3A.jpg!web

你和任何一个陌生人之间所间隔的人不会超过六个

即最多通过6个中间人你就能够认识任何一个陌生人

对于一个社交网络APP,一定会存在着错综复杂的用户关系以及用户属性,在数据库表的设计中除了要存储每个用户的姓名、性别、喜好这些基本信息外,还需要存储一个用户和哪些用户是朋友 ,和哪些用户是亲人等这些关系数据的用户关系,那 Neo4j图数据库 就该出场了。

那Neo4j图数据库是什么呢?

Neo4j是一个高性能的,NOSQL数据库,它将结构化数据存储在网络上而不是表中。它是一个嵌入式的、基于磁盘的、具备完全的事物特性的java持久化引擎。Neo4j也可以看作是一个高性能的图引擎,该引擎具有成熟数据库所有特性。

Neo4j图数据库适用的场景

  • 社交媒体和社交网络图:以Neo4j图形数据库为基础,社交网络APP可以轻松处理社交关系或根据活动推断关系。

  • 知识图谱:基于Neo4j数据类型以及图形的强大搜索功能, 由知识点之间的关系建立知识图,帮助用户搜索到关联的知识 。

  • 反欺诈多维关联分析:通过图分析可以清楚的知道洗钱网络及相关嫌疑,例如对用户所使用的账号、发生交易时的IP地址、MAC地址、手机IMEI号等进行关联分析

  • 企业关系图谱:企业在日常经营中,与客户、合作伙伴、渠道方、投资者都会打交道,这也决定了企业对社会各个领域都广有涉猎,呈现面错综复杂,因此可以通过Neo4j的企业数据图谱来查询,层层挖掘信息。

  • 推荐:基于Neo4j的优势进行个性化推荐, 通过分析用户有哪些朋友、用户朋友喜好的产品、用户的浏览记录等关系信息推测用户的喜好进而为用户推荐商品

  • ...

那为什么需要Neo4j图数据?

  • 它很容易表示连接的数据

  • 检索/遍历/导航更多的连接数据是非常容易和快速的

  • 它非常容易地表示半结构化数据

  • Neo4j CQL查询语言命令是人性化的可读格式,非常容易学习

  • 使用简单而强大的数据模型

  • 它不需要复杂的连接来检索连接的/相关的数据,因为它很容易检索它的相邻节点或关系细节没有连接或索引

那Neo4j怎么存储错综复杂的用户关系?

Neo4j图数据库遵循属性图模型来存储和管理其数据 ,其中属性图模型规则

  • 表示节点,关系和属性中的数据

  • 节点和关系都包含属性

  • 关系连接节点

  • 属性是键值对

  • 节点用圆圈表示,关系用方向键表示。

  • 关系具有方向:单向和双向。

  • 每个关系包含“开始节点”或“从节点”和“到节点”或“结束节点”

在属性图数据模型中,关系应该是定向的, 关系也应该是有方向性的

Neo4j使用本机GPE(图形处理引擎)引擎来使用它的本机图存储格式

属性图模型主要构建块

  • 节点:图表的基本单位。它包含具有键值对的属性

  • 关系:连接两个节点 , 每个关系包含一个起始节点和一个结束节点 , 关系也可以包含属性作为键值对

  • 属性:用于描述图节点和关系的键值对

  • 标签 :Label将一个公共名称与一组节点或关系相关联。节点或关系可以包含一个或多个标签

  • 数据浏览器 :一旦我们安装Neo4j,我们可以访问Neo4j数据浏览器使用以下URL

    http:// localhost:7474 / browser /

ARjQfeq.png!web

使用圆圈表示节点。使用箭头的关系。关系是有方向性的。我们可以用Properties(键值对)来表示Node的数据。

在上图中,社交网络图包含为“人”的数据节点,分别代表五个用户。每个数据节点还包含人的基本属性信息等等,用于表示两个用户的基本信息,就如同常规数据库中的两行数据。

每两个数据节点之间关系数据,如Ccww与Ccww1的用户是父子关系。利用这些关系数据,你就可以方便的作出基于关系的查询,这就是图数据库的优势。

标签man和woman,可以为现有节点或关系创建新标签,也可以从现有节点或关系中删除现有标签, 两个节点之间的关系,也有一个标签 。

那么Neo4j操作命令呢?

Neo4j - CQL代表Cypher查询语言。像Oracle数据库具有查询语言SQL,Neo4j具有CQL作为查询语言:

  • 它是Neo4j图形数据库的查询语言。

  • 它是一种声明性模式匹配语言

  • 它遵循SQL语法。

  • 它的语法是非常简单且人性化、可读的格式。

常用的Neo4j CQL命令

CQL命令/条 用法 CREATE 创建 创建节点,关系和属性 MATCH 匹配 检索有关节点,关系和属性数据 RETURN 返回 返回查询结果 WHERE 哪里 提供条件过滤检索数据 DELETE 删除 删除节点和关系 REMOVE 移除 删除节点和关系的属性 ORDER BY以…排序 排序检索数据 SET 组 添加或更新标签

Neo4j CQL 函数

定制列表功能 用法 String 字符串 它们用于使用String字面量。 Aggregation 聚合 它们用于对CQL查询结果执行一些聚合操作。 Relationship 关系 他们用于获取关系的细节,如startnode,endnode等。

Neo4j CQL数据类型

CQL数据类型 用法 boolean 用于表示布尔文字:true,false。 byte 用于表示8位整数。 short 用于表示16位整数。 int 用于表示32位整数。 long 用于表示64位整数。 float I用于表示32位浮点数。 double 用于表示64位浮点数。 char 用于表示16位字符。 String 用于表示字符串。

在此先进行一轮简单的了解,会在后续的文章进行详细解析!!

各位看官还可以吗?喜欢的话,动动手指点个赞:heartpulse:,点个关注呗!!谢谢支持!

也欢迎关注公众号【 Ccww笔记 】,原创技术文章第一时间推出

bEfyqqj.png!web


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK