nebula-图数据库(一)

(一)概念

1、图数据库是专门存储庞大的图形网络并从中检索信息的数据库。它可以将图中的数据高效存储为点(Vertex)和边(Edge),还可以将属性(Property)附加到点和边上。

2、nebula 框架

 3、特性

        3.1、开源

        3.2、高性能

        3.3、易扩展

        3.4、易开发

        3.5、高可靠并发控制

        3.6、生态多样性

        3.7、兼容openCypher查询语言

        3.8、面向未来硬件,读写平衡

        3.9、灵活数据建模

4、场景

        4.1、欺诈检测

        4.2、实时推荐

        4.3、知识图谱

        4.4、社交网络

5、数据模型

        数据模型是一种组织数据并说明它们如何相互关联的模型(schema)

        5.1、图空间(space)

                图空间用于隔离不同团队或者项目的数据。不同图空间的数据是相互隔离的,可以指定不同的存储副本数、权限、分片等。

        5.2、点(Vertex)

                点用来保存实体对象

                        点是用点标识符(VID)标识的。VID在同一图空间中唯一。VID 是一个 int64, 或者 fixed_string(N)。

                        点必须有至少一个Tag,也可以有多个Tag。但不能没有Tag。

        5.3、边(Edge)

                边是用来连接点的,表示两个点之间的关系或行为

                        两点之间可以有多条边。

                        边是有方向的,不存在无向边。

                        四元组 <起点VID、Edge type、边排序值(Rank)、终点VID> 用于唯一标识一条边。边没有EID。

                                一条边有且仅有一个Edge type。

                        一条边有且仅有一个rank。其为int64, 默认为0。

        5.4、标签(Tag)

                Tag由一组事先预定义的属性构成。

        5.5、边类型(Edge type)

                Edge type由一组事先预定义的属性构成。

        5.6、属性(Properties)

                属性是指以键值对(Key-value pair)形式存储的信息。

6、有向属性图

        指点和边构成的图,这些边是有方向的,点和边都可以有属性。

 7、路径

        图论中一个非常重要的概念是路径,路径是指一个有限或无限的边序列,这些边连接着一系列点。

        路径的类型分为三种:walktrailpath

         7.1、walk类型

                walk类型的路径由有限或无限的边序列构成。遍历时点和边可以重复

                GO语句采用的是walk类型路径。

        7.2、trail类型

                trail类型的路径由有限的边序列构成。遍历时只有点可以重复,边不可以重复。柯尼斯堡七桥问题的路径类型就是trail

                MATCHFIND PATHGET SUBGRAPH语句采用的是trail类型路径。

        7.3、path类型

                path类型的路径由有限的边序列构成。遍历时点和边都不可以重复。

8、VID

        在Nebula Graph中,一个点由点的ID唯一标识,即VID或Vertex ID。

        VID通常会被(LSM-tree方式)索引并缓存在内存中,因此直接访问VID的性能最高

        VID的生成工作完全交给应用端,有一些通用的建议:

                (最优)通过有唯一性的主键或者属性来直接作为VID;属性访问依赖于VID;

                  通过有唯一性的属性组合来生成VID,属性访问依赖于属性索引。

                  通过snowflake等算法生成VID,属性访问依赖于属性索引;

                  如果个别记录的主键特别长,但绝大多数记录的主键都很短的情况,不要将FIXED_STRING(<N>)N设置成超大,这会浪费大量内存和硬盘,也会降低性能。此时可通过BASE64,MD5,hash编码加拼接的方式来生成。

                   如果用hash方式生成int64 VID:在有10亿个点的情况下,发生hash冲突的概率大约是1/10。边的数量与碰撞的概率无关。

         VID的数据类型必须在创建图空间时定义,且一旦定义无法修改

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小小_长颈鹿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值