开源图数据库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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值