部署

部署主要包括:容量规划、单实例或集群安装及安装后的相关处理。

系统需求

运行一个 Neo4j 数据库实例所需的系统需求清单:

  • CPU:通常性能受限于内存容量和磁盘 I/O 容量。推荐配置:Intel Core i7, IBM POWER8
  • 内存:图越大则所需内存越多。推荐配置:16~32GB 或更多。
  • 磁盘:磁盘性能是最重要的指标。推荐配置:SSD w/ SATA
  • 文件系统:由于普通 Linux / UNIX 系统中存在的缓冲区高速缓存或页面高速缓存,大多数磁盘都是经过缓存进行的。因此当系统发生故障时,这种延迟可能会造成文件更新内容的丢失。推荐配置:ext4 / ZFS
  • 软件:Neo4j 需要一个 Java 虚拟机,因此 Neo4j 中都会提前预装 JVM
Read more »

查询调优

Neo4j 会尽可能地执行查询,然而利用行业的专业知识重新组织语句以获取更好的性能是很有用处的。然而手动优化的总目标是只从图中检索必要的数据,不必要的数据尽可能早地被过滤掉,以减少查询后期需要处理的数据量。同时也要避免返回整个节点和关系,尽量返回节点和关系中需要的数据。

Cypher 执行引擎会将每一个 Cypher 查询都转为一个执行计划。为了减少使用的资源,应尽可能地使用参数代替字面值,这会使得 Cypher 重用查询,而不必解析并构造新的执行计划。

Read more »

问题复现

年后又是一波需求狂潮,在经历了上一周的痛苦上班时间之后,这周一又开始了新的需求,新的 Code 生活也伴随而来重新开始。

首先我先简略描述一下本次的需求,我这边负责的后台向服务端的接口推送一条信息,然后服务端会把接收到的信息处理后,同步推送到我们的另一个接口。
而在上一步的推送信息之后,我们这边会启动一个异步的任务会在特定的时间段内处理服务端返回的信息。
那么问题就来了,在这个异步任务中实时去查询 SQL,但是查询回来的结果是空的

Read more »

定义

基数树在计算机科学中,被翻译为 Radix Tree 或者 Compact Prefix Tree,是一种用于进行空间存储优化的数据结构,其最大的区别点在于它不是按照每个字符长度作为节点进行拆分,而是将一个或多个字符作为一个分支来存储数据,这可以避免长字符出现很深的节点。
neo4j-10.jpeg

Read more »

复现

1
2
Error querying database.  
Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: In aggregated query without GROUP BY,expression #1 of SELECT list contains nonaggregated column 'db.table.column; this is incompatible with sql_mode=only_full_group_by
Read more »

Cypher 概述

Cypher 是一种声明式图数据库查询语言,它具有丰富的表现力,能高效地查询和更新图数据。 Cypher 查询语言设计很人性化,既适合开发人员,也很适合专业的运营人员。

Cypher 借鉴了 SQL 语言的结构,查询可由各种各样的语句组合。语句被链接在一起,相互之间传递中间结果集。

模式

Neo4j 图由节点和关系构成。节点可能还有标签和属性,关系可能还有类型和属性。节点表达的是实体,关系连接一对节点。节点可以按照类似关系数据库中的表,但又不完全一样。节点的标签可以理解为不同的表名,属性类似关系数据库中表的列。一个节点的数据类似关系数据库中表的一行数据。拥有相同标签的节点通常具有类似的属性,但不完全一样,这点与关系数据库中一张表中的行数据拥有相同的列是不一样的。
单个节点或者关系只能编码很少的信息,但模式可以将很多节点和关系编码为任意复杂的想法

Read more »

Neo4j 安装

Neo4j 数据库支持安装部署的操作系统非常广泛,如 WindowsMacCentOSUbuntu 等操作系统均可安装。

其中可以访问 Neo4j 官方网站 ,找到下载链接,然后下载对应的版本。

Mac

Mac 系统自带的 brew 包管理器中可以直接安装 Neo4j

1
brew install neo4j
Read more »

基础

图数据库是基于图论实现的一种新型 NoSQL 数据库。他的数据存储结构和数据的查询方式都是以图论为基础的。图论中图的基本元素为节点,在图数据库中对应的就是节点关系

Read more »

引入

前几天出现的 log4j2 的安全漏洞问题,导致公司的各个项目组就在疯狂的补安全漏洞,我们也不意外的加入到了这个行列之中,开始之前从未考虑的地方: 引用组件低版本升级高版本

其他的漏洞都是大差不差的升级组件,解决组件不同版本之间的差异问题,保证线上功能稳定的情况下,升级各式各样的组件。

Read more »