Nebula
数据库模式 Graph
官网 https://www.nebula-graph.com.cn/
说明文档 https://docs.nebula-graph.io/
安装说明 http://qa.anyline.org/v/44_3932
数据类型说明 https://docs.nebula-graph.com.cn/3.6.0/3.ngql-guide/3.data-types/1.numeric/
DDL说明
元数据说明
示例代码
驱动类 NebulaDriver
驱动下载
驱动maven org.nebula-contrib:nebula-jdbc
JDBC-URL jdbc:nebula://{host}
支持语言 .Net,C++,Go,Java,PHP,Python
支持接口 Browser interface,console (shell),Cypher Query Language,GO Object Graph Mapper,Java Object Graph Mapper,NGBatis ORM framework for NebulaGraph and Spring-Boot,Proprietary native API,Python Object Graph Mapper,Query language nGQL
注意Nebula有两个适配器
anyline-data-jdbc-nebula(基于JDBC但非官方提供,也不完善)
anyline.datasource.url=jdbc:nebula://localhost:39669

anyline-data-nebula(基于官方提供的java驱动) 
anyline.datasource.url=nebula://localhost:9669/simple

关系型数据库与图数据库的概念关系


catalog schema database 表(类) 行(实例) 列(属性)

顶点(节点)表(类型) 边(关系)表(类型) 顶点(节点) 边(关系)

原生 anyline实现 原生 anyline实现 原生 anyline实现 原生 anyline 原生 anyline实现 原生 anyline实现 原生 anyline实现 原生 anyline实现
Anyline相关方法名、参数名






Table








relational类型






Table








document类型






Collection








event类型
















graph类型
















kv类型
















object类型
















rdf类型
















search类型
















spatial类型
















time series类型
















vector类型
















wide-column类型
















Neo4j






Label








Elasticsearch






Index ElasticSearchIndex






mappings.properties
Column
MongoDB
















Nebula


































Catalog
SChema Database 顶点/节点 边/关系

原生 anyline实现 原生 anyline实现 原生 anyline实现 原生 anyline实现 原生
anyline实现
原生 anyline实现 原生 anyline实现 原生 anyline实现
Anyline相关方法名、参数名





Table


Column




relational类型






Table








document类型





Collection








event类型















graph类型















kv类型















object类型















rdf类型















search类型















spatial类型















time series类型















vector类型
















wide-column类型















Neo4j





Label


Property
Node

Relationship

Elasticsearch






Index ElasticSearchIndex


mappings.properties
Column



MongoDB















Nebula Space














关系型 AnyLine Nebula NebulaAdapter Neo4j Neo4jAdapter
Catalog Catalog Space Catalog

Table VertexTable extends GraphTable extends Table Tag(标签-点类型-点属性集合)  Tag extends VertexTable
Label(标签) Label extends VertexTable
Table EdgeTable extends GraphTable extends Table Edge Type(边类型-边属性集合)
EdgeType extends GraphTable RelationshipType(关系类型)
RelationshipType extends EdgeTable
VertexRow extends GraphRow extneds DataRow Vertex(点) 
VertexRow Node(节点) NodeRow  extends VertexRow
EdgeRow extends GraphRow extneds DataRow Edge(边)
EdgeRow Relationship(关系) RelationshipRow extends EdgeRow
Column Column Property(属性)
Column Property(属性) Column

为什么不用VertexType或VertexCollection?
因为type容易误会成一个属性,collection容易误会成结果集

与关系型不同的是,一个点可以有多个类型,相当于在多个表中,类似于扩展表(就是基础属性在一个Table中,更多属性放在另一个Table中,用同一个主键值)


因为查询结果并不像关系型数据库那样的简单二维结构,所以有几个重要的参数会影响结果集的数据结构

如:MATCH (v:CRM_USER:HR_USER) RETURN v

/*

*是否忽略查询结果中顶层的key,可能返回多个结果集
* 0-不忽略
* 1-忽略
* 2-如果1个结果集则忽略 多个则保留
*/
ConfigTable.IGNORE_GRAPH_QUERY_RESULT_KEY;

/*
* 是否忽略查询结果中的表名,数据可能存在于多个表中
* 0-不忽略 CRM_USER.id
* 1-忽略 id
* 2-如果1个表则忽略 多个表则保留
*/
ConfigTable.IGNORE_GRAPH_QUERY_RESULT_TABLE;

/*
* 是否合并查询结果中的表,合并后会少一层表名被合并到key中(如果不忽略表名)
* 0-不合并 {"HR_USER":{"name":"n22","id":22},"CRM_USER":{"name":"n22","id":22}}
* 1-合并  {"HR_USER.name":"n22","HR_USER.id":22,"CRM_USER.name":"n22","CRM_USER.id":22}}
* 2-如果1个表则合并 多个表则不合并
*/
ConfigTable.MERGE_GRAPH_QUERY_RESULT_TABLE;




在一个图空间中,一个点由点的 ID 唯一标识,即 VID 或 Vertex ID。
VID 数据类型只可以为定长字符串FIXED_STRING(<N>)或INT64。VID 的数据类型必须在创建图空间时定义,且一旦定义无法修改。
一个图空间只能选用其中一种 VID 类型。
VID 在一个图空间中必须唯一,其作用类似于关系型数据库中的主键(索引+唯一约束)。但不同图空间中的 VID 是完全独立无关的。
点 VID 的生成方式必须由用户自行指定,系统不提供自增 ID 或者 UUID。
VID 相同的点,会被认为是同一个点。

NebulaGraph 的数据以点和边的形式存储。每个点可以有 0 或多个标签(Tag);每条边有且仅有一个边类型(Edge Type)。标签定义点的类型以及描述点的属性;边类型定义边的类型以及描述边的属性。在查询时,可以通过指定点的标签或边的类型来限定查询的范围。

NebulaGraph 的核心查询语句可分为:
FETCH PROP ON
LOOKUP ON
GO
MATCH
FIND PATH
GET SUBGRAPH
SHOW
FETCH PROP ON和LOOKUP ON更多用于基础的数据查询;GO和MATCH用于更复杂的查询和图数据遍历;FIND PATH和GET SUBGRAPH用于图数据的路径查询和子图查询;SHOW用于获取数据库的元数据信息。

首页 最近更新 搜索 提交 回复