创建数据库
正如 Java 快速入门中所展示的那样,数据库是通过 Database 类的 open() 方法创建的。open() 方法有两个版本:
open( String dbName, Parameters params, long size)
open( String dbName, Parameters params, Devices[] devices)
第一个版本适用于内存数据库,因为它允许将数据库大小作为第三个参数简单指定。如果需要共享内存设备或额外的内存设备(这通常仅对持久数据库是必要的),则需要第二个版本。不过对于内存数据库,如果数据库内存可能需要扩展,也可能需要一个或多个额外的内存设备。 对于内存数据库,相关参数如下所述。对于持久数据库,还有其他需要考虑的因素。请使用以下链接查看创建或打开持久数据库的详细说明。
数据库参数
Database.Parameters 类用于指定将存储在数据库中的类以及其他决定运行时行为的属性。Database.Parameters 构造函数使用默认值初始化数据库参数。对于内存数据库,除了默认值之外,通常需要指定的参数只有 memPageSize、classes 和 maxConnections。例如:
public static void main(String[] args)
{
...
Database.Parameters params = new Database.Parameters();
...
params.memPageSize = 128; // Memory page size
params.classes = new Class[] { OpenObj.class }; // 将存储在 eXremeDB 数据库中的类的列表。
params.maxConnections = 10;
内存数据库的 Database.Parameters 类的关键属性有:
- memPageSize:数据库对象和索引页的大小(以字节为单位)
- diskPageSize:设置为零表示内存数据库(并禁用磁盘操作)
- classes:将存储在数据库中的 Java 类列表(这些类必须使用 @Persistent 注解)
- maxConnections:允许连接到数据库的总连接数
内存页大小
memPageSize 属性定义了常规内存中内存页的大小。memPageSize 可以通过计算来优化性能,并且会根据应用程序的动态情况而有所不同,但一般来说,页大小应在 80 到 512 字节之间;在大多数情况下,128 字节的页大小是不错的。
(请注意,对于全内存数据库,Database.Parameters 构造函数会将 diskPageSize 设置为零。)
(还请注意,rtree 索引需要更大的页面大小。如果在数据库事务期间遇到错误代码 MCO_ERR_RTREE 或 MCO_E_DISK_PAGE_POOL_EXHAUSTED,请逐步增加页面大小,直至这些错误代码得到解决。)
最大数据库连接数
maxConnections 属性指定了将为此数据库管理的最大连接数。
示例
创建内存数据库的典型应用程序代码可能如下所示:
static final int DATABASE_SIZE = 16*1024*1024;
public static void main(String[] args)
{
Database db = new Database();
Database.Parameters params = new Database.Parameters();
...
params.memPageSize = 128; // Memory page size
params.classes = new Class[] { Record.class }; // List of classes that will be stored in eXremeDB database.
db.open("operations-db", params, DATABASE_SIZE);