当前位置: 首页 > news >正文

读图数据库实战笔记01_初识图

1. 图论

1.1. 起源于莱昂哈德·欧拉在1736年发表的一篇关于“哥尼斯堡七桥问题”的论文

1.2. 要解决这个问题,该图需要零个或两个具有奇数连接的节点

1.3. 任何满足这一条件的图都被称为欧拉图

1.4. 如果路径只访问每条边一次,则该图具有欧拉路径

1.5. 如果路径起点和终点相同,则该图具有欧拉回路,或称为欧拉环

2. 图

2.1. 顶点和边的集合

2.2. 示例

2.2.1. 路线图

2.2.2. 组织结构图

2.3. 当要思考的数据集含有大量高度相互关联的项时,也可以将该数据集描述为一个由相关事物组成的网络,这也是图的另一种说法

3. 顶点

3.1. 图中零条、一条或多条边经过的点

3.2. 节点或实体

4. 边

4.1. 图中两个顶点之间的关系

4.2. 关系、链接或连接

5. 图数据库

5.1. 一种数据存储引擎

5.1.1. 将包含顶点和边的基本图结构与持久化技术和遍历(查询)语言相结合

5.1.2. 以创建针对高度关联数据的存储和快速检索进行优化的数据库

5.2. 实体之间的关系与数据中的实体同等重要,甚至比后者更加重要

5.2.1. 用开发人员的话来说,边和顶点一样,都是“一等公民”

5.3. 可以用于更准确、更容易地表示和推理现实世界中的关系

5.4. 将数据存储为顶点(节点、组件)和边(关系)

5.5. Neo4j、Apache TinkerPop的Gremlin Server、JanusGraph和TigerGraph

5.6. 默认情况下,只有关系数据库和图数据库才具有将数据中的实体关联起来的功能

5.7. 优势

5.7.1. 递归查询

5.7.1.1. 组织中员工的汇报层次结构或者组织结构图
5.7.1.2. 会连续执行多次,反复调用自己,直到满足某种终止条件
5.7.1.3. 关系数据库不能很好地处理递归操作
5.7.1.4. 图数据库能够利用其表示丰富关系的能力,干净、高效地处理无边界递归查询
5.7.1.5. 嵌套查询和递归查询(如前面的层次结构示例所示)是图数据库擅长解答的疑问类型

5.7.2. 复合结果类型

5.7.2.1. 订单和产品报告示例
5.7.2.2. 能够返回包含不同数据类型的结果集
5.7.2.3. 关系数据库指定联合返回的结果集必须包含一致的列
5.7.2.3.1. 在稀疏数据的情况下,这不仅增加了返回的数据量,还降低了数据结构的描述性

5.7.3. 路径

5.7.3.1. 过河问题
5.7.3.2. 一组顶点和边的序列,描述遍历如何在图中移动

5.8. 请把注意力集中在图数据库如何优雅地处理关系数据库里的UNION操作上

5.9. 可以把图数据库设计得能够容忍不断发展变化的数据

5.10. 使用

5.10.1. 并不一定全部使用图数据库,也并不一定全部不使用图数据库

5.10.2. 不要害怕尝试用图数据库来解决问题的一部分

5.10.3. 使用图数据库的多模型方法(即混合使用关系数据库和图数据库)很常见

6. 比较

6.1.  键值数据库

6.1.1. 所有数据都由唯一标识符(键)和关联的数据对象(值)表示

6.1.2. Berkeley DB、RocksDB、Redis和Memcached

6.2. 列存储数据库

6.2.1. 面向列、宽列式数据库

6.2.2. 数据按列来存储

6.2.2.1. 可能每行有大量的列
6.2.2.2. 可能每行的列数不一样

6.2.3. Apache HBase、Azure Table Storage、Apache Cassandra和Google Cloud Bigtable

6.3. 文档数据库

6.3.1. 面向文档数据库

6.3.2. 将数据存储到带有唯一键的文档中

6.3.3. 该文档可以具有不同的模式,也可以包含嵌套数据

6.3.4. MongoDB和Apache CouchDB

6.4. 关系数据库

6.4.1. 将数据存储在包含具有严格模式行结构的表中,允许在表之间连接行来建立关系

6.4.2. 关系数据库中的查找表或链接表使用的不是查询时的指针结构,而是存储了有关关系属性的结构,类似于图数据库中的边结构

6.4.3. PostgreSQL、Oracle Database和Microsoft SQL Server

6.5. 数据复杂性

7. Apache TinkerPop

7.1. TinkerPop是Apache软件基金会的顶级项目

7.2. 提供了一个与厂商无关的开源图计算框架

7.3. 具有事务(OLTP)能力和分析(OLAP)能力

7.4. 有广泛的第三方库可供使用

8. TinkerGraph

8.1. 一个内存图引擎

8.2. 支持OLTP负载和OLAP负载

8.3. TinkerPop Gremlin Server和Gremlin Console的一部分

8.4. TinkerPop的全功能开源实现

8.4.1. 被作为TinkerPop API的参考实现构建出来的

8.5. 并非一个你能下载的软件

8.5.1. 可下载软件(如Gremlin Server 和Gremlin Console)里的核心引擎

9. Gremlin

9.1. Gremlin遍历语言是TinkerPop项目的图查询语言

9.2. 支持命令式语法和声明式语法

9.2.1. 首选方式是命令式语法

9.3. Gremlin Console

9.3.1. 用于TinkerPop支持图数据库的交互终端应用程序

9.3.2. 允许用户连接到本地或远程的数据库,将数据加载到图中,并交互式地在图上进行遍历

9.3.3. 能作为自带内存图数据的独立应用程序使用

9.3.4. 能作为图数据库服务器的客户端使用

9.4. Gremlin Server

9.4.1. 允许非JVM客户端与基于JVM的图数据库进行通信

9.4.2. 提供能让部署在不同服务器上的数据库相互通信的机制

9.5. Gremlin语言变体

9.5.1. 允许开发人员既使用Gremlin作为查询语言,又能通过他们选择的开发语言方言来实现

9.5.2. 主张以应用程序编程语言的风格来编写Gremlin遍历

9.5.2.1. Java开发人员使用Java语法
9.5.2.2. .NET开发人员使用.NET语法

10. 用例/场景

10.1. 从社交网络分析、推荐引擎、依赖性分析、欺诈检测和主数据管理,到搜索问题和互联网上的研究,你很快就能列出一个适合使用图数据库的用例列表

10.2. 判断一个用例是好还是坏的最重要因素是对要解答的疑问有深入的了解

10.3. 选择/搜索

10.3.1. 侧重于寻找一组具有共同属性(如姓名、位置或雇主)的实体

10.3.2. 不需要数据中丰富的关系

10.3.3. 建议使用诸如PostgreSQL之类的本地数据库或诸如Apache Solr和Elasticsearch之类的搜索技术

10.3.4. 使用RDBMS或搜索技术

10.4. 获取数据相关性或递归数据

10.4.1. 图数据库比任何其他类型数据引擎都能更好地利用这些信息

10.4.2. 图数据库查询语言更适用于推断数据内部的关系

10.4.3. 使用图数据库

10.5. 聚合

10.5.1. 数据聚合查询是关系数据库的一个优秀用例

10.5.2. 关系数据库经过优化,能以最小的开销快速执行复杂的聚合查询

10.5.3. 可以在图数据库中执行,但是图遍历的本质要求接触更多的数据。这会导致更高的查询延迟和更多的资源消耗

10.5.4. 使用RDBMS

10.6. 模式匹配

10.6.1. 基于实体关联方式的模式匹配是充分利用图数据库功能的一个主要例子

10.6.2. 推荐引擎、欺诈检测和入侵检测

10.6.3. 使用图数据库

10.7. 中心性、聚集性和影响力

10.7.1. 一个实体相对于另一个实体的影响力或重要性是图数据库的典型用例

10.7.2. 识别基础设施的关键部分,或者定位数据中的实体组

10.7.3. 要考虑实体、实体之间的关系、事件关系和邻近关系

10.7.4. 使用图数据库

10.8. 数据结构的灵活性不能作为选择图数据库的充分理由,但与其他功能相结合,很可能足以使你转而使用图数据库

10.9. 即使业务领域模型天生适合使用图数据库,但是如果你的具体技术问题并不依赖于图中的关系来求解,那么也应该考虑其他选择

11. SQL

11.1. SQL查询中包含大量join可能表明图数据库是一个很好的选择,但并不能确定

11.2. SQL查询中的大量join通常是数据模型规范化的良好标志

11.3. 当这些join并非用于检索引用数据(如关系数据库中的第三个范式所做的那样),而是用于将记录项链接在一起(就像父子关系那样)时,就可能需要考虑使用图数据库了

11.4. 当我们不知道要执行的join数量时,使用图数据库的递归查询模式更好

11.5. 命令查询责任分离(CQRS)模式

相关文章:

读图数据库实战笔记01_初识图

1. 图论 1.1. 起源于莱昂哈德欧拉在1736年发表的一篇关于“哥尼斯堡七桥问题”的论文 1.2. 要解决这个问题,该图需要零个或两个具有奇数连接的节点 1.3. 任何满足这一条件的图都被称为欧拉图 1.4. 如果路径只访问每条边一次,则该图具有欧拉路径 1.5…...

K-Means和KNN

主要区别 从无序 —> 有序 从K-Means —> KNN KNN:监督学习,类别是已知的,对已知分类的数据进行训练和学习,找到不同类的特征,再对未分类的数据进行分类。K-Means:无监督学习,事先不知道…...

【Python】【Flask】flask_login的初始化

【背景】 想要更高效地用现有的Flask_login包来实现用户管理方面的常用功能会话管理等。不想再手搓了。 【要点】 首先引入flask_login from flask_login import LoginManager, login_user, login_required, logout_user,current_user然后进行app级别的设置和初始化 login…...

Spring Cloud之API网关(Gateway)

目录 API网关 好处 解决方案 Gateway 简介 特征 核心概念 Route(路由) Predicate(断言) Filter(过滤器) 工作流程 Route(路由) 路由配置方式 1.yml配置文件路由 2.bean进行配置 3.动态路由 动态路由 Predicate(断言) 特点 常见断言 示例 Filter(过滤器) …...

nodejs+vue 电子书阅读系统

本文首先介绍了电子书阅读系统的发展背景与发展现状,然后遵循软件常规开发流程,首先针对系统选取适用的语言和开发平台,随着网络技术的不断发展,多媒体技术应用渐渐的出现在教育领域中,电子书阅读已经成为社会的一个热…...

百度文心一言4.0抢先体验教程!

🍁 展望:关注我, AI学习之旅上,我与您一同成长! 一、 引言 想快速体验文心一言4.0,但又觉得技术难度太高?别担心,我来手把手教你! 🚀 10月17日,文心一言4.0…...

单目3D目标检测 方法综述——直接回归方法、基于深度信息方法、基于点云信息方法

本文综合整理单目3D目标检测的方法模型,包括:基于几何约束的直接回归方法,基于深度信息的方法,基于点云信息的方法。万字长文,慢慢阅读~ 直接回归方法 涉及到模型包括:MonoCon、MonoDLE、MonoFlex、CUPNet…...

oracle,CLOB转XML内存不足,ORA-27163: out of memory ORA-06512: at “SYS.XMLTYPE“,

通过kettle采集数据时,表输入的组件,查询报错。 ORA-27163: out of memory ORA-06512: at “SYS.XMLTYPE”, line 272 ORA-06512: at line 1 通过 ALTER SESSION SET EVENTS ‘31156 trace name context forever, level 0x400’; 修改会话配置 或直接修改…...

PHP与mysql数据库交互

PHP与mysql数据库交互 文章目录 PHP与mysql数据库交互方法速查建立与Mysql链接捕获连接错误SQL语句的执行SQL 错误SQL语句执行结果集对象方法速查 案例 方法速查 函数名 作用 mysqli_connect() 与MySQL 数据库建立连接。 mysqli_close() 关闭与MYSQL 数据库建…...

【广州华锐视点】VR飞行员驾驶模拟实训系统

VR飞行员驾驶模拟实训系统是一种基于虚拟现实技术的航空装备仿真测试技术,可以用于飞行员、乘务员和机务人员的训练。该系统可以模拟真实的飞行环境,包括天气、地形、飞机性能等,使被试者能够在虚拟环境中进行飞行操作,从而提高其…...

太烂的牌也要打完只为自己也不是为了其他什么原因。

day17_io02 1.上课代码敲一遍 2.读取一个文件,这个文件中有随机的一些数字字符,统计这些数字有几个偶数,几个奇数,并且追加写入到该文件末尾。 例如: a.txt文件: 3241256364789629090126581212515 奇数&…...

SDL窗口创建以及简单显示(1)

项目创建步骤 1. 使用Qt Creator创建一个C项目 2. 将SDL库文件放到源文件目录下 在项目pro文件中添加库文件 win32{INCLUDEPATH $$PWD/SDL2-2.0.10/includeLIBS $$PWD/SDL2-2.0.10/lib/x86/SDL2.lib } 使用SDL创建一个窗口 #include <stdio.h>#include <SDL.h>…...

【Html】交通灯问题

效果 实现方式 计时器&#xff1a;setTimeout或setInterval来计时。setInterval和 setTimeout 在某些情况下可能会出现计时不准确的情况。这通常是由于JavaScript的事件循环机制和其他代码执行所需的时间造成的。 问询&#xff1a;通过getCurrentLight将每个状态的持续时间设置…...

用IntelliJ远程打断点调试

前提当然是本地和远程部署的代码一样。 记录下步骤&#xff1a; 1&#xff0c;用token登录kuboard&#xff0c;找到目标容器的IP&#xff1a; 2, 用上一步找到的IP等信息创建Remote JVM Debug: 3&#xff0c;打断点&#xff0c;wkb说要把断点此属性改为线程。我试了下似乎…...

Spring-Bean的生命周期概述

Bean的生命周期概述 入门使用的Spring代码&#xff1a; ClassPathXmlApplicationContext context new ClassPathXmlApplicationContext("spring.xml"); UserService userService (UserService) context.getBean("userService"); userService.test(); …...

SENet 学习

ILSVRC 是一个比赛&#xff0c;全称是ImageNet Large-Scale Visual Recognition Challenge&#xff0c;平常说的ImageNet比赛指的是这个比赛。 使用的数据集是ImageNet数据集的一个子集&#xff0c;一般说的ImageNet&#xff08;数据集&#xff09;实际上指的是ImageNet的这个子…...

目前和未来的缓存构建

说起来可能有点反直觉&#xff0c;有时候不运行反而可以帮助我们加快速度&#xff0c;这正是网络浏览器运行的指导原则。不必在页面上加载所有内容&#xff0c;缓存的元素已经存在&#xff0c;不需要每次访问网站或网页时都重新加载。页面加载速度越快&#xff0c;浏览器的工作…...

aws亚马逊云免费账号代充值!!!什么是 AWS Lambda?

AWS Lambda 是一项计算服务&#xff0c;可使您无需预配置或管理服务器即可运行代码。 Lambda 在可用性高的计算基础设施上运行您的代码&#xff0c;执行计算资源的所有管理工作&#xff0c;其中包括服务器和操作系统维护、容量调配和弹性伸缩和记录。使用 Lambda&#xff0c;您…...

《从零开始大模型开发与微调 :基于PyTorch与ChatGLM》简介

内 容 简 介 大模型是深度学习自然语言处理皇冠上的一颗明珠&#xff0c;也是当前AI和NLP研究与产业中最重要的方向之一。本书使用PyTorch 2.0作为学习大模型的基本框架&#xff0c;以ChatGLM为例详细讲解大模型的基本理论、算法、程序实现、应用实战以及微调技术&#xff0c;…...

【LeetCode】102. 二叉树的层序遍历

题目链接 文章目录 Python3方法一&#xff1a; 广度优先搜索 (BFS) ⟮ O ( n ) ⟯ \lgroup O(n) \rgroup ⟮O(n)⟯方法二&#xff1a; 深度优先搜索 (DFS) ⟮ O ( n ) ⟯ \lgroup O(n) \rgroup ⟮O(n)⟯ C方法一&#xff1a; 广度优先搜索 (BFS) ⟮ O ( n ) ⟯ \lgroup O(n…...

golang连接池检查连接失败时如何重试

在Go中&#xff0c;可以通过使用database/sql包的DB类型的Ping方法来检查数据库连接的可用性。如果连接检查失败&#xff0c;可以选择进行重试。以下是一个简单的示例代码&#xff0c;演示了如何在连接检查失败时进行重试&#xff1a; import ("database/sql""…...

从JavaScript到Rust的三年时间小结

Rust 是一种注重安全性、速度和并发性的系统编程语言。它能编译成高效的本地代码&#xff0c;无需垃圾回收即可访问内存等底层资源&#xff0c;同时还能防止分隔故障。 作者讨论了他们几年来用 Rust 构建大型应用程序和库的经验。他们发现 Rust 的借用检查器和类型系统有助于减…...

【Python机器学习】零基础掌握VotingRegressor集成学习

如何更准确地预测房价? 想象一下,你是一名房地产分析师,你的任务是预测一个小区的未来房价。这看似简单,但实际上,房价受到多种因素的影响,如地理位置、房屋面积、周围设施等。你可能会使用线性回归模型来进行预测,但是你会发现,尽管模型的准确性还可以,但还是存在一…...

云计算模式的区域LIS系统源码,基于ASP.NET+JQuery、EasyUI+MVC技术架构开发

云计算模式的区域LIS系统源码 云LIS系统源码&#xff0c;自主版权 LIS系统是专为医院检验科的仪器设备能与计算机连接。可通过LIS系统向仪器发送指令&#xff0c;让仪器自动操作和接收仪器数据。并快速的将检验仪器中的数据导入到医生工作站中进行管理&#xff0c;且可将检验结…...

面向对象设计原则之接口隔离原则

目录 定义接口隔离原则与单一职责原则示例 定义 接口隔离原则&#xff0c;全称为 Interface Segregation Principle&#xff0c;缩写ISP。 原始定义&#xff1a;Clients should not be forced to depend upon interfaces that they don’t use。 翻译&#xff1a; 不应该强行…...

haproxy 负载均衡

haproxy负载均衡 haproxy&#xff1a;基于C语言开发的开源软件 支持高性能的tcp和http负载均衡器&#xff0c;工作中用的版本1.5.9 haproxy功能&#xff1a;主要用于高并发的web站点&#xff0c;工作原理和nginx、lvs都一样 haproxy缺点: 单节点部署&#xff0c;单实例运行。代…...

在el-dialog中使用tinymce 点击工具栏下拉框被遮挡

在el-dialog中使用tinymce控件时&#xff0c;会出现点击工具栏下拉框出现在弹窗下一层&#xff0c;审查元素之后发现是tinymce的下拉框z-index优先级低于el-dialog的z-index导致的&#xff0c;所以需要增加tinymce的下拉框的z-index值。 通过审查元素得到&#xff0c;需要修改t…...

CloudQuery + StarRocks:打造高效、安全的数据库管控新模式

随着技术的迅速发展&#xff0c;各种多元化的数据库产品应运而生&#xff0c;它们不仅类型众多&#xff0c;而且形式各异&#xff0c;国产化数据库千余套&#xff0c;开源数据库百余套 OceanBase 、PolarDB 、StarRocks…还有一些像 Oracle、MySQL 这些传统数据库。这些数据库产…...

各类统计模型R语言的详细使用教程-R语言的线性回归使用教程

各类统计模型R语言的详细使用教程-R语言的线性回归使用教程 前言R语言的线性回归代码示例回归诊断误差项正态qq图内学生化残差外学生化残差线性关系异常值的发现、处理帽子矩阵的方法DFFITS 准则Cook统计量COVRATIO准则多重共线性summaryKlein判别法特征根法条件指数法方差膨胀…...

点云从入门到精通技术详解100篇-基于尺度统一的三维激光点云与高清影像配准

目录 前言 研究现状 三维激光点云与影像配准研究现状 点云配准研究现状...