GraphDB 与 RDB:Spine-Leaf 架构搜索速度比较
本研究对 GraphDB (Neo4j) 和 RDB (PostgreSQL) 在查询代表脊叶网络架构的数据时的搜索速度进行了基准测试。 结果表明,对于具有大量节点和显着深度的数据集,GraphDB 的性能优于 RDB。
实验设置
测试环境使用 Neo4j(版本 5.26.0)和 PostgreSQL(版本 15)的 Docker 容器。 Docker Compose 文件如下:
version: '3' services: postgres: image: postgres:15 ports: - 5433:5432 environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres POSTGRES_DB: postgres neo4j: image: neo4j:5.26.0 ports: - 7474:7474 - 7687:7687 adminer: image: adminer restart: always ports: - 8080:8080
基于脊叶和虚拟化架构的变化,测试了三种场景:
- 场景 1: 一个简单的架构(19 个节点,深度 4)。
- 场景 2: 更复杂的架构,增加了服务器密度以及叶交换机和服务器之间的全网状连接(273 个节点,深度 4)。
- 场景3:最深的架构,为每个虚拟机引入pod(417个节点,深度5)。
数据库之间的数据建模不同:
-
Neo4j: 节点代表设备,具有
has_parent
和has_child
关系。 场景 1 的示例查询:
CREATE (ssw1: SpineSwitch {name: "ssw1"}) CREATE (ssw2: SpineSwitch {name: "ssw2"}) ... CREATE (ssw1)-[:has_child]->(lsw1) ...
-
PostgreSQL: 使用了两个表,
nodes
和relationships
。
CREATE TABLE nodes ( id SERIAL PRIMARY KEY, name VARCHAR(255) NOT NULL UNIQUE, type VARCHAR(50) NOT NULL ); CREATE TABLE relationships ( id SERIAL PRIMARY KEY, parent_id INT NOT NULL, child_id INT NOT NULL, relationship_type VARCHAR(50) NOT NULL, FOREIGN KEY (parent_id) REFERENCES nodes (id), FOREIGN KEY (child_id) REFERENCES nodes (id) );
搜索查询旨在查找从特定服务(“srv1”)到主干交换机的路径。 带有 Neo4j 的 GraphDatabase
驱动程序和 psycopg2
的 Python 脚本用于查询执行和计时。
结果
不同场景下的搜索速度对比总结如下:
讨论
结果表明,对于具有大量节点和相当深度的数据集,GraphDB 的效率显着提高,这与图数据库在遍历复杂关系方面的固有优势相一致。 对于较小的数据集,性能差异不太明显。
此外,与 PostgreSQL 中等效 SQL 查询的复杂性相比,Neo4j 中 Cypher 查询的简单性是需要考虑的关键因素。 这种查询复杂性的差异导致了在处理类图数据结构时对 GraphDB 的整体偏好。
以上是CMDB 的 GraphDB的详细内容。更多信息请关注PHP中文网其他相关文章!

Arraysinpython,尤其是Vianumpy,ArecrucialInsCientificComputingfortheireftheireffertheireffertheirefferthe.1)Heasuedfornumerericalicerationalation,dataAnalysis和Machinelearning.2)Numpy'Simpy'Simpy'simplementIncressionSressirestrionsfasteroperoperoperationspasterationspasterationspasterationspasterationspasterationsthanpythonlists.3)inthanypythonlists.3)andAreseNableAblequick

你可以通过使用pyenv、venv和Anaconda来管理不同的Python版本。1)使用pyenv管理多个Python版本:安装pyenv,设置全局和本地版本。2)使用venv创建虚拟环境以隔离项目依赖。3)使用Anaconda管理数据科学项目中的Python版本。4)保留系统Python用于系统级任务。通过这些工具和策略,你可以有效地管理不同版本的Python,确保项目顺利运行。

numpyarrayshaveseveraladagesoverandastardandpythonarrays:1)基于基于duetoc的iMplation,2)2)他们的aremoremoremorymorymoremorymoremorymoremorymoremoremory,尤其是WithlargedAtasets和3)效率化,效率化,矢量化函数函数函数函数构成和稳定性构成和稳定性的操作,制造

数组的同质性对性能的影响是双重的:1)同质性允许编译器优化内存访问,提高性能;2)但限制了类型多样性,可能导致效率低下。总之,选择合适的数据结构至关重要。

到CraftCraftExecutablePythcripts,lollow TheSebestPractices:1)Addashebangline(#!/usr/usr/bin/envpython3)tomakethescriptexecutable.2)setpermissionswithchmodwithchmod xyour_script.3)

numpyArraysareAreBetterFornumericalialoperations andmulti-demensionaldata,而learthearrayModuleSutableforbasic,内存效率段

numpyArraySareAreBetterForHeAvyNumericalComputing,而lelethearRayModulesiutable-usemoblemory-connerage-inderabledsswithSimpleDatateTypes.1)NumpyArsofferVerverVerverVerverVersAtility andPerformanceForlargedForlargedAtatasetSetsAtsAndAtasEndCompleXoper.2)

ctypesallowscreatingingangandmanipulatingc-stylarraysinpython.1)usectypestoInterfacewithClibrariesForperfermance.2)createc-stylec-stylec-stylarraysfornumericalcomputations.3)passarraystocfunctions foreforfunctionsforeffortions.however.however,However,HoweverofiousofmemoryManageManiverage,Pressiveo,Pressivero


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

SublimeText3汉化版
中文版,非常好用

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能

Atom编辑器mac版下载
最流行的的开源编辑器