开源图数据库Nebula Graph OOM 的问题分析与解决

本文深入探讨了开源图数据库Nebula Graph的存储服务Nebula-Storaged出现内存溢出(OOM)的问题。通过分析Nebula的架构,特别是RocksDB的内存占用,排查了RocksDB的Block cache、Indexes和Memtables。最终发现是由于index block和filter block占用大量内存,通过调整`cache_index_and_filter_blocks`参数和增大`block_size`解决了问题,确保了Nebula-Storaged的稳定运行。
摘要由CSDN通过智能技术生成

1. 图数据库是什么

图是一种存储实体,及实体之间关系的数据结构,而图数据库则是一个使用图结构进行语义查询的数据库。因此,选择正确合适的图数据库能帮助企业快速了解数据间关系,深挖背后的价值。

图数据库不同于传统的关系型数据库(RDBMS)。关系型数据库主要由单个或多个二维表组成,表中的行和列存储数据。

而图数据库的设计初衷是让企业专注数据集内的数据关系,除了具备高可用、高性能等特性,能对海量数据进行存储的能力也至关重要。

1.1 图数据库与传统关系型数据库相比的优势

传统的关系型数据库和图数据库无论是在模型,存储以及查询优化上都存在极大的差异。比如社交用户关系中的2度查询请求,传统关系型数据库处理起来至少是秒级别的,3度查询更差甚至无法支持。

对比而言,图数据库能够轻松支持这类场景,性能往往能够轻松的达到传统关系型数据库的十倍乃至几十倍。这种性能的差异并非简单的调优问题,而是更深层次的数据库建模以及内核层面决定的。因此,图数据库在基因层面更适合高度连接数据集的处理。

2. Nebula 的架构设计

今天我们介绍的是目前得物在使用的一款开源图数据库产品Nebula Graph。 Nebula Graph 由三种服务构成: Graph 服务、Meta 服务和 Storage 服务,是一种存储与计算分离的架构。 Graph 服务负责处理计算请求,Storage 服务负责存储数据,Meta 服务负责数据管理。

每个服务都有可执行的二进制文件和对应进程,用户可以使用这些二进制文件在一个或多个计算机上部署 Nebula Graph 集群。

下图展示了 Nebula Graph 集群的架构。

2.1 Nebula-Storaged存储架构

1. Storage interface 层,Storage 服务的最上层,定义了一系列和图相关的 API。

2. Consensus 层,Storage 服务的中间层,实现了 Multi Group Raft ,保证强一致性和高可用性。

3. Store Engine 层,Storage 服务的最底层,是一个单机版本地存储引擎Rocksdb

2.2 Rocksdb

1. RocksDB是一个高性能的单机KV存储,Nebula 一个图Space对应一个RocksDB实例。

2. 图存储的主要数据是点和边,Nebula Graph 将点和边的信息存储为 key(Rock

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值