graph - 性能 SQL Server 2017 图表与 Neo4j
问题描述
我正在研究图形数据库。我偶然发现了 SQL Server 2017,并了解到他们添加了使用图形数据库的选项。但我对性能有一些不确定性。我观看了几个关于这个 SQL Server 2017 Graph 的 Youtube 视频、教程和论文。例如这个页面。
考虑到上面的图像。当我试图找到一个节点时,时间复杂度是否真的是 O(n)?Neo4j 等其他图形数据库的性能是否相似?我只是在谈论节点查找而不是最短路径算法等。
我也有一种感觉,SQL Server 中的图形功能只是变相的关系数据库。它是否正确?
提前致谢。
解决方案
就数据的存储方式而言, agraph database
和 a之间存在很大差异。relational database with graph capabilities
简而言之,当triple ( aka 2 nodes connected by a relationship )
存储 a 时,底层数据库差异将是:
- Neo4j,三元组作为图形存储在磁盘上,节点具有指向它们所具有的关系的指针,因此在检索期间它只是从节点追逐的指针
- SQL like :一个节点存储在一个表中,另一个节点存储在另一个表中,但您可以
query
作为图形但操作将真正制作JOIN
基于这两个事实,我们可以说在原生图中,连接是在写入时执行的,而不是在非原生图中在查询时进行连接。
distributed
当你听到图表、分区、行星尺度等时要非常小心。如果您开始建立必须通过网络遍历的关系,您将始终遇到性能问题。大多数分布式图平台还指出,为了获得最佳性能,您必须将所有内容存储在一个分区上(这违背了分区的目的)。
推荐阅读
- node.js - 服务器中控制器内的 Socket.js (Node.js)
- c# - 从 SQL 读取数据后立即从 LINQ-to-SQL 转换数据
- javascript - 是否可以使 css 动画“简单”?
- javascript - 使用文档 auto-id firebase 查询“where”子句
- html - Qt 创建一个左箭头样式的按钮
- node.js - FCM iOS:推送通知抛出无效参数
- c++ - 模板专业化与编译器优化
- machine-learning - 如何知道特征变量是否“足够好”以构建分类器
- html - 是什么导致 pre 高于reveal.js 中的代码?
- sql - 选择查询在 SQL 中的工作原理