升级


OrientDB使用语义版本系统, 版本后遵循格式MAJOR.MINOR.PATCH, 三部分的含义分别是:

  • MAJOR 版本意味着兼容的API变化
  • MINOR 版本意味着向后兼容的功能
  • PATCH 版本意味着向后兼容的bug修复

所以,在PATCH版本之间,肯定能保证兼容性(例如1.7.0 -> 1.7.8)。在MINOR和MAJOR版本之间,需要导出然后重新导入数据库。要了解你的升级是否必须使用导出和导入数据库的方式进行,查看下面"Database"的列:

兼容性矩阵

FROM TO Guide Blueprints Database Binary Protocol HTTP Protocol
2.0.x 2.1.x Release 2.1.x Final v2.6.0 Automatic 30 10
1.7.x 2.0.x Migration-from-1.7.x-to-2.0.x Final v2.6.0 Automatic 25 10
1.6.x 1.7.x Migration-from-1.6.x-to-1.7.x Final v2.5.0 Automatic 20, 21 10
1.5.x 1.6.x Migration-from-1.5.x-to-1.6.x Changed v2.5.x Automatic 18, 19 10
1.4.x 1.5.x Migration-from-1.4.x-to-1.5.x Changed v2.4.x Automatic 16, 17 10
1.3.x 1.4.x Migration-from-1.3.x-to-1.4.x Changed v2.3.x Automatic 14, 15 n.a.
1.2.x 1.3.x n.a. Changed v2.2.x OK OK OK Need export & Re-import 12, 13 n.a.

参考:

从LOCAL存储引擎迁移到PLOCAL

从OrientDB 1.5.x版本开始,引入了一个全新的存储引擎:PLCOAL(分页 LOCAL)。 它像LOCAL一样持久化,但是存储信息的方式不同。下面是它和LOCAL的主要区别:

  • 记录被存储在簇文件汇总,而LOCAL被簇和数据段分割
  • 比LOCAL更加耐用,以为采用的是append-on-write(追加写入)模式
  • 写的时候采用更少争夺锁,意味着更高的并发
  • 不使用内存映射技术(Memory Mapping techniques (MMap)),所以行为是“可预期的”。

从LOCAL存储迁移到新的PLOCAL, 需要先导出数据库,然后使用PLOCAL存储引擎重新导入。使用如下步骤:

1) 打开命令行脚本

2) 导出数据库,例如导出到目录/temp/db:

$ bin/console.sh (or bin/console.bat under Windows)
orientdb> CONNECT DATABASE local:/temp/db admin admin
orientdb> EXPORT DATABASE /temp/db.json.gzip
orientdb> DISCONNECT

3) 创建一个新的数据库使用"plocal"引擎:

a) 在一个本地存储引擎:

  orientdb> CREATE DATABASE plocal:/temp/newdb admin admin plocal graph

b) 在远程服务器: (使用服务器的身份认证访问):

  orientdb> CREATE DATABASE remote:localhost/newdb root password plocal graph

4) 现在导入旧的数据库:

orientdb> IMPORT DATABASE /temp/db.json.gzip -preserveClusterIDs=true
orientdb> QUIT

5) 如果在同一个JVM访问,记着改变URL中的"local:"为"plocal:"

迁移图到RidBag

1.7版本后,RidBag是存储图的邻接关系的默认集合。尽管老版本的数据库使用MVRB树完全兼容,但是你可以更新你的数据库到更新的格式。

可以通过命令窗口或者ORidBagMigration类完成迁移。

使用命令窗口

  • Connect to database CONNECT plocal:databases/GratefulDeadConcerts
  • Run upgrade graph command

使用API

  • Create OGraphMigration instance. Pass database connection to constructor.
  • Invoke method execute()