

Pick of the Week'20 | 第 24 周看点--UPSERT 实践
source link: https://zhuanlan.zhihu.com/p/147846660
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Pick of the Week'20 | 第 24 周看点--UPSERT 实践

每周五 Nebula 为你播报每周看点,每周看点由固定模块:特性讲解、Nebula 产品动态、社区问答、推荐阅读,和随机模块:本周大事件构成。
即将送走的是 2020 年第 24 个工作周的周五,转眼大半年快过去了 来和 Nebula 一块回顾下本周图数据库和 Nebula 有什么新看点~~
UPSERT
是一项结合了 INSERT
和 UPDATE
功能的语法。
- 如果顶点或边不存在,则会新建该顶点或边,未
SET
的属性字段使用该字段 Schema 的默认值,如果未设置默认值不存在时则报错; - 如果该顶点或者边存在,且满足 WHEN 条件,则会执行更新;
- 如果该顶点或者边存在,且不满足 WHEN 条件,则不会进行任何操作。
UPSERT
在语法上简化了插入新数据前先判断点或边是否存在这一操作,插入性能低于 INSERT
,因此不适合大量数据写入的场景。
下面来实践一下:
- 本次所用到的 tag 是 player,未指定 name 和 age 属性的默认值
(user@nebula) [test]> show create tag player
==========================================================================================
| Tag | Create Tag |
==========================================================================================
| player | CREATE TAG player (
name string,
age int
) ttl_duration = 0, ttl_col = "" |
------------------------------------------------------------------------------------------
Got 1 rows (Time spent: 1.024/1.973 ms)
- 插入点 100,然后更新点 100 的 name、age 属性
(user@nebula) [test]> INSERT VERTEX player(name, age) VALUES 100:("Ben Simmons", 22);
Execution succeeded (Time spent: 1.039/1.711 ms)
(user@nebula) [test]> UPSERT VERTEX 100 SET player.name = "Dwight Howard", player.age = $^.player.age + 11 WHEN $^.player.name == "Ben Simmons" && $^.player.age > 20 YIELD $^.player.name AS Name, $^.player.age AS Age;
=======================
| Name | Age |
=======================
| Dwight Howard | 33 |
-----------------------
Got 1 rows (Time spent: 2.834/3.612 ms)
- 为不存在的点 400,执行插入属性 age + 1 操作时,因 age 属性无默认值而执行失败。
(user@nebula) [test]> fetch prop on * 400
Execution succeeded (Time spent: 5.038/5.875 ms)
(user@nebula) [test]> UPSERT VERTEX 400 SET player.age = $^.player.age + 1;
[ERROR (-8)]: Maybe vertex does not exist, part: 1, error code: -100!
本周大事件
Nebula Graph 1.0 发布了。作为一款开源分布式图数据库,Nebula Graph 1.0 版本旨在提供一个安全、高可用、高性能、具有强表达能力的查询语言的图数据库。
Pick of the Week 每周会从官方论坛、微博、知乎、微信群、微信公众号及 CSDN 等渠道精选问题同你分享,欢迎阅读本文的你通过知乎、微信公众号后台或者添加 Nebula 小助手微信号:NebulaGraphbot 进群交流。
本周分享的主题是【无法连接外网情况下安装 Nebula Graph】,由社区用户 zhaohaifei 提出,Nebula Graph 官方解答。
zhaohaifei 提问:没有办法连接外网,就无法自动下载 Nebula Graph 所需的依赖文件,此时应如何安装?能否提供一个所有依赖均已下载好,并放入源码目录下的版本,使得安装时不需要再下载。
Nebula:如果在编译源码时无法连接网络,则必须手动下载这些工具和依赖,包括 Nebula Graph 仓库中的 GCC 编译器,第三方库和 CMake。然后,将所有这些复制到你的机器上。以下是快速指南。您仍然需要参考上述步骤以获取更多详细信息。
首先,需要有一台可以连接外网的主机,在主机上面下载下面的文件:
# 请注意,尽管我们使用命令行来演示,但是您可以通过浏览器执行所有下载。
# 下载 GCC
# RedHat 或 CentOS 用户
$ wget https://oss-cdn.nebula-graph.com.cn/toolset/vesoft-gcc-7.5.0-CentOS-x86_64-glibc-2.12.sh
# Debian 或 Ubuntu 用户
$ wget https://oss-cdn.nebula-graph.com.cn/toolset/vesoft-gcc-7.5.0-Debian-x86_64-glibc-2.13.sh
# 下载 CMake
$ wget https://cmake.org/files/v3.15/cmake-3.15.5-Linux-x86_64.sh
# 下载第三方库
$ wget https://oss-cdn.nebula-graph.com.cn/third-party/vesoft-third-party-x86_64-libc-2.12-gcc-7.5.0-abi-11.sh
然后,将这些软件包复制到你的机器:
# 安装 GCC
# RedHat 或 CentOS 用户
$ sudo bash vesoft-gcc-7.5.0-CentOS-x86_64-glibc-2.12.sh
# Debian 或 Ubuntu 用户
$ sudo bash vesoft-gcc-7.5.0-Debian-x86_64-glibc-2.13.sh
# 启用 GCC 安装
$ source /opt/vesoft/toolset/gcc/7.5.0/enable
# 安装 CMake
$ sudo bash cmake-3.15.5-Linux-x86_64.sh --skip-license --prefix=/opt/vesoft/toolset/cmake
# 将安装好的 CMake 的 bin 目录加到 PATH 里面
$ export PATH=/opt/vesoft/toolset/cmake:$PATH
# 安装第三方库
$ sudo bash vesoft-third-party-x86_64-libc-2.12-gcc-7.5.0-abi-11.sh
本期 Pick of the Week 就此完毕,如果你对本周看点或 Nebula Graph 有任何建议,欢迎前去 GitHub:https://github.com/vesoft-inc/nebula 或者官方论坛:https://discuss.nebula-graph.com.cn 向我们提出。若你想加入图数据库交流群,请添加 Nebula 小助手微信:NebulaGraphbot
星云·小剧场
为什么给图数据库取名 Nebula ?
Nebula 是星云的意思,很大嘛,也是漫威宇宙里面漂亮的星云小姐姐。对了,Nebula 的发音是:[ˈnɛbjələ]
本文星云图讲解--《螺旋星系 M96》
在这张美丽宇宙岛的彩色细致影像里,尘埃带看似绕着 M96 中心打转。显然 M96 是一个螺旋星系,它的跨幅大约是 10 万光年,大小约莫和我们的银河系相当。M96 亦名为 NGC 3368,其距离约为 3 千 5 百万光年远,是狮子座 I 星系群的大型成员。
资料来源 | Robert Nemiroff (MTU) & Jerry Bonnell (UMCP), Phillip Newman (NASA);
图片来源 | NASA Official
Recommend
-
67
介绍 Hudi支持 Upsert 语义,即将数据插入更新至Hudi数据集中,在借助 索引 机制完成数据查...
-
15
PotW'20 | 第 48 周看点--ARM64 可编译 Nebula Graph周五 Nebula 为你播报每周看点,讲产品动态、聊社区问答、看本周大事件。即将送走的是 2020 年第 48 个工作周的周五 ,下周六的深圳场 Meetup 你报名了吗?...
-
8
Pick of the Week'20 | 第 37 周看点--DBaaS 上线 每周五 Nebula 为...
-
13
Pick of the Week'20 | 第 33 周看点--多方图数据库测试性能发布摘要:在本周大事件中你将了解到 Nebula Graph 和其他图数据库的性能测试对比,此外在 Go 查询方面研发人员提升了查询性能
-
7
Pick of the Week'20 | 第 30 周看点--属性查询迎来新功能 每周五 N...
-
15
Please stop using this UPSERT anti-pattern I think everyone already knows my opinions about...
-
26
Pick of the Week'20 | 第 28 周看点--运行配置超全解析 每周五 Neb...
-
10
Pick of the Week'20 | 第 27 周看点--DB-Engine 7 月榜发布 每周五 N...
-
13
Pick of the Week'20 | 第 25 周看点--1.0 基准测试报告出炉 每周五...
-
11
更多技术交流、求职机会、试用福利,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群相信大家都对大名鼎鼎的ClickHouse有一定的了解,它强大的数据分析性能让人印象深刻。但在字节大量生产使用中,...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK