自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Jermy的专栏

记录那些年走过的坑

  • 博客(44)
  • 收藏
  • 关注

原创 深入学习图数据库语言Gremlin 系列文章链接汇总

深入学习Gremlin系列文章 链接汇总 --图遍历语言Gremlin教程、Gremlin语法、Gremlin实例、Gremlin运用。1.图基本概念与操作。2.边的遍历操作。3.has条件过滤。4.图查询返回结果数限制。5.查询路径path。6.循环操作。7查询结果排序。8.数据分组与去重。9.条件和过滤。10.逻辑过滤条件。...

2018-09-11 20:09:13 31479 5

原创 通过Gremlin语言构建关系图并进行图分析

背景Gremlin是Apache TinkerPop框架下实现的图遍历语言,支持OLTP与OLAP,是目前图数据库领域主流的查询语言,可类比关系型数据库之于SQL语言。HugeGraph是国内的一款开源图数据库,完全支持Gremlin语言。本文将讲述如何在HugeGraph图数据库上通过Gremlin来构建一张图,并进行一些基本的图分析。该图描述了TinkerPop框架、Gremlin语言...

2018-09-04 16:36:40 6577 5

原创 HugeGraph图数据库有哪些功能?

HugeGraph简介图数据库(Graph Database)是一种使用顶点、边和属性来表示与存储数据,并以图结构进行语义查询的数据库。图数据库的关键概念是边,通过边将顶点连接在一起,从而进行快速的图检索操作。HugeGraph是一款开源图数据库系统,可以存储海量的顶点(Vertex)和边(Edge), 实现了Apache TinkerPop 3框架,支持Gremlin查询语言。 Huge...

2018-08-26 19:54:07 8275 5

原创 RocksDB WAL预分配空间代码

Rocksdb WAL写日志文件的空间预分配代码。

2024-03-30 16:11:24 286

原创 PostgreSQL数据库技术名词解释

• pg:PostgreSQL简称,单机版关系数据库,可使用psql命令行工具访问pg,关于其SQL基础语法可以参考官网,比如:数据定义语句、操作语句、查询语句、函数与逻辑运算、索引、约束、子查询、连接、分组、排序、聚合、联合、去重、窗口函数等。• QE:查询执行进程,在segment节点上,由QD进程请求segment节点的postmaster进程 fork 出来,然后QD进程会连接到此QE进程进行任务分发,QE进程负责执行在本segment分片上的数据查询。

2024-03-30 14:49:25 570

原创 开源项目的研发流程怎样提升产品稳定性

开源项目的研发流程其实并不等价于规范的研发流程,只是说大多数开源项目的研发流程是比较规范的(主要原因是流行的开源项目涉及的开发者多、出问题影响面也比较广,为了保证高质量代码且高效协作,往往会制定规范的流程)。编程是对需求及设计的实现,假如设计没问题的情况下,编码过程依然可能引入问题:一方面设计无法百分百定义所有细节(事实上编码与设计之间的Gap往往不小,编码阶段本身也包含了设计方案之外的细节设计),另一方面编码难以完全遵循设计,此外新模块衔接到各模块的过程也容易引入问题。

2024-02-29 21:34:59 919

原创 解决依赖库libunwind编译报错undefined reference to ‘lzma_stream_buffer_decode‘

在深入分析libunwind之后,找到了问题的本质:libunwind会在有安装liblzma环境的情况下,编译minidebuginfo,而minidebuginfo依赖liblzma库。程序MyApp依赖第三方库libunwind,在A机器上编译好静态库libunwind.a之后,在B机器上基于libunwind.a编译MyApp。

2024-02-22 21:19:12 888

原创 s3 存储操作命令 与 GitHub CI 集成

s3 存储操作命令:下载安装、配置、上传下载等命令。

2023-07-03 14:40:46 683

原创 gnuplot 命令行绘图工具命令

gnuplot工具非常强大,可以在命令行进行曲线绘图,当然也可以在UI界面绘图。

2023-07-03 14:23:29 1147

原创 PostgreSQL 内存配置 与 MemoryContext 的生命周期

PG 的 MemoryContext 是一个树形结构,每个Query可以对应一个MemoryContext(我们可以称为query_context),query_context会创建Child行级别的MemoryContext,分别为tuple_context、expr_context。

2023-07-03 14:12:02 878

原创 中文数字转阿拉伯数字Java优雅实现

支持以下中文数字的解析:“点 廿卅 零一二三四五六七八九 十百千万亿”。

2022-05-19 18:01:10 1265

原创 Comparison of Graph Database: Neo4j, JanusGrraph and HugeGraph

Main FeaturesNeo4jJanusGraphHugeGraphOpen Source EcologyThe community version is open source, the commercial version is closed sourceOpen source, compatible with the Apache Tinkerpop ecosystem, mainly provided by IBM on cloud services.(Janus ...

2022-01-04 22:00:09 1103 1

原创 记一次Java性能优化及分析

hugegraph core性能优化 - 提升插入速度35%背景HugeGraph是一个Java语言编写的图数据库,也是开源的项目,本文记录了一次HugeGraph早期优化性能的过程分析与结果。HugeGraph之前使用Cassandra后端时,插入数据基本上90%时间花在写数据库操作上。随着后端存储RocksDB性能的不断优化(目前已达到 12w edges/s),HugeGraph在插入数据时core本身所占时间比重越来越大,因此core本身性能的优化又一次提上日程。如何优化性能?大体步骤

2021-10-28 15:47:02 373

原创 tinkerpop Step算子的框架结构

最顶层接口 Step:// org.apache.tinkerpop.gremlin.process.traversal.Steppublic interface Step<S, E> { public void addStarts(final Iterator<Traverser.Admin<S>> starts); public void addStart(final Traverser.Admin<S> start);

2021-02-24 20:47:48 469

原创 SOFA-RPC使用自定义类型数组参数报错 argument type mismatch

SOFA-RPC使用自定义类型数组参数报错:argument type mismatch1 问题表现2 问题定位分析1 定位客户端在发送数据之前是否有问题2 定位服务端接收到的数据是否有问题3 定位服务端处理数据是否有问题3 临时解决方法1 将RPC方法参数由`Id[] ids`改为`Object[] ids`,经过验证没有问题:2 或者将Id由`interface`改为`class`,经过验证也没有问题,但是由于需要修改大量已有代码,所以没办法实际应用,仅为测试该方案可行性:1 问题表现客户端通过RP

2021-02-13 20:32:42 566 1

原创 Gremlin在count step结束后会再次调用hasNext的原因分析

执行语句:g.V().hasLabel('电影').limit(26).count()count()调用栈:Thread [gremlin-server-exec-4] (Suspended (breakpoint at line 1713 in GraphTransaction$LimitIterator)) GraphTransaction$LimitIterator<T>.fetch() line: 1713 GraphTransaction$LimitIterator&l

2020-12-27 17:42:44 343

原创 Java HTTPS 编程梳理

Java HTTPS 编程梳理HTTPS 通信流程流程(仅验证服务端方式)核心流程概述:前提:服务端持有私钥和公钥,客户端持有公钥;客户端生成随机字符串作为密码,并将其用公钥加密,发送密文给服务端;服务端收到密码密文,使用公钥对其进行解密,得到密码的明文;后续通信服务端和客户端共同使用该密码,发送方采用此密码对数据进行对称加密,接收方使用该密码对数据进行对称解密;总结:密码加密使用非对称加密,数据加密使用对称加密。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(i

2020-11-16 12:05:05 438

原创 记一次RocksDB查询慢的问题定位--因大量删除墓碑Tombstone导致

在HugeGraph Graph Database + RocksDB Backend环境中,查询慢问题。 1. 避免对LSM-Tree系数据库进行大量删除操作产生大量墓碑Tombstone,或者尽可能使用delete代替delete-range调用(DeleteRange函数)。 2. 或者在大量删除操作之后进行compaction(CompactRange函数),防止读取时遭遇大量墓碑Tombstone导致性能低下。

2020-05-25 15:59:29 1910 4

原创 图数据库选型比较:Neo4j、JanusGraph、HugeGraph

图数据库(Graph Database)是一种以图结构进行存储和查询的数据库。本文总结了图数据库选型的各类因素,并对比了3个主流开源图数据库:Neo4j、JanusGraph、HugeGraph。Neo4j是老牌的图数据库,JanusGraph是非常成功的开源图数据库TitanDB的Fork版(TitanDB已经不维护了),HugeGraph是百度开源的图数据库。下面表格是具体的对比内容,共比较了...

2020-03-20 22:25:55 5402 3

原创 图数据库与关系型数据库优势

与传统关系型数据库相比,图数据库的优势有:1. 可以很自然的表达现实世界;2. 灵活的数据模型可以适应不断变化的业务需求;3. 灵活的图查询语言,轻松实现复杂关系网络的分析;4. 关系型数据库在遍历关系网络并抽取信息的能力非常弱,图数据库则为此而生;

2020-03-12 15:07:20 2279

原创 图数据库有哪些优点?

图数据库(Graph Database)是一种以图结构进行存储和查询的数据库。图数据库的关键概念是点(代表实体)和边(代表关系),通过边将顶点连接在一起,从而进行快速的图检索操作。图数据库的优点总结如下:使用图(或者网)的方式来表达现实世界的关系很直接、自然,易于建模。比如某人喜欢看某电影,就可以建立一条边连接这个人和这部电影,这条边就叫做“喜欢”边,同时这个人还可以有其它边,比如“朋友”边...

2020-03-12 14:54:55 4418

原创 HugeGraph图数据库性能评测结果

HugeGraph Database Performance Test下面是HugeGraph的性能测试结果一览,两个典型后端存储–RocksDB单机版、Cassandra集群版:RocksDB单机版性能(48CPUs 128G内存 HDD盘)https://hugegraph.github.io/hugegraph-doc/performance/hugegraph-api-0.5.6-...

2020-03-11 19:38:23 1525 1

原创 TitanDB/JanusGraph图数据库入门简介|实战总结|选型对比|存储结构深入分析

历史背景JanusGraph图数据库,源自于TitanDB开源图数据库。TitanDB在2012年发布第一个版本,2015年被Datastax公司收购,后续不再维护导致项目停滞。图数据库有2个最具代表性的查询语言:Cypher 及 Gremlin。Cypher是商业公司Neo4j出品,Neo4j图数据库在2007年发布了第一个版本,是商用图数据库领域的开拓者。Gremlin是Apac...

2020-03-10 22:41:54 1533

原创 HugeGraph图数据库各类索引功能对比

HugeGraph Database IndexHugeGraph图数据库的索引支持比较全面,图数据库的索引一般包括几方面:图索引/边索引(graph-index):主要用于加速获取顶点的关联边,一般使用邻接表或十字链表等方式,也可以使用hash索引。hugegraph使用的是邻接表。超级点索引(vertex-centric-index):主要用于加速获取超级顶点的部分关联边,比如查...

2020-03-06 17:12:17 1146

原创 大规模数据OLAP分析爆内存问题分析与解决

大规模数据OLAP分析爆内存问题分析与解决PR地址:Fix RocksDB OOM #823问题背景问题表现在执行如下Gremlin语句时,如果一次查询分析的结果数据在千万条以上,进程内存在几分钟内暴涨,JVM老年代占据将近20G内存、RocksDB占用本地内存超过100G,最终导致OOM,甚至进程被系统kill掉。g.V().hasLabel('vbsku').count() g.V...

2020-03-06 14:45:26 603

原创 RocksDB 源码分析-接口下的数据结构

RocksDB 源码分析-接口下的数据结构RocksDB是非常流行的KV数据库,是LSM-Tree数据库的典型代表,很多分布式数据库NewSQL、图数据库都使用RocksDB作为底层存储引擎,RocksDB在稳定性和性能等方面都比较出色。HugeGraph图数据库底层也支持RocksDB作为后端存储,HugeGraph使用的是Java语言,RocksDB是C++语言编写,幸好官方提供了J...

2020-02-26 21:21:21 2434

原创 如何贡献代码到Apollo GitHub

1准备1.1 注册/登录GitHub登录https://github.com,若没有GitHub账号则先进行注册。1.2 fork apollo代码库到自己仓库访问apollo代码库https://github.com/ApolloAuto/apollo,点击“Fork”按钮fork代码到自己仓库:1.3 clone apollo代码到本地fork完成之后会跳转到自己账...

2020-02-26 12:23:14 457

原创 Apollo决策规划planning模块简要分析

决策规划planning模块简要分析入口初始化Planning模块的初始化见Planning::Init()(apollo/modules/planning/planning.cc)。业务逻辑Planning模块的业务逻辑见Planning::RunOnce()(apollo/modules/planning/planning.cc),该函数每隔一段时间执行一次(100ms?),由定时器...

2020-02-26 12:11:15 2820

原创 Java缓存库对比-以及OHCache总结

堆内缓存:LinkedHashMap:Java自带类,内置LRU驱逐策略的实现(access-order);多线程访问需要自己实现同步。Guava Cache:Google Guava工具包中的缓存实现,支持LRU驱逐策略;支持多线程并发访问,支持按时间过期,但只有在访问时才清除过期数据。Ehcache:支持多种驱逐策略:LFU、LRU、FIFO,支持持久化和集群。性能跟Guava Cac...

2020-02-25 00:35:41 3810

转载 基于图数据库的新型肺炎传染图谱建模与分析

原文地址:https://mp.weixin.qq.com/s/9BYk1ONd3gKTzBW0WnxuJw一、背景与数据来源介绍新型肺炎作为一种存在潜伏期的传染病,分析其传染关系及接触关系非常有利于疫情的防控,对疫后的研究分析也有帮助。本文将介绍基于图数据库对新型肺炎图谱进行建模与分析的过程及效果。图数据库(Graph Database)是一种复杂关系数据的处理系统,一种使用顶点...

2020-02-11 16:13:35 2730 1

原创 RocksDB报错:Compression type Snappy is not linked with the binary.

表现:通过JNI打开RocksDB报错:snappy压缩库没有被链接:org.rocksdb.RocksDBException: Compression type Snappy is not linked with the binary. at org.rocksdb.RocksDB.open(Native Method) ~[rocksdbjni-6.6.0-fix-osx.jar:?] ...

2019-12-29 21:27:16 3485

原创 Cassandra的4种超时参数汇总

Cassandra的4种超时参数汇总read_request_timeout_in_ms、write_request_timeout_in_ms、SocketOptions.setReadTimeoutMillisSocketOptions.setConnectTimeoutMillisStatement.setReadTimeoutMillisrequest timeout

2019-12-17 21:44:00 2377

原创 深入学习Gremlin(24):附加操作sideEffect

第24期 Gremlin Steps:`sideEffect()``sideEffect()`: 在某个位置插入一个附加操作,以执行额外的操作,通常可与`store`、`sack`等配合使用。另外如下一些Step本质上也是`sideEffect`: `group(string)`、`groupCount(string)`、`subgraph(string)`、`aggregate(string)`、`inject(string)`、`profile(string)`、`withSideEffect`

2019-04-10 15:23:43 4965 3

原创 深入学习Gremlin(20):遍历栅栏barrier

第20期 Gremlin Steps:barrier()本系列文章的Gremlin示例均在HugeGraph图数据库上执行,环境搭建可参考准备Gremlin执行环境,本文示例均以其中的“TinkerPop关系图”为初始数据,如下图所示:![init-data](file:////Users/lizhangmei/Documents/hugegraph/深入学习Gremlin/init-dat...

2019-04-10 14:45:20 3893 2

原创 深入学习Gremlin(19):结果存取口袋sack

深入学习Gremlin(19):结果存取口袋sack第19期 Gremlin Steps:sack()本系列文章的Gremlin示例均在HugeGraph图数据库上执行,环境搭建可参考准备Gremlin执行环境,本文示例均以其中的“TinkerPop关系图”为初始数据,如下图所示:上一期:深入学习Gremlin(18):随机过滤与注入结果存取口袋说明Gremlin在路径游走的时候,可...

2019-04-05 00:37:34 4425 2

原创 深入学习Gremlin(16):结果聚集与展开

第16期 Gremlin Steps:aggregate()、store()、unfold()、fold()本系列文章的Gremlin示例均在HugeGraph图数据库上执行,环境搭建可参考准备Gremlin执行环境,本文示例均以其中的“TinkerPop关系图”为初始数据,如下图所示:上一期: 深入学习Gremlin(15):分支操作结果聚集与展开说明Gremlin在路径游走的时候,...

2019-03-15 15:49:39 8370 3

原创 深入学习Gremlin(13):路径选取与过滤

第8期 Gremlin Steps:as()+select()、as()+where()、as()+match()、as()+dedup()本系列文章的Gremlin示例均在HugeGraph图数据库上执行,环境搭建可参考准备Gremlin执行环境,本文示例均以其中的“TinkerPop关系图”为初始数据,如下图所示:上一期: 深入学习Gremlin(12):数学运算路径选取与过滤说明...

2019-03-12 11:22:04 9858 9

原创 Java SPI机制实现插件化扩展功能

Java SPI机制实现插件化扩展功能。我们有一个图数据库的服务,用户希望在不修改现有源代码的情况下扩展自定义的分词器,达到可插件式扩展功能的目标。通过Java的SPI机制实现插件式的扩展功能还是比较简便的。特别的,在实现过程中遇到一个比较怪异的问题:ServiceLoader.load()时抛出NoClassDefFoundError,文末会记录一下这个问题的解决过程及原因分析。

2018-09-20 17:37:04 4998 1

原创 HugeGraph Plugin机制及插件扩展流程

HugeGraph是一个开源的图数据库,内置支持多种后端存储,此外还支持通过插件的方式扩展存储后端。插件实现者无需更改HugeGraph本身源代码,插件使用者无需关注代码实现,就能轻松增加插件扩展功能。这篇文章主要讲述了HugeGraph扩展自定义插件的流程。可扩展维度:自定义后端存储、自定义系列化器、自定义配置项、自定义分词器。

2018-09-20 16:02:51 1411 4

原创 深入学习Gremlin(8):数据分组与去重

第8期 Gremlin Steps:group()、groupCount()、dedup()、by()Gremlin支持对数据进行分组和去重。数据分组是指:从某个维度上对拥有相同点的数据进行分组,比如根据年龄分组、根据出生省份分组等。数据去重是指:去除结果集中相同的元素,或者去除在某个维度上具有相同点的数据,比如根据年龄选出一些代表,每个年龄最多只能有一个人。

2018-09-19 11:18:55 13556 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除