第 20 章 安装和部署

优质
小牛编辑
135浏览
2023-12-01

20.1. 部署方案

Neo4j可以嵌入到你的应用中,作为一个独立服务器运行或者部署成HA集群模式提供好性能服务。

表 20.1. Neo4j部署选项

Single Instance

Multiple Instances

Embedded

EmbeddedGraphDatabase

HighlyAvailableGraphDatabase

Standalone

Neo4j Server

Neo4j Server high availability mode

20.1.1. 服务器模式

Neo4j一半作为一个独立服务器访问,要么直接通过一个REST接口或者一个基于指定语言的驱动。关于Neo4j服务器的信息,请参考: 第 17 章 Neo4j服务器。要以HA模式运行服务器,请参考: 第 22 章 高可用性模式。

20.1.2. 嵌入模式

通过引入一个正确的Java库就可以将Neo4j

20.2. 系统要求

内存限制了图数据库的大小,磁盘I/O限制了读写的性能。

20.2.1. 中央处理器

性能通常是消耗在创建大图数据库的内存或者I/O上,以及计算适合内存的图数据库。

最小要求

Intel 486

推荐配置

Intel Core i7

20.2.2. 内存

更多内存允许更大的图数据库,但也会增加更多的垃圾回收操作。

最小要求

1GB

推荐配置

4-8GB

20.2.3. 磁盘

在选择存储设备时,除了容量的考虑,磁盘性能是最重要的。

最小要求

SCSI, EIDE

推荐配置

SSD w/ SATA

20.2.4. 文件系统

为了ACID行为的正确完成,文件系统必须支持flush(fsync,fdatasync)。

最小要求

ext3 (或者更简单的)

推荐配置

ext4, ZFS

20.2.5. 软件

Neo4j是基于Java开发的。

Java

1.6+

操作系统

Linux, Windows XP, Mac OS X

20.2.6. JDK 版本

Neo4j运行时一致都是在使用下面的运行时库测试完成的:

- Oracle Java Runtime Environment JRE 1.6

20.3. 安装

Neo4j可以被安装作为一个独立的服务器,以一个无头程序或者系统服务运行。对于Java开发者,也能将Neo4j作为一个库使用,嵌入到你的应用中。

关于安装Neo4j作为一个独立服务器的更多信息,请参考: 第 17.1 节 “服务器安装”.

下面的表格呈现了可以使用的版本以及它们使用的依赖管理工具名称。

提示

参考下面表格中的连接查看依赖的 Apache Maven, Apache Buildr, Apache Ivy 和 Groovy Grape的配置细节。

表 20.2. Neo4j各版本

Edition

Dependency

Description

License

Community

org.neo4j:neo4j

a high performance, fully ACID transactional graph database

GPLv3

Advanced

org.neo4j:neo4j-advanced

adding advanced monitoring

AGPLv3

Enterprise

org.neo4j:neo4j-enterprise

adding online backup and High Availability clustering

AGPLv3

注意

列出的依赖并不包括实现,但可以从源中拉取。

关于一般许可者的信息,请参考: Licensing Guide.

20.3.1. 嵌入模式安装

最新的发行版总是可以从 http://neo4j.org/download下载,包括Neo4j下载包的各个部分。在选择了适合你的平台的版本后,通过引入jar包到你的应用中来完成嵌入Neo4j。 jar文件可以直接从下载包的目录 lib/获取,也可以从Maven Central Repository [1]获取,包括发行版和里程碑版本。

要获取关于如何使用Neo4j作为Maven或者其他依赖管理工具的一个依赖,请参考下面的表格:

注意

列出的依赖并不包括实现,但可以从源中拉取。

Maven依赖.

1

2

3

4

5

6

7

8

9

10

11

12

<project>

...

<dependencies>

<dependency>

<groupId>org.neo4j</groupId>

<artifactId>neo4j</artifactId>

<version>${neo4j-version}</version>

</dependency>

...

</dependencies>

...

</project>

参数 ${neo4j-version}是期望的版本并且 artifactIdneo4j, neo4j-advanced, neo4j-enterprise中之一。

20.3.2. 服务器安装

更多细节,请参考: 第 17 章 Neo4j服务器和 第 17.1 节 “服务器安装”。

[1] http://repo1.maven.org/maven2/org/neo4j/

20.4. 升级

20.4.1. 自动升级

执行一次普通升级(对于数据库存储有少量变更):

1.下载更新版本的Neo4j。

2.如果要升级的数据库在运行,先关闭。

3.使用新版本的Neo4j启动数据库。

20.4.2. 显性升级

执行一次指定升级(对于数据库存储有显著变更):

1.确保你要升级的数据库已经被明确关闭。

2.在你的配置文件 neo4j.properties或者嵌入配置参数中设置参数: "allow_store_upgrade=true" 。

3.启动数据库。

4.当数据库被成功启动后,升级会自动发生。

5."allow_store_upgrade=true" 配置参数应该被移除或者设置为 "false",或者被注释掉。

20.5. 使用数据收集器

Neo4j使用数据收集器是一个收集使用数据的子系统,报告提交到在ud.neo4j.org的UDC-server。它很容易关闭,而不再收集机密数据。关于发送数据的详细细节,请参考下面的章节。

Neo4j团队使用这些信息作为一个来自Neo4j社区的自动,高效反馈的一种形式。我们想通过匹配使用统计和下载统计来验证我们做了正确的事情。在每一次发行后,我们能看到服务器软件释放有更大的保留空间。

收集的数据清楚地统计在这。如果这个系统将来的任何版本收集额外的数据,我们将清楚地宣布哪些变更。

Neo4j团队非常尊重你的隐私。我们不会公布您的任何隐私信息。

20.5.1. 技术信息

为了收集关于Neo4j使用的更好的统计数据,UDC收集下面这些信息:

- 内核版本:构建编号。

- 存储编号: 在一个数据库在被创建是随机生成的一个全局唯一标识符。

- PING的次数:UDC内部维持一个PING的计数器,在内核重启后重置。

- 来源:有 "neo4j" or "maven"。如果你是从网站下载的Neo4j,那么就是 "neo4j" ; 如果你是使用Maven获取的Neo4j,那么就是 "maven" 。

- Java版本:使用的Java的版本号

- MAC地址

- 注册编号:注册服务器实例的编号

- 关于执行环境上下文的一些标签(比如:test, language, web-container, app-container, spring, ejb)。

- Neo4j发行版本(community, advanced, enterprise)。

- 当前集群名称的一个hash(如果存在集群名称的话)。

- Linux的发行信息(rpm, dpkg, unknown)。

- 追踪REST客户端驱动的User-Agent头信息。

在启动后,UDC在发送第一个PING之前等待10分钟。这基于两方面原因:首先我们不希望因为UDC降低了启动速度; 其次,我们希望保持一个PING来进行最小程序的自动测试。到UDC服务器的PING是通过一个HTTP GET方式完成的。

20.5.2. 如何关闭UDC功能

我们试图让大家更容易关闭UDC。实际上,UDC的代码集成在内核里面而不是一个完全独立的模块。

你可以通过下面两种方式关闭UDC:

1.最容易的方式是移除 neo4j-udc-*.jar 文件,这样内核就加载不了UDC,从而不会自动发送PING请求。

2.如果你使用Maven,并且希望UDC不再安装到你的系统,你可以如下配置:

1

2

3

4

5

6

7

8

9

10

11

<dependency>

<groupId>org.neo4j</groupId>

<artifactId>neo4j</artifactId>

<version>${neo4j-version}</version>

<exclusions>

<exclusion>

<groupId>org.neo4j</groupId>

<artifactId>neo4j-udc</artifactId>

</exclusion>

</exclusions>

</dependency>

3.参数 ${neo4j-version} 是Neo4j的版本。

4.最后,如果你正在使用Neo4j的一个封装版本,而又不想改变任何jar文件,你可以通过一个系统配置参数: -Dneo4j.ext.udc.disable=true来关闭UDC。