Skip to content

Commit

Permalink
added introduction
Browse files Browse the repository at this point in the history
  • Loading branch information
cooper-lzy committed Feb 22, 2021
1 parent 73fcf97 commit fd1f89e
Show file tree
Hide file tree
Showing 4 changed files with 43 additions and 43 deletions.
6 changes: 3 additions & 3 deletions docs-2.0/1.introduction/1.what-is-nebula-graph.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
# 什么是Nebula Graph

Nebula Graph是一款开源的、分布式的、易扩展的原生图形数据库,能够承载数十亿个点和数万亿条边的超大规模数据集,并且提供毫秒级查询。
Nebula Graph是一款开源的、分布式的、易扩展的原生图数据库,能够承载数十亿个点和数万亿条边的超大规模数据集,并且提供毫秒级查询。

## 什么是图数据库

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

![What is a graph database](https://docs-cdn.nebula-graph.com.cn/docs-2.0/1.introduction/what-is-a-graph-database.png "What is a graph database")

Expand Down Expand Up @@ -36,7 +36,7 @@ Nebula Graph支持严格的角色访问控制和LDAP(Lightweight Directory Acc

### 生态多样化

Nebula Graph开放了越来越多的源生工具,例如[Nebula Graph Studio](https://github.com/vesoft-inc/nebula-web-docker)[nebula-console](https://github.com/vesoft-inc/nebula-console)[Nebula Graph Exchange](https://github.com/vesoft-inc/nebula-java/tree/master/tools/exchange)等。
Nebula Graph开放了越来越多的原生工具,例如[Nebula Graph Studio](https://github.com/vesoft-inc/nebula-web-docker)[nebula-console](https://github.com/vesoft-inc/nebula-console)[Nebula Graph Exchange](https://github.com/vesoft-inc/nebula-java/tree/master/tools/exchange)等。

此外,Nebula Graph还具备与Spark、Flink、HBase等产品整合的能力,在这个充满挑战与机遇的时代,大大增强了自身的竞争力。

Expand Down
32 changes: 16 additions & 16 deletions docs-2.0/1.introduction/2.data-model.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,56 +6,56 @@

Nebula Graph数据模型使用5种数据结构来保存数据:

- **顶点(Vertex)**
- **(Vertex)**

顶点用来保存实体对象,特点如下:
点用来保存实体对象,特点如下:

- 顶点是用顶点标识符`VID`)标识的。`VID`在同一图空间中唯一。
- 顶点必须有至少一个标签(Tag)。
- 点是用点标识符`VID`)标识的。`VID`在同一图空间中唯一。
- 点必须有至少一个标签(Tag)。

- **标签(Tag)**

标签可以用于对顶点进行区分。具有相同标签的顶点共享相同的属性定义
标签可以用于对点进行区分。具有相同标签的点共享相同的属性定义

- **边(Edge)**

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

- 一条边有且仅有一个边类型。
- 起点、边类型(Edge type)、权重(Rank)、终点可以唯一表示一条边。
- 边是有指向的。`->`表示边的指向,边可以沿任意方向遍历。
- 边必须有权重值(Rank)。权重值是一个不可更改的、用户分配的、64位有符号整数。通过它才能识别两个顶点之间具有相同边类型的边。边按它们的权重值排序,值大的边排在前面。默认权重值为0。
- 边必须有权重值(Rank)。权重值是一个不可更改的、用户分配的、64位有符号整数。通过它才能识别两个点之间具有相同边类型的边。边按它们的权重值排序,值大的边排在前面。默认权重值为0。

- **边类型(Edge type)**

边类型用于对边进行区分。具有相同边类型的边共享相同的属性定义。

- **属性(Properties)**

属性是指以键值对(Key-Value)形式存储顶点或边的相关信息
属性是指以键值对(Key-Value)形式存储点或边的相关信息

## 有向属性图

Nebula Graph将数据存储在有向属性图中。有向属性图是指顶点和边构成的图,这些边是有方向的。有向属性图表示为:
Nebula Graph将数据存储在有向属性图中。有向属性图是指点和边构成的图,这些边是有方向的。有向属性图表示为:

**G = < V, E, P<sub>V</sub>, P<sub>E</sub> >**

- **V**是顶点的集合
- **V**是点的集合
- **E**是有向边的集合。
- **P<sub>V</sub>** 是顶点的属性
- **P<sub>V</sub>** 是点的属性
- **P<sub>E</sub>** 是边的属性。

通过下面的示例图来介绍有向属性图的基本概念。

![map300](https://user-images.githubusercontent.com/42762957/64932536-51b1f800-d872-11e9-9016-c2634b1eeed6.png)

图片展示了一组关于NBA球员和球队的数据。有两种类型的顶点**player****name**)和两种类型的边(**serve****like**)。
图片展示了一组关于NBA球员和球队的数据。有两种类型的点**player****name**)和两种类型的边(**serve****like**)。

下表为图片数据模型的详细信息。

| 类型 | 名称 | 属性名(数据类型) | 说明 |
| :--- | :--- | :---| :--- |
|Tag| **player** | name (string) <br>age (int) | 表示NBA球员。 |
|Tag| **team** | name (string) | 表示NBA球队。 |
|Edge type| **serve** | start_year (int) <br> end_year (int) | 表示NBA球员的行为。<br>该行为将球员和球队联系起来,方向是从球员到球队。 |
|Edge type| **like** | likeness (int) | 表示NBA球员的行为。<br>该行为将两个球员联系起来,方向是从一个球员到另一个球员。 |
|Tag| **player** | name string <br>age int | 表示NBA球员。 |
|Tag| **team** | name string | 表示NBA球队。 |
|Edge type| **serve** | start_year int <br> end_year int | 表示NBA球员的行为。<br>该行为将球员和球队联系起来,方向是从球员到球队。 |
|Edge type| **like** | likeness int | 表示NBA球员的行为。<br>该行为将两个球员联系起来,方向是从一个球员到另一个球员。 |
Original file line number Diff line number Diff line change
@@ -1,37 +1,37 @@
# 架构总览

Nebula Graph由三种服务构成:图服务(Graph Service)、元服务(Meta Service)和存储服务(Storage Service)
Nebula Graph由三种服务构成:Graph服务、Meta服务和Storage服务

每个服务都有可执行的二进制文件和对应进程,您可以使用这些二进制文件在一个或多个计算机上部署Nebula Graph集群。

下图展示了Nebula Graph集群的经典架构。

![Nebula Graph architecture](https://docs-cdn.nebula-graph.com.cn/docs-2.0/1.introduction/2.nebula-graph-architecture/nebula-graph-architecture-1.png "Nebula Graph architecture")

## 元服务
## Meta服务

在Nebula Graph架构中,元服务是由nebula-metad进程提供的,负责数据管理,例如Schema操作、集群管理和用户权限管理等。
在Nebula Graph架构中,Meta服务是由nebula-metad进程提供的,负责数据管理,例如Schema操作、集群管理和用户权限管理等。

元服务的详细说明,请参见[元服务](2.meta-service.md)
Meta服务的详细说明,请参见[Meta服务](2.meta-service.md)

## 图服务和存储服务
## Graph服务和Storage服务

Nebula Graph采用计算与存储分离架构。图服务负责处理计算请求,存储服务负责存储数据。它们由不同的进程提供,图服务是由nebula-graphd进程提供,存储服务是由nebula-storaged进程提供。计算与存储分离的优势如下
Nebula Graph采用计算存储分离架构。Graph服务负责处理计算请求,Storage服务负责存储数据。它们由不同的进程提供,Graph服务是由nebula-graphd进程提供,Storage服务是由nebula-storaged进程提供。计算存储分离架构的优势如下

- 易扩展

分布式架构保证了图服务和存储服务的灵活性,方便扩容和缩容。
分布式架构保证了Graph服务和Storage服务的灵活性,方便扩容和缩容。

- 高可用

如果提供图服务的服务器中有一部分出现故障,其余服务器可以继续为客户端提供服务,而且存储服务存储的数据不会丢失。服务恢复速度较快,甚至能做到用户无感知。
如果提供Graph服务的服务器有一部分出现故障,其余服务器可以继续为客户端提供服务,而且Storage服务存储的数据不会丢失。服务恢复速度较快,甚至能做到用户无感知。

- 节约成本

计算与存储分离能够提高资源利用率,而且可根据业务需求灵活控制成本。如果使用[Nebula Graph Cloud](https://cloud.nebula-graph.com.cn/ "Nebula Graph Cloud official website"),可以进一步节约成本。
计算存储分离架构能够提高资源利用率,而且可根据业务需求灵活控制成本。如果使用[Nebula Graph Cloud](https://cloud.nebula-graph.com.cn/ "Nebula Graph Cloud official website"),可以进一步节约成本。

- 开放更多可能性

基于分离架构的特性,图服务可以在多种存储引擎上单独运行,存储服务也可以为多种计算引擎提供服务
基于分离架构的特性,Graph服务可以在多种存储引擎上单独运行,Storage服务也可以为多种计算引擎提供服务

图服务和存储服务的详细说明,请参见图服务 (doc TODO) 和存储服务(doc TODO)。
Graph服务和Storage服务的详细说明,请参见Graph服务 (TODO: doc) 和Storage服务(TODO: doc)。
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
# 元服务
# Meta服务

本文介绍元服务的架构和功能
本文介绍Meta服务的架构和功能

## 元服务架构
## Meta服务架构

![The architecture of the Meta Service](https://docs-cdn.nebula-graph.com.cn/docs-2.0/1.introduction/2.nebula-graph-architecture/meta-architecture1.png)

元服务是由nebula-metad进程提供的,您可以根据场景配置nebula-metad进程数量:
Meta服务是由nebula-metad进程提供的,您可以根据场景配置nebula-metad进程数量:

- 测试环境中,您可以在每个机器上配置1个或3个nebula-metad进程。
- 生产环境中,建议您在每个机器上都配置3个nebula-metad进程以保证高可用。
Expand All @@ -15,36 +15,36 @@

leader是由多数派选举出来,只有leader能够对客户端或其他组件提供服务,其他follower作为候补,如果leader出现故障,会在所有follower中选举出新的leader。

>leader和follower的数据通过raft协议保持一致,因此leader故障和选举新leader不会导致数据不一致。
>leader和follower的数据通过raft协议保持一致因此leader故障和选举新leader不会导致数据不一致。
## 元服务功能
## Meta服务功能

### 管理用户账号

元服务中存储了用户的账号和权限信息,当客户端通过账号发送请求给元服务,元服务会检查账号信息,以及该账号是否有对应的请求权限。
Meta服务中存储了用户的账号和权限信息,当客户端通过账号发送请求给Meta服务,Meta服务会检查账号信息,以及该账号是否有对应的请求权限。

更多Nebula Graph的访问控制说明,请参见[验证和授权](TODO) (TODO)
更多Nebula Graph的访问控制说明,请参见验证和授权(TODO: doc)

### 管理分片

元服务负责存储和管理分片的位置信息,并且保证分片的负载均衡。
Meta服务负责存储和管理分片的位置信息,并且保证分片的负载均衡。

### 管理图空间

Nebula Graph支持多个图空间,不同图空间内的数据是安全隔离的。元服务存储所有图空间的元数据(非完整数据),并跟踪数据的变更,例如增加或删除图空间。
Nebula Graph支持多个图空间,不同图空间内的数据是安全隔离的。Meta服务存储所有图空间的元数据(非完整数据),并跟踪数据的变更,例如增加或删除图空间。

### 管理schema信息

Nebula Graph是强类型图数据库,它的schema包括标签、边类型、标签属性和边类型属性。

元服务中存储了schema信息,同时还负责schema的添加、修改和删除,并记录它们的版本。
Meta服务中存储了schema信息,同时还负责schema的添加、修改和删除,并记录它们的版本。

更多Nebula Graph的schema信息,请参见[数据模型](../2.data-model.md)

### 管理基于TTL的数据回收

元服务提供基于TTL(time to live)的自动数据回收和空间回收。
Meta服务提供基于TTL(time to live)的自动数据回收和空间回收。

### 管理作业

元服务中的作业管理模块负责作业的创建、排队、查询和删除。
Meta服务中的作业管理模块负责作业的创建、排队、查询和删除。

0 comments on commit fd1f89e

Please sign in to comment.