zoukankan      html  css  js  c++  java
  • 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 TAGS 和 SHOW EDGES 时显示 tag 和 edgetype 的 ID,可以方便调试。参见:https://github.com/vesoft-inc/nebula/pull/1207

    (user@127.0.0.1) [t]> show tags
    =================
    | ID | Name     |
    =================
    | 2  | course   |
    -----------------
    | 3  | building |
    -----------------
    | 4  | student  |
    -----------------
    Got 3 rows (Time spent: 1784/2755 us)
    
    (user@127.0.0.1) [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 命令

    (user@172.25.61.1) [(none)]> use myspace;
    Execution succeeded (Time spent: 1463/2378 us)
    
    (user@172.25.61.1) [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 命令

    (user@172.25.61.1) [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

    推荐阅读

    关注公众号

  • 相关阅读:
    python--模块导入与执行
    python--re模块
    python--递归函数
    CSRF攻击与防御
    XSS跨站脚本攻击
    HTTP协议详解以及URL具体访问过程
    Git服务器搭建
    浅谈PHP异常处理
    常用的几个PHP加密函数
    PHP将数据导出Excel表中(投机型)
  • 原文地址:https://www.cnblogs.com/nebulagraph/p/11821703.html
Copyright © 2011-2022 走看看