欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Pick of the Week'19 | Nebula 第 45 周看点--Nebula 到底是不是原生存储?

程序员文章站 2022-04-08 21:29:28
...

Pick of the Week'19 | Nebula 第 45 周看点--Nebula 到底是不是原生存储?

每周五 Nebula 为你播报每周看点,每周看点由本周大事件、用户问答、Nebula 产品动态和推荐阅读构成。

今天是 2019 年第 45 个工作周的周五,来和 Nebula 看看本周有什么图数据库和 Nebula 的新看点~~

本周大事件

RC1 Release

本次 RC1 主要增强了 nGQL,新增 LIMIT , ORDER BY 等语句;算法方面增加了最短路径,全路径搜索。 Storage 层新增 PUT/GET 接口,支持 scale out/in,以及新增了 Golang 客户端以及多线程 Golang 数据导入工具。

Release Note 见这里 https://github.com/vesoft-inc/nebula/releases/tag/v1.0.0-rc1

社区问答

Pick of the Week 每周会从微博、知乎、微信群、微信公众号及 CSDN 等技术社区选取 3 - 5 个用户问题同你分享,欢迎阅读本文的你通过知乎、微信公众号后台或者添加 Nebula 小助手微信号:NebulaGraphbot 进群交流。

1、@柯东 提问

其实 Nebula 到底是不是原生存储?按介绍,你们还只是在 RocksDB 和 HBase 上搭建一层

Nebula:Nebula 最底层使用的 kv 存储引擎是 RocksDB,上层自己实现了数据一致性协议,然后再封装成图的语义。当然图在数据结构上有多种存储方式,可是在数据 sharding 和分布式能力上,各种方式之间只能做个权衡。比如可以把图结构单独存放,这样查询图结构能非常快,但这样属性的 scalebility 会是个问题。就看使用的时候,更看重哪个方面了。另外业务需要的时候也可以支持 HBase。

2、@yfractal 提问

求介绍介绍 Nebula 锁相关或者是如何保证一致性的

Nebula:我们用的 Raft 保持副本一致的,数据写入过程中是不存在脑裂情况的,也不允许出现脑裂, 否则数据会乱套; 读取过程中可能会存在脑裂,这是一种假脑裂,在一段时间内会读取不到新数据,你可以参考之前 PingCAP 对读取脑裂处理方案(阅读传送门:https://mp.weixin.qq.com/s/ppd78-WmFVNH5tN3wTdvgA),只不过 PingCAP 称他为 region leader ,在 Nebula Graph 里是 part raft ,和 region leader 的概念类似。

3、@cristiano ronaldo 提问

Nebula 在 Docker 里编译是方便了, 但是 Docker 里编译的二进制还是只能在 Docker中运行。 虚机/物理机运行还是要安装一大堆依赖库。

Nebula:目前 Docker 编译有四个环境:CentOS 7.5,CentOS 6.5,Ubuntu 1804,Ubuntu 1604。

假如你使用 Docker 编译,选择了 CentOS 7.5 编译,那么编译出来的二进制文件可以在物理机也是 CentOS 7.5 上面运行,不需要安装其他依赖,同理其他三个系统也是。

假如你需要在 CentOS 7.0~7.5 的物理机上面运行,那么用 CentOS 7.5 系统的 Docker 编译出来的可能在低版本的 CentOS 由于 glic 的版本不支持而运行不了的话,那么可以选择直接物理机编译。只需要按照文档 https://github.com/vesoft-inc/nebula/blob/master/docs/manual-CN/3.build-develop-and-administration/1.build/1.build-source-code.md 里面操作按照我们编译好的第三方依赖就能简单实现源码编译。

再次感谢你的提问,后续我们会简化编译,做到只依赖 C++14 编译器和通过 OS 官方 repo 可直接安装的 libs。

4、@CreaPlus 提问

这个和 Neo4j 的区别

Nebula:二者的区别主要有以下几点:

  • 两者的查询语言类似但不一样;(当然Nebula正在开发去兼容OpenCypher)
  • Neo4j 3.4开源是个单机版,分布式架构也是把图结构放在单机上。 Nebula 把所有的点和边都打散,做成完全的分布式。因此对于横向扩展的能力不一样,特别是当数据量单机无法存放或者处理的时候。
  • 不同的开发语言,Neo4j 是 Java,Nebula 是 C++;

Nebula 产品动态

Pick of the Week 每周会从 GitHub issue 及 pr 中选取重要的产品动态和大家分享,欢迎阅读本文的你关注我们的 GitHub:https://github.com/vesoft-inc/nebula 及时了解产品新动态~

1、SHOW TAGSSHOW EDGES 时显示 tag 和 edgetype 的 ID,可以方便调试。参见:https://github.com/vesoft-inc/nebula/pull/1207

(aaa@qq.com) [t]> show tags
=================
| ID | Name     |
=================
| 2  | course   |
-----------------
| 3  | building |
-----------------
| 4  | student  |
-----------------
Got 3 rows (Time spent: 1784/2755 us)

(aaa@qq.com) [t]> show edges
===============
| ID | Name   |
===============
| 5  | like   |
---------------
| 6  | select |
---------------
Got 2 rows (Time spent: 1519/2359 us)

2、新增 SHOW PARTS 命令获取当前 space 的 partition 详情,参见:https://github.com/vesoft-inc/nebula/pull/1086

选取 Leader 前,使用 SHOW PARTS 命令

(aaa@qq.com) [(none)]> use myspace;
Execution succeeded (Time spent: 1463/2378 us)

(aaa@qq.com) [myspace]> show parts;
===========================================================================================
| Partition ID | Leader | Peers                                                   | Losts |
===========================================================================================
| 1            |        | 172.25.61.1:44700, 172.25.61.1:44500, 172.25.61.1:44600 |       |
-------------------------------------------------------------------------------------------
| 2            |        | 172.25.61.1:44500, 172.25.61.1:44600, 172.25.61.1:44700 |       |
-------------------------------------------------------------------------------------------
| 3            |        | 172.25.61.1:44600, 172.25.61.1:44700, 172.25.61.1:44500 |       |
-------------------------------------------------------------------------------------------
| 4            |        | 172.25.61.1:44700, 172.25.61.1:44500, 172.25.61.1:44600 |       |
-------------------------------------------------------------------------------------------
| 5            |        | 172.25.61.1:44500, 172.25.61.1:44600, 172.25.61.1:44700 |       |
-------------------------------------------------------------------------------------------
| 6            |        | 172.25.61.1:44600, 172.25.61.1:44700, 172.25.61.1:44500 |       |
-------------------------------------------------------------------------------------------
| 7            |        | 172.25.61.1:44700, 172.25.61.1:44500, 172.25.61.1:44600 |       |
-------------------------------------------------------------------------------------------
| 8            |        | 172.25.61.1:44500, 172.25.61.1:44600, 172.25.61.1:44700 |       |
-------------------------------------------------------------------------------------------
| 9            |        | 172.25.61.1:44600, 172.25.61.1:44700, 172.25.61.1:44500 |       |
-------------------------------------------------------------------------------------------

选取 Leader 后,使用 SHOW PARTS 命令

(aaa@qq.com) [myspace]> show parts;
======================================================================================================
| Partition ID | Leader            | Peers                                                   | Losts |
======================================================================================================
| 1            | 172.25.61.1:44500 | 172.25.61.1:44700, 172.25.61.1:44500, 172.25.61.1:44600 |       |
------------------------------------------------------------------------------------------------------
| 2            | 172.25.61.1:44500 | 172.25.61.1:44500, 172.25.61.1:44600, 172.25.61.1:44700 |       |
------------------------------------------------------------------------------------------------------
| 3            | 172.25.61.1:44500 | 172.25.61.1:44600, 172.25.61.1:44700, 172.25.61.1:44500 |       |
------------------------------------------------------------------------------------------------------
| 4            | 172.25.61.1:44500 | 172.25.61.1:44700, 172.25.61.1:44500, 172.25.61.1:44600 |       |
------------------------------------------------------------------------------------------------------
| 5            | 172.25.61.1:44500 | 172.25.61.1:44500, 172.25.61.1:44600, 172.25.61.1:44700 |       |
------------------------------------------------------------------------------------------------------
| 6            | 172.25.61.1:44500 | 172.25.61.1:44600, 172.25.61.1:44700, 172.25.61.1:44500 |       |
------------------------------------------------------------------------------------------------------
| 7            | 172.25.61.1:44500 | 172.25.61.1:44700, 172.25.61.1:44500, 172.25.61.1:44600 |       |
------------------------------------------------------------------------------------------------------
| 8            | 172.25.61.1:44500 | 172.25.61.1:44500, 172.25.61.1:44600, 172.25.61.1:44700 |       |
------------------------------------------------------------------------------------------------------
| 9            | 172.25.61.1:44500 | 172.25.61.1:44600, 172.25.61.1:44700, 172.25.61.1:44500 |       |
------------------------------------------------------------------------------------------------------

3、完成部分升级库 folly, fbthrift,参见:https://github.com/vesoft-inc/nebula/pull/1161

推荐阅读

Pick of the Week'19 | Nebula 第 45 周看点--Nebula 到底是不是原生存储?

相关标签: Nebula 周报