创建持久数据库
参数设置
请参考“创建数据库”页面中讨论的一般准则,以确定 MemPageSize、DiskPageSize、MaxConnections、MaxDiskDatabaseSize 和 LogType 的适当值。To create or open a persistent database, the application ...
日志类型和事务提交策略
应用程序在调用“Database”方法“open()”时,将“DatabaseParameters.LogType”设置为“RedoLog”、“UndoLog”或“NoLog”。根据所选的日志类型,还可以设置“Database.Parameters”属性“RedoLogLimit”或“DelayedCommitThreshold”。(有关详细说明,请参阅“持久数据库 I/O”页面。)
请注意,如果选择了 NoLog 日志类型,应用程序可以使用 Connection 方法 diskFlush() 显式地强制将缓存刷新到介质。
存储设备规格说明
正如 Python 内存设备页面所解释的那样,使用持久性数据库的应用程序必须指定至少四个内存设备:
- 字典和元数据,以及可能的临时类数据:私有或共享内存设备
- 持久数据存储:文件、多文件或 RAID 设备
- 持久数据缓存:私有或共享内存设备
- 事务日志:文件、多文件或 RAID 设备
为了指定这些设备,应用程序实例化一个设备元组并将其传递给 open_database() 调用。例如,以下代码片段为内存中或持久数据库定义了内存空间,然后创建了数据库:
if self.disk:
devices = (self.exdb.fileDevice(self.exdb.Device.Data, "open_db.dbs"),
self.exdb.fileDevice(self.exdb.Device.TransactionLog, "open_db.log"),
self.exdb.privateMemoryDevice(self.exdb.Device.Data, 4*1024*1024),
self.exdb.privateMemoryDevice(self.exdb.Device.DiskCache, 16*1024*1024)
)
else:
devices = ( self.exdb.privateMemoryDevice(self.exdb.Device.Data, 4 * 1024*1024), )
self.db = self.exdb.open_database(dbname='opendb', dictionary=dict, is_disk=self.disk, devices=devices);
请注意,为了打开现有的持久化数据库,应用程序必须指定与创建该数据库时相同的 open_database() 参数。