Neo4j:相遇在数据库之海

Neo4j:相遇在数据库之海

哈啰,各位小伙伴,这里是每天进步一点点的花栗鼠小K

“转眼研究生余额不到30天了,回顾这两年来的研究生生活,简直精彩到了极致,两年时间比大学四年都丰富。不过玩归玩的,在学业上咱也没落下。犹记导师第一次组会,要求我们每人找一个 NoSQL 数据库研究透,第一次听到这个名词时,我还有点懵逼,于是就迷迷糊糊地挑选了 Neo4j 作为我要研究的数据库。”

呐,接下来呢,小K将带领大家一步步去了解、认识什么是 Neo4j

开始之前,照例先科普,什么是 NoSQL

NoSQL ,指的是非关系型的数据库。NoSQL 有时也称作Not Only SQL 的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称,具有非关系型、分布式、不提供ACID的数据库设计模式等特征

NoSQL 用于超大规模数据的存储。像 Google 或 Facebook 每天为用户收集万亿比特的数据。这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。

非关系型数据库和关系型数据库在性能的区别,可以用一张表来描述

RDBMS NoSQL
高度组织化结构化数据(SQL 不仅仅是SQL
结构化查询语言- 数据操纵语言,数据定义语言 没有声明性查询语言,没有预定义的模式
数据和关系都存储在单独的表中。 键-值对存储,列存储,文档存储,图数据库
严格的一致性 最终一致性,而非ACID属性
基础事务 满足 CAP 定理

具有高性能,高可用性和可伸缩性

NoSQLSQL 的应用上的区别,可以概括如下

SQL 数据库适合那些需求确定和对数据完整性要求严格的项目NoSQL 数据库适用于那些对速度和可扩展性比较看重的那些不相关的,不确定和不断发展的需求。简单来说就是:

  • SQL 是精确的。 它最适合于具有精确标准的定义明确的项目。典型的使用场景是在线商店和银行系统。
  • NoSQL 是多变的。 它最适合于具有不确定需求的数据。典型的使用场景是社交网络,客户管理和网络分析系统。

在理解了上述理论的基础上,我们开始进入正题



01


什么是Neo4j



Neo4j 是一个世界领先的开源的、无 schema 、没有 SQL 的图形数据库,是一个高性能的 NoSQL 图形数据库,在2020年10月份的DB-Engines NoSQL排行榜中位列第八,在图数据库中位列首位,热度还在持续上升中。Neo 技术是由Java语言完全开发的,它将结构化数据存储在网络上而不是表中。



02


为什么需要图数据库



简单来说,图数据库能够并且主要用于存储多元连接数据(multiple connection data)。

如果我们使用 RDBMS 数据库来存储多元连接的数据,那么它们不能提供用于遍历大量数据的适当性能。在这些情况下,图数据库提高了应用程序性能。

比如,下面这个 Google+ 的例子:

黄色圆圈表示 Google plus 的个人应用资料,角色 A 连接到两个圈子:家庭圈(B,C,D)和朋友圈(X,Y)

Neo4j:相遇在数据库之海

进入角色 B ,又会有如下联系:

Neo4j:相遇在数据库之海

像这样,这些应用程序包含大量的结构化,半结构化和非结构化的连接数据。在 RDBMS 数据库中表示这种非结构化连接数据并不容易。

如果我们在 RDBMS 数据库中存储这种多元连接数据,那么检索或遍历是非常困难和缓慢的,所以要表示或存储这种多元连接数据,我们应该选择一个图数据库。

如今,大多数社交网络应用程序(如 Facebook,Google +,LinkedIn,Twitter,Yamme 等)和视频托管应用程序(如 Google YouTube,Flickr,Yahoo Video 等)都在使用多元连接数据,这在一定程度上促进了图数据库的发展。



03


Neo4j的特点



  1. Neo4j 的特点
    • Neo4j CQL 语言就像是复杂化的 SQL 语言
    • 遵循属性图数据模型
    • 包含一个用于执行 CQL 命令的 UI 界面:Neo4j 数据浏览器
    • 支持完整的 ACID 规则
    • 采用原生图形库与本地 GPE (图形处理引擎)
    • 提供了REST API,能被任何编程语言(如 Java,python,Scala 等)访问
    • 提供了可以通过任何 UI MVC 框架(如 Node JS)访问的 Java 脚本
  2. Neo4j 的优势
    • 很容易表示连接的数据
    • 检索、遍历、导航多元连接数据非常容易和快速
    • 非常容易地表示半结构化数据
    • Neo4j CQL 有人性化的可读格式,非常容易学习
    • 使用简单而强大的数据模型
    • 很容易检索它的相邻节点或关系细节没有连接或索引



04


Neo4j的模型



Neo4j 使用属性图数据模型,依照该模型来存储和管理其数据。

  1. 属性图模型的规则

    属性图模型中,关系是定向的。如果创建没有方向的关系,将抛出错误消息。So,在 Neo4j 中,创建关系时,一定要指明方向。

    Neo4j 图数据库将其所有数据存储在节点和关系中。我们不需要任何额外的 RDBMS 数据库或 NoSQL 数据库来存储 Neo4j 数据库数据。它以图形的形式存储其数据的本机格式。

    • 表示节点、关系和属性中的数据
    • 节点和关系都包含属性
    • 关系连接节点
    • 属性是键值对
    • 节点用圆圈表示,关系用方向键表示
    • 关系具有方向:单边和双边
    • 每个关系包含“开始节点”和“结束节点”
  2. 图数据库数据模型的主要组件

    • 节点
    • 关系
    • 属性

看一个简单的属性图的例子

Neo4j:相遇在数据库之海

使用圆圈表示节点。使用箭头的关系。关系是有方向性的。可以用 Properties (键值对)来表示 Node 的数据,比如圆圈中的数字,在实际语句中就是{ ID:number }



05


图形理论基础



图形是一组节点和连接这些节点的关系。图形以属性的形式将数据存储在节点和关系中。属性是用于表示数据的键值对。

Google plus 为例

最简单的图:单个节点

Neo4j:相遇在数据库之海

这个节点不包含任何属性

Neo4j:相遇在数据库之海

这里使用键值对,添加一些属性。

两个节点构成的图

Neo4j:相遇在数据库之海

在两个节点之间创建一个“Follows”关系

稍微复杂的图

Neo4j:相遇在数据库之海

这里节点用关系连接。关系是单向或双向的。

  • PQRXYZ 的关系是单向关系。
  • ABCPQR 的关系是双向关系。

最后可能处理这样的图(头皮发麻)

Neo4j:相遇在数据库之海



06


构建模块



Neo4j 图数据库主要有以下构建块:节点、属性、关系、标签、数据浏览器

  • 节点

    节点是图表的基本单位。它包含具有键值对的属性,如下所示

    Neo4j:相遇在数据库之海

    这里Node Name =“Employee”,它包含一组属性作为键值对

  • 属性

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

    Key =值

    其中Key是一个字符串

    值可以通过使用任何Neo4j数据类型来表示

  • 关系

    Neo4j:相遇在数据库之海

    像节点一样,关系也可以包含属性作为键值对

  • 标签

    Label将一个公共名称与一组节点或关系相关联。 节点或关系可以包含一个或多个标签。我们可以为现有节点或关系创建新标签。我们可以从现有节点或关系中删除现有标签。

    上图中,我们可以观察到有两个节点。

    左侧节点都有一个标签:“Minister”,而右侧节点都有一个标签:“Monarch”。

    这两个节点之间的关系,也有一个标签:“follows”

  • Neo4j 数据浏览器

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

    http://localhost:7474/browser/

    Neo4j:相遇在数据库之海

    Neo4j 数据浏览器用于执行 CQL 命令并查看输出输出。

    这里我们需要在美元提示符处执行所有 CQL 命令:“$”,然后单击“执行”按钮运行命令。

    使用“VI视图”按钮以图形格式查看结果。

    使用“网格视图”按钮在网格视图中查看结果。下图在“网格视图”格式中显示相同的结果。

    当我们使用“网格视图”查看我们的查询结果时,我们可以将它们导出为两种不同格式的文件。

    Neo4j:相遇在数据库之海

    单击“导出CSV”按钮以 csv 文件格式导出结果

    Neo4j:相遇在数据库之海

    点击“导出 JSON ”按钮导出JSON  文件格式的结果

    Neo4j:相遇在数据库之海

    但是,如果我们使用“UI视图”查看我们的查询结果,我们可以将它们导出到一个文件,只有一种不同的格式:JSON



07


应用场景



  1. 欺诈检测与分析

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

  2. 推荐引擎和产品推荐系统

    由图支持的推荐引擎通过实时利用大量连接来帮助公司个性化产品,内容和服务。

  3. 社交媒体和社交网络图

    使用图形数据库为社交网络应用程序提供支持时,可以轻松利用社交关系或根据活动推断关系。

  4. 身份和访问管理

    使用图形数据库进行身份和访问管理时,可以快速有效地跟踪用户,资产,关系和授权。

  5. 零售

    Neo4j 支持实时产品推荐引擎,客户体验个性化以及零售商的供应链管理。

  6. 知识图

    知识图可确保搜索结果在上下文上与您的需求相关,但这仅仅是开始



08


总结



本篇是小K在学习 Neo4j 的过程中总结的一些资料,是对 Neo4j 整体情况的概述,算是入门的一些基础知识。接下来将会由浅入深逐步带领大家领略 Neo4j的惊艳之处。

喜欢的小伙伴,别忘了点赞收藏呦

作者    花栗鼠小K

编辑   一口栗子  

原文始发于微信公众号(六只栗子):Neo4j:相遇在数据库之海

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/88719.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!