实例,图集与属性

安装与部署 Ultipa

Ultipa 提供多种安装方式,并且兼容大部分 Linux 内核操作系统, 同时为了跨平台与虚拟化,Ultipa 同样提供 docker 的安装部署方式。

Ultipa Installer

可以使用官方提供的 ultipa-installer 安装程序一键安装,对常用内核操作系统进行了支持,Ultipa 团队也会对应一些特殊应用场景进行快速支持。常用 Linux 操作系统包括 centos7+ 和 ubuntu18.04+, 麒麟 Linux。

Ultipa Server Docker

只要您的系统支持 docker 容器,即可直接安装或加载 Ultipa Docker 镜像。 Docker 镜像简化了安装步骤,隔离了系统差异化带来的限制。即使使用 Docker 虚拟化容器,Ultipa 依然如纯净安装版一样高效。 用户只需要配置映射端口,数据挂载目录,即可完成一个实例的启动。

建议使用最新的docker容器进行启动。

容器启动命令如下:

docker run -itd --net=host  --name <your_instance_name>  \
	-v <path_data>:/opt/ultipa-server/data \
	-v <path_config>:/opt/ultipa-server/config \
	<ultipa_image_name>:<tag> start

Ultipa SasS

现在是云的时代,Ultipa 必然支持云端部署,Ultipa 团队建议使用云端部署,这样既降低了维护成本,也提高了扩展性与易用性。

Ultipa 实例

Ultipa 实例,代表一个独立的 Ultipa Server 服务的最小单元。Ultipa 具备灵活的集群扩展与高可用特性。当在集群分布式状态下,一个服务可能包含多个 Ultipa 实例。在 docker 环境下,也支持启动多个 Ultipa Server 的服务,即:多个互不干扰的实例。

启动 Ultipa Server

使用如下命令启动一个后台运行的 ultipa-server

./ultipa-server -d

注:若数据集较大,如10亿以上,请将Linux最大文件打开数(ulimit)调高。

关闭 Ultipa Server

使用如下命令关闭 ultipa-server

./ultipa-server stop

集群实例服务

Ultipa 高可用分布式集群采用 HTAP 架构,在一个集群里同时支持 OLTP 和 OLAP 两种业务场景。集群支持数据一致性,高可用等特性,除了针对传统一致性的支持,Ultipa 计算集群还支持智能的自选分配,如负载均衡,算法自定义分配,强一致性设定等。针对不同业务场景,用户可以使用适合自己的高可用一致性集群解决方案。

集群模式的配置请联系Ultipa团队获取帮助。

图数据集(图集 – GraphSet)

一个图数据集包含:由点和边组成的一张图、这张图上所建立的索引、基于这张图执行的算法、统计信息、权限信息等一系列内容。

一个 Ultipa Server 服务可以包含多个图数据集。在初次启动 ultipa 实例的时候,会默认创建 default 图数据集。

图数据集,简称 “图集

通过 UQL 可以对图集进行各类操作。

查看图集列表

listGraph();

获取图集信息

getGraph().name(<name>)

图集的信息可以获取 图集名称,点和边的数量

创建图集

createGraph().name(<name>)

图集命名规范:必须以字母开头,允许使用字母,下划线和数字: _ 、 A-Z、 a-z、 0-9

图集重命名

updateGraph().name(<name>).set({name: "<new_name>"})

图集命名规范:必须以字母开头,允许使用字母,下划线和数字: _ 、 A-Z、 a-z、 0-9

删除图集

dropGraph().name(<name>)

属性(点属性,边属性)

查询 Ultipa 属性列表

在 ultipa 服务中,存在两类属性,一类是点的属性,一类是边的属性。通过运行 UQL 语法

show().property();
show().node_property();
show().edge_property();

即可列举出点和边所的所有属性名称,以及这些属性类型,是否 LTE 等信息。

创建属性

用户可以自由的为点或者边创建所需要的属性,并指定他们的类型。目前可以指定为 int, float, double, uint, int64, uint64, string 和 datetime 类型。所创建的属性默认会存于磁盘当中。

注:datetime 类型的传入形式为字符串 2021-01-01 01:01:00 或 2021-01-01 01:01:00.000000,适用于 UQL v2.2 及更高版本;如需支持其它数据类型,请联系Ultipa团队获得解决方案。

通过运行 UQL

create().node_property(<name>,<type>,<description?>);

// 或

create().edge_property(<name>,<type>,<description?>);

注意:. 新建属性名,必须以字母开头,只能包含:字母、数字、_(下划线), 且大于2个字符

示例:

1:  create().node_property("name", "string","the name of user");
2:  create().edge_property("age", "int", "the age of user");

修改属性名/描述

修改点属性名称:

alter()
  .node_property("<name>")
  .set({ name: "<new_name>", description: "<desc>" });

修改边属性名称:

alter()
  .edge_property("<name>")
  .set({ name: "<new_name>", description: "<desc>" });

删除属性

用户可以删除不再需要的属性,以节省磁盘空间。删除属性的操作是实时的,不必担心其时间消耗,一旦执行,属性会被立即删除,没有任何延迟。

可以通过以下 UQL 删除属性:

drop().node_property(<name>);

// 或

drop().edge_property(<name>);

注意: 名为_o, _id, _from_id 和 _to_id的属性是无法删除的,这些属性是必须存在的。

加载属性(LTE)

LTE 即 Load to Engine, 用于将磁盘上的属性加载到 Ultipa 高性能图计算引擎当中,加载后的属性可被用于各类查询的条件筛选。 在执行 LTE 之前,请确保内存充足,充足的内存会带来较好的性能与更稳定的运行环境。随着内存成本的降低,大内存环境的出现,以及网络虚拟化内存阵列的发明,数据库的发展趋势一定是通过更多的依赖内存存储与计算来提高系统吞吐率。Memory is the new disk!

可以通过 UQL 直接将属性添加到内存当中:

LTE().node_property(<property_name>);

LTE().edge_property(<property_name>);

卸载属性(UFE)

UFE 即 Unload From Engine, 用于将不再需要加速或者筛选的属性从内存之中删除,UFE 将会卸载不必要的属性以节省内存,这些属性仍然会存在于外存(硬盘)当中直至用户运行了删除属性的操作。删除属性的操作同样也会触发 UFE 的执行。

可以通过 UQL 执行 UFE:

UFE().node_property(<name>);

UFE().edge_property(<name>);

单纯的内存卸载将会根据数据量的大小占用一些时间,但不会影响其他的操作,

查看统计信息

用户可以查看各类统计信息

通过运行 UQL:

stat();

即可查看全库统计信息。