This document provides an overview on B.08.40 database changes.
-
Database cross platform binary compatibility.
The Eloquence database was enhanced to support binary compatibility
of database files across platforms.
This allows to simply copy binary database volume files and
forward log files to a target platform and use use replication
for updating without requiring any data conversion.
This allows to move functionality between platforms gradually and
with little effort and without updating the originating system.
-
The dbvolremove utility allows removing
unused database volume files.
-
The new dbvolcreate -b option may be
used to specify the byte order for a new volume set.
-
Updated database replication designation.
-
The fwutil library charset configuration
allows converting data to the specified character set encoding.
Eloquence introduces binary compatibility between different
platforms, for example from HP-UX to Linux.
This allows to simply copy the volume files to the target platform
to move data and then also supports replication across platforms
boundaries. This should allow to move functionality between platforms
gradually and with little effort. As Eloquence B.08.40 is compatible
with previous Eloquence versions and no update is necessary for the
source system.
The database server and utilities were changed to transparently
handle platform, byte order and character set differences.
Once a set of volume files gets copied to another platform it
can also be a traget of replication or applying forward logs.
This is transparent and does not require any configuration.
Instead of the hardware or operating system platform, the database
volume set defines the database binary compatibility.
The software can operate in big endian or little endian mode.
For a big endian volume set (the default on HP-UX) you can use
apply forward log files in big endian format.
A database server using a big endian volume set will create
forward log files iin big endian mode that are then binary
compatible with other environments in big endian mode.
The same applies to dbstore archives. A big endian volume
set creates and/or applies dbstore archives in big endian format.
Utilities that are independent of a volume set, can handle
transparently file formats independently of the volume file.
For example a custom application using the fwutil library to
access the forard log will have its data converted in the
native platform format, regardless how the volume set was set up.
The database server will indicate a volume set configuation
on startup if it differes from the platform default.
A message like below is output to the eloqdb message log.
Volume byte order is BIG_ENDIAN (4321)
- or -
Volume byte order is LITTLE_ENDIAN (1234)
Big endian files are the default on HP-UX, little endian files
are the default on Linux and Windows.
This information is also available in the server http status in
the configuration page which also shows the volume byte order and
character set.
The new dbvolremove utility may be used to remove unused
database volume files. These are log volumes when the
server was shutdown cleanly and data volume files that
currently dont hold data.
If a volume file is not unused it cannot be removed.
Please note that a data volume must be present to verify it
is unused. A log volume may be removed when not present.
The dbvolremove utility is an offline utility.
The database server may not be active. dbvolremove
requires write access to the database volume and the
configuration file and must be started as root or the owner
of the database files.
The dbvolremove option -c may be used to speciy a server
configuration file. Otherwise the default eloqdb.cfg is used.
usage: dbvolremove [options] [ID ...]
options:
-v - verbose
-c cfg - configuration file name
When run without specifying a volume id the volumes are listed
along with an indication if a volume may be removed.
# dbvolremove
ID Type Path
1 DATA /data/db/db01.vol
2 LOG /data/db/db02.vol
3 DATA /data/db/db03.vol
4 DATA /data/db/db04.vol
5 DATA /data/db/db05.vol
ID Type Removable? Free Used
1 DATA no 0.0 2048.0
2 LOG YES 61.4 0.1
3 DATA no 0.0 2048.0
4 DATA no 303.9 1473.6
5 DATA YES 2.5 0.0
To remove a volume file the id of the volume is
specified on the command line.
# dbvolremove 5
Removing DATA volume file #5:
/data/db/db05.vol
1 volume file removed.
ID Type Path
1 DATA /data/db/db01.vol
2 LOG /data/db/db02.vol
3 DATA /data/db/db03.vol
4 DATA /data/db/db04.vol
ID Type Removable? Free Used
1 DATA no 0.0 2048.0
2 LOG YES 61.4 0.1
3 DATA no 0.0 2048.0
4 DATA no 303.9 1473.6
dbvolremove removes the volume file and its reference
from the server configuration file.
The updated volume status is output.
A volume that is currently in used cannot be removed.
# dbvolremove 4
Cannot remove DATA volume #4, not removable:
/data/db/db04.vol
Using dbvolremove does not affect backwards compatibility with
previous Eloquence versions. Future B.08.30 patches will incorporate
a change to improve handling a corner case when a volume file other
then the last one was deleted.
As of B.08.40, the dbvolcreate utility has a new -b option to
specify the volume byte order for a new volume set that is
created. By default the volume set that is created uses the
platform conventions.
-b 0|1 - Byte order 0:LITTLE_ENDIAN 1:BIG_ENDIAN
Platform default: LITTLE_ENDIAN
- The option -b 0 will create a little endian volume set.
This option also implies to use character set encoding of iso-8859-1.
This is the default on Linux and Windows.
- The option -b 1 will create a big endian volume set.
This option implies to use character set encoding of hp-roman8.
This is the default on HP-UX.
This option is mostly intended for testing purposes or to
allow for backwards compatibility with previous Eloquence
releases.
Please notice that the volume set endian setting can only
be specified upon create and cannot be changed subsequently.
The designation of replicated servers and roles was updated
in the B.08.40 release.
A master server is now described as primary server
and a former slave server is now described as a
secondary server or a replicated server.
This affects any messages and configugation options.
Any previous config files are fully compatible.
The follging configuration files were changed to use the
new designation.
- eloqdb.cfg, replication role configuration
- repl.cfg, address of replicated server configuration
dbrepl messages, eloqdb server messages in the
message log and in the dbctl utility were changed
accordingly.
The fwutil library introduces an option to specify the resulting
character set. If set, any database contents are converted as necessary.
If not specified the results are returned in the original encoding
without any conversion.
The new Fwr_local_charset() function allows to specify
the local character set. The character set name is passed as an
argument, The function returns the character set name or an empty
string if an invalid name was specified.
const char *Fwr_local_charset(const char *cset)
Valid character set names are:
- iso-8859-1, iso88591
- hp-roman8, hproman8, roman8
This can be useful to handle big endian or little endian data in the
same fwutil custom code or have big endian data converted into
the more common iso-8859-1 encoding.
Setting the FWUTIL_CHAR_ENCODING environment variable has the
same effect as calling the Fwr_local_charset function.
It may specify a character set name that is then passed to the
Fwr_local_charset() function.
FWUTIL_CHAR_ENCODING=hp-roman8
If set before starting an fwutil application this will ensure that
any data are converted to hp-roman8 encoding before calling the
fwutil callback.
|