TurboIMAGE to Eloquence Migration
Transcript of TurboIMAGE to Eloquence Migration
![Page 1: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/1.jpg)
TurboIMAGE to Eloquence MigrationMichael MarxmeierMarxmeier Software AG
![Page 2: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/2.jpg)
2
Eloquence at a glance• Excellent compatibility and performance for IMAGE based applications
• Cost effective
• Supports multiple platforms
• Proven solution
![Page 3: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/3.jpg)
3
Excellent compatibility• All TurboIMAGE intrinsics are supported and behave (almost) identical
• HP3000 applications can typically be ported with no or only minor changes
![Page 4: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/4.jpg)
4
Excellent 3rd party compatibility• Eloquence is supported by a range of well known 3rd party tools− SUPRTOOL (Robelle)− Cognos Powerhouse− Speedware− ASK Plus (Vital Soft)− MPUX (Ordina Denkart), AMXW (Speedware)− Multiple ODBC solutions available (Marxmeier, MB
Foster, Minisoft)− BackPack (ROC), Rosetta Store (Allegro)
![Page 5: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/5.jpg)
5
Cost effective• Eloquence saves considerable time and effort in the migration process and allows focusing on other tasks
• Eloquence is easy to manage and retains existing know how
• Eloquence is priced attractively
![Page 6: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/6.jpg)
6
Complete package• The Eloquence database comes with
− Comprehensive set of database utilities− Structural maintenance− Integrated indexing− On-line backup− MPE migration tools
![Page 7: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/7.jpg)
7
Product history• Eloquence was created by Marxmeier Software and sold to Hewlett-Packard
• Eloquence was first released in 1989 as a migration solution to move HP250/HP260 applications to HP-UX
• Marxmeier Software has been responsible for Eloquence development and support
• The Eloquence product was transferred back to Marxmeier Software in 2002
![Page 8: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/8.jpg)
8
Product components• Eloquence programming language (based on HP Business Basic)
• Eloquence database (based on IMAGE)
• Graphical User Interface
• Development environment
![Page 9: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/9.jpg)
9
Product overview• About 2500+ installations worldwide
• Used by about 60+ VARs / ISVs worldwide
• Covers a wide range of industries and sizes from single user to a few hundred concurrent users
![Page 10: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/10.jpg)
10
Recent product updates• Full support of TurboIMAGE btree modes (“superchains”)
• MPE client library to transparently access Eloquence databases from MPE applications
• Increased number of concurrent connections on HP-UX
• Improved performance for larger configurations
• New patch bundles, improved patch installation on Windows
![Page 11: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/11.jpg)
Eloquence Database ArchitectureAn introduction to the Eloquence database architecture
![Page 12: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/12.jpg)
12
Overview• The Eloquence database is almost 100% compatible to TurboIMAGE at the application level
• The underlying architecture is different
![Page 13: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/13.jpg)
13
Client/Server architecture• Database access is performed by a server process
• The application is linked with the database API
• The server is connected through the network (or shared memory)
![Page 14: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/14.jpg)
14
Client/Server architecture
Application
Database Client
Server
![Page 15: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/15.jpg)
15
Network transparent• Applications running on different machines and operating systems can access a common database
• Requests and results are translated transparently− Character set encoding− Byte order conversion
![Page 16: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/16.jpg)
16
Multiple platforms• Eloquence is available for multiple operating systems and architectures− HP-UX on PA-RISC and Itanium− Linux on Intel IA-32 (Itanium)− Windows NT/2000/XP/2003 on Intel IA-32− Database client library on MPE
![Page 17: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/17.jpg)
17
Indexing• Eloquence comes with integrated indexing
• Indexes are used instead of hashing with master sets
• Eloquence implements the TurboIMAGE btree modes and a commonly used subset of the TPI functionality
![Page 18: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/18.jpg)
18
Locking• Locking is fully compatible with TurboIMAGE
• Eloquence does not impose a locking strategy− Write operations do not require a previous lock. If a
conflicting lock is granted, a status is returned
• Additional functionality is available− READ locks are supported− Selective DBUNLOCK− Multiple DBLOCKs are allowed
• Deadlock conditions are detected and a status is returned
![Page 19: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/19.jpg)
19
Transactions• All databases are part of a transaction
• Uncommitted changes are not visible to other processes
• Transactions are not limited in size
• Nested transactions are supported
• Transactions do not require locking
![Page 20: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/20.jpg)
20
Database names• A database name is not restricted to 6 characters
• Databases do not reside in the file system but are managed through a server process
• A database name may specify a server instance instead of a file location
• Database names are not case sensitive
• A dot may be used in a database name (eg. SAMPLEDB.TEST) but has no special meaning
![Page 21: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/21.jpg)
21
Database names• Database name syntax
[[hostname][:service]/]database− Hostname specifies database server system− Service specifies database server instance
• For example SAMPLEDBlocalhost/SAMPLEDBlocalhost:eloqdb/SAMPLEDB:eloqdb/SAMPLEDB
![Page 22: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/22.jpg)
22
Database names• The EQ_DBSERVER environment variable may be used to specify the default server instance
• For example:EQ_DBSERVER=invent9k.external.hp.com:8102
− Specifies that the default server instance that manages the database
− The default is used unless a more specific information is provided
![Page 23: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/23.jpg)
23
Database security• The database password is not used to grant database access rights
• The DBOPEN password argument is typically ignored
• Schema passwords and user classes become groups that have associated access privileges (read/write/erase)
• The database server maintains a list of users
• A user can be a member of multiple groups
![Page 24: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/24.jpg)
24
Database Security
sysuser
sysmember
sysgroup systables
sysprivileges
Server global Database specific
![Page 25: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/25.jpg)
25
Database security• The new DBLOGON procedure may be used to specify user and password
• A file can be specified to provide the user name or password
• A default user is used if no specific user is provided
![Page 26: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/26.jpg)
26
Database security• The EQ_DBUSER and EQ_DBPASSWORDenvironment variables may be used to specify the default user or password
• For example:
EQ_DBUSER=file:/home/mike/secret
EQ_DBUSER=mikeEQ_DBPASSWORD=file:/home/mike/passwd
− The default is used unless a more specific information is provided
![Page 27: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/27.jpg)
27
Database environment• A database environment consists of
− a configuration file− one or more data volumes− a transaction log volume
• Multiple database environments can coexist on the same machine, each managed by a separate server process
![Page 28: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/28.jpg)
28
Volume files• Databases do not reside in the file system but are kept in Volume files
• Volume files are a storage container managed by the database server
• A maximum of 255 volume files are supported in a server environment
• The maximum size of a single volume file is 128 GB (currently limited to 2 GB on HP-UX and Linux)
![Page 29: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/29.jpg)
29
Server catalog• Eloquence does not use a ROOT file
• Structural information is maintained in the database environment
• The server catalog is initialized with the dbvolcreate utility and maintained with the schema and dbutil utilities
![Page 30: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/30.jpg)
30
Database limits• Eloquence B.07.00 schema limits
− 2048 data items− 500 data sets− 64 / 16 paths− Entry length 5120 bytes
![Page 31: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/31.jpg)
31
Scalability• Database / data set size is limited by the disk space allocated to the database environment− Current limit is ~500 GB− Hard limit is ~32 TB
• Number of concurrent users per database environment is currently limited to 1000
![Page 32: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/32.jpg)
Database Utilities
An overview on the Eloquence database utilities
![Page 33: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/33.jpg)
33
Offline utilities• dbvolcreate / dbvolextend / dbvolchange - volume file management
• dblogreset – reset log volume files to initial size
• dbvoldump - display volume properties
• dbfsck - volume consistency check and simple repair tool
• dbcfix - database consistency check and repair tool
• dbrecover - forward recovery
![Page 34: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/34.jpg)
34
Administrative utilities• dbctl - server management utility
− Communicates with the database server and may be used to change settings or retrieve status information
• HTTP status monitor− A web browser may be used to retrieve status information
from the database server
![Page 35: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/35.jpg)
35
Database utilities• schema - Schema processor
• dbcreate / dberase / dbpurge - create / erase / purge database
• dbtables - database cross reference
• prschema - re-create schema from database
• dbdumpcat - catalog information utility
![Page 36: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/36.jpg)
36
Database utilities• dbexport / dbimport - export/import data base content to/from text file
• dbinfo - short overview on datasets
• dbutil - change database configuration and structure, database security
• QUERY utility (different from QUERY/3000)
![Page 37: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/37.jpg)
37
Database utilities / Examples (1)• Create a database
dbschema sample.schemadbcreate sample
• Purge a databasedbpurge sample
• Erase a databasedberase sample
• Re-create database schema fileprschema sample >sample.schema
![Page 38: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/38.jpg)
38
Database utilities / Examples (2)• Export a database
dbexport –vs sample.exp sample
• Import a databasedbimport –vs sample.exp sample
• Get a list of data sets and records for a databasedbinfo sample
• Get a list of all databasesdbdumpcat –t31
![Page 39: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/39.jpg)
39
Database utilities / Examples (3)• Change database structure
dbutil sample.chg
DATA BASE “sample”;CREATE ITEM matchcode, X10;CREATE IITEM imatchcode = matchcode;CHANGE SET customers {SET INDEXED;ADD ITEM matchcode;ADD INDEX imatchcode;}
− Add a new item and index definition− Mark set customers as /INDEXED and add an item and
index
![Page 40: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/40.jpg)
40
Database utilities / Examples (4)• Start/stop on-line backup mode
dbctl –u dba backup startdbctl –u dba backup stop
• Get a list of opened databasesdbctl list db
• Get a list of active locksdbctl list lock
![Page 41: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/41.jpg)
Installation and Configuration
Installation and Configuration of the Eloquence database
![Page 42: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/42.jpg)
42
Installation overview• Install the product and patches (OS or product)
• Configure the operating system
• Configure automatic server startup
• Create the database environment
• Platform differences
![Page 43: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/43.jpg)
43
Evaluation license• By default the “Personal Edition” license key is installed
• A temporary license key can be created during installation
• A temporary license key can be requested from the Eloquence web site
![Page 44: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/44.jpg)
44
Create eloqdb user/group • Create a user name and a group name(e.g. eloqdb) to be used as the owner/group of the database files
• On Windows the system account is used by default
![Page 45: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/45.jpg)
45
Server configuration file• The config file defines server properties
− configuration− scaling and tuning parameters− volume files
• Default server configuration file is/etc/opt/eloquence6/eloqdb6.cfg
![Page 46: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/46.jpg)
46
Simple server configuration
[Server]Service = eloqdbServiceHTTP = 8103UID = eloqdbGID = eloqdbEnableIPC = 2SyncMode = 0
[Config]Threads = 100IOThreads = 4BufferCache = 64CheckPtSize = 50
![Page 47: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/47.jpg)
47
Shared memory• EnableIPC
− EnableIPC=0 (default) disables use of shared memory communication
− EnableIPC=1 enables use of shared memory • Uses a separate memory segment per connection
− EnableIPC=2 (recommended) enables use of a single shared memory segment• Uses a common memory segment for all connections
![Page 48: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/48.jpg)
48
Sync/Async mode• SyncMode
− SyncMode=1 (default) pushes all committed transactions to disk immediately and waits for completion
− SyncMode=0 writes changes to disk asynchronously and does not wait for completion
• SyncerFlushInterval− Specifies the time (in msec) after which changes to the
transaction journal are flushed to disk (used with SyncMode=1). The default is 500 ms
![Page 49: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/49.jpg)
49
Database server configuration• Threads
− Defines the max. number of concurrent connections for this server instance
• IOThreads− Defines the max. number of concurrent I/O operations
(default=4)− Depends on the I/O capabilities
• BufferCache− Defines the memory reserved for the database cache
![Page 50: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/50.jpg)
50
Create volume files• dbvolcreate /var/opt/eloquence6/data01.vol
• dbvolextend –t log /var/opt/eloquence6/log.vol
• Optional:dbvolextend –t data /var/opt/eloquence6/data02.vol
![Page 51: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/51.jpg)
51
Start the server• On HP-UX and Linux the server may be started from the command line− HP-UX /sbin/init.d/eloq6 start− Linux /etc/init.d/eloq6 start
• A configuration file may be used to specify the services that are started
• On Windows the “services” control panel is used to manually start and configure the autostart of the eloqdb6 service.
• The Eloquence eloqsd service is often not needed and should not be started
![Page 52: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/52.jpg)
52
Troubleshooting• The Eloquence database writes diagnostic messages to the syslog− HP-UX: /var/adm/syslog/syslog.log− Linux: /var/log/messages− Windows: application event log
![Page 53: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/53.jpg)
53
Linux installation• Eloquence uses the RPM package manager
− RedHat Linux 7.x to 9 and SUSE Linux 7.x to 9 have been certified
− Other Linux distributions may be used but additional manual configuration may be required
• Temporary license option is not available during installation on Linux
![Page 54: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/54.jpg)
54
Windows installation• Eloquence uses the standard Windows Installer
• Different setup programs are used for Windows 2000/XP/2003, Windows NT and Windows 9x
• Different setup programs for download and CD-ROM installations
![Page 55: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/55.jpg)
Administrative Procedures
Database backup
![Page 56: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/56.jpg)
56
Off-line backup• Shutdown the eloqdb6 server process
• Backup all volume files
• Re-start the server process
![Page 57: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/57.jpg)
57
On-line backup• In on-line backup mode, the data volumes are frozen
• Modifications during on-line backup are temporarily saved into the transaction log volume
• Any backup software may be used to create a consistent backup
![Page 58: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/58.jpg)
58
On-line backup• Enable on-line backup mode
• Backup the data volume file(s)− Backup of the log volume is optional
• Disable on-line backup mode
• Example backup scriptdbctl -u file:/root/credentials backup starttar -cf /dev/rmt/0m /databasedbctl -u file:/root/credentials backup stop
![Page 59: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/59.jpg)
59
Forward logging• Forward logging is used to record all modifications since a previous backup
• The forward log files can be managed automatically by the server process
• The dbrecover utility is used to apply a forward log to a previous backup− Restore the volume files from backup− Apply archived transactions
![Page 60: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/60.jpg)
60
Database maintenance• Make sure sufficient volume and disk space is available− Use the dbvoldump utility if the server is off-line− Use dbdumpcat or the HTTP status if the server is active
• The dbutil utility is used to change database configuration or structure
![Page 61: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/61.jpg)
TurboIMAGE compatibility
How to migrate an application to Eloquence
![Page 62: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/62.jpg)
62
TurboIMAGE compatibility• All TurboIMAGE intrinsics are supported and behave (almost) identical
• HP e3000 applications can usually be ported with no or only minor changes
• Compatibility goes beyond intrinsic calls. Applications are built on assumptions and take advantage of specific behavior
![Page 63: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/63.jpg)
63
TurboIMAGE compatibility• Not supported:
− DBCONTROL modes which are specific to TurboIMAGE implementation details
− Item level security (all items considered writable)
• Possibly required changes:− Eloquence requires the database name is terminated with
a space, semicolon or NUL character− IMAGE passwords are usually ignored
![Page 64: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/64.jpg)
64
TurboIMAGE compatibility• TurboIMAGE compatibility is implemented at different levels− The database server implements functionality at the
backend− The database client and utilities provide support for
TurboIMAGE functionality− The TurboIMAGE compatibility API (image3k) implements
source code compatibility
![Page 65: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/65.jpg)
65
TurboIMAGE compatibility• The Eloquence image3k library implements the TurboIMAGE intrinsics− The image3k library maps the differences between the
TurboIMAGE intrinsics and the Eloquence API− As IMAGE is implemented at the database core it does
not cause a performance impact
• The application (or language runtime) is linked against the image3k library− On Windows multiple versions of the image3k library
implement different calling conventions
• The image3k.h include file provides the function prototypes (C, C++)
![Page 66: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/66.jpg)
66
TurboIMAGE compatibility
MPE Application
TurboIMAGE API (image3k)
Server (eloqdb process)
Database Client (eqdb)
![Page 67: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/67.jpg)
67
Using Eloquence with Acu Cobol• Link the Eloquence image3k library to the ACU Cobol runtime (runcbl)− Instructions for HP-UX and Linux are available on the
Eloquence web site
• Load the Eloquence image3k library dynamically (using CALL)
• Eloquence currently uses native byte order− On little endian platforms (Intel IA-32) COMP-5 type must
currently be used instead of COMP− The –D5 compiler option maps all COMP to COMP-5
![Page 68: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/68.jpg)
68
Using Eloquence with MicroFocus Cobol• Link the Eloquence image3k library to the application
• The SIGN “EBCDIC” compiler directive is required to make sure the binary encoding of ‘Z’ items is compatible
• Eloquence currently uses native byte order− On little endian platforms (Intel IA-32) COMP-5 type must
be used instead of COMP− A compiler directive may be used to map the COMP to the
COMP-5 type MAKESYN “COMP-5” = “COMP”
![Page 69: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/69.jpg)
Migration Issues
Real World Issues
![Page 70: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/70.jpg)
70
Data set capacity• Data set capacity has a different meaning
− Eloquence has no concept of a data set specific capacity− Eloquence returns the highest record number allocated
for a data set as capacity value in DBINFO modes 202 and 205
• Eloquence data sets are dynamic and grow as required
![Page 71: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/71.jpg)
71
Data set capacity (2)• Application may check for „enough room“ in a data set
• Solution:− Remove or disable capacity check
• Workaround:− Trap Eloquence DBINFO 202 and 205 modes and return
„expected“ value as capacity
![Page 72: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/72.jpg)
72
Don’t lie to schema• TurboIMAGE does not really care what you put in a character field
• Eloquence relies on type information− Eloquence may need to convert strings to different
encoding− Eloquence may need to do a byte order conversion on
binary types− Eloquence uses indexes which require type specific
ordering
![Page 73: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/73.jpg)
73
Don’t lie to schema (2)• Solution:
− Use separate fields for different information− Use the correct item type
• Workaround:− Use Eloquence on a single platform− Use Eloquence binary item type ‘B’
![Page 74: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/74.jpg)
74
Character set encoding• On MPE the HP-ROMAN8 character set encoding is often used− HP-ROMAN8 encoding is typically not available on other
platforms− Eloquence defaults to the HP-ROMAN8 character set on
HP-UX (and MPE) and to ISO-8859-1 on other platforms− Eloquence performs conversion “on the fly”
![Page 75: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/75.jpg)
75
Byte order• PA-RISC and Itanium (with HP-UX) use big endian byte order
• Intel IA-32 and Itanium (Linux and Windows) use little endian byte order
• Eloquence performs conversion “on the fly” for binary types if necessary
![Page 76: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/76.jpg)
76
Record numbers• Eloquence uses a different algorithm to assign and re-use record numbers− TurboIMAGE uses a LIFO (last in first out) order to reuse
deleted records (unless HWMPUT is active)− Eloquence uses a FIFO (first in first out) order to use
available record numbers− Eloquence does not support HWPUT, application has no
control over record number usage
![Page 77: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/77.jpg)
77
Record numbers (2)• DBDELETE / DBPUT sequence likely results in different record number
• Solution:− Fix the application
• Workaround:− Use DBUPDATE mode 2 (same as DBUPDATE mode 1
and CIUPDATE)
![Page 78: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/78.jpg)
78
Identical database names• TurboIMAGE supports to use the same database name in different groups
• Eloquence requires an unique database name per server instance
• Solution:− Use multiple server instances (eg. test / production
environments)− Add the group name to the database name (eg.
DBNAME.GROUP)
![Page 79: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/79.jpg)
79
Access to database files• TurboIMAGE databases reside in the file system
• Applications could use file system operations to copy databases
• Eloquence databases reside in the volume files and are not accessible separately
• Solution− Copy whole database environment− Use dbstore to extract single database and dbrestore to
restore database in another server instance− Use dbexport / dbimport
![Page 80: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/80.jpg)
80
Parameter alignment• TurboIMAGE requires most arguments to be 16 bit aligned
• Eloquence relaxes most alignment restrictions
• Eloquence does not require a specific alignment for string arguments
![Page 81: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/81.jpg)
81
Locking• Eloquence does not require locking
• An application error may not be noticed unless a concurrent lock exists
• Master sets have no special locking requirements
• Read locks may be used to improve concurrency
• Eloquence transactions do not require locking
• A DBUNLOCK in a transactions is delayed until the transaction ends
![Page 82: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/82.jpg)
Data Migration
Move your databases from TurboIMAGE to Eloquence
![Page 83: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/83.jpg)
83
Overview• Schema files are compatible and no change is required
• Eloquence includes MPE tools to export the database content to flat files
• Transfer the schema file and the export files to the target system
• On the target system run the schema processor, the dbcreate utility and the dbimport utility
![Page 84: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/84.jpg)
84
Export the database• When running from the POSIX shell the arguments are separated by a space$ DBEXPORT -p SECRET -v TESTDB
• When running from the MPE shell (CI) you need to enclose the arguments in quotes: DBEXPORT "-p SECRET -v TESTDB"
![Page 85: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/85.jpg)
85
Transfer the files• Transfer your schema file and the export files to the Eloquence system
• When transferring by ftp − use text mode to transfer the schema file− use binary mode to transfer the export files
• Rule− Byte files should be transferred in binary mode− Other MPE files (containing text) should be transferred in
text mode to convert them to byte files
![Page 86: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/86.jpg)
86
Create the database• Run the Eloquence schema processor $ dbschema schemafile$ schema -T schemafile− Option -T selects TurboIMAGE compatibility mode
• Create the database$ dbcreate database
![Page 87: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/87.jpg)
87
Import the data• Use dbimport to load the database
$ dbimport -v –z roman8 database− The option -v displays the import progress− On the Windows and Linux platform you should specify
the -z roman8 option to indicate the source data uses the HP-ROMAN8 encoding
− This makes sure any national characters ("Umlaute") are converted
![Page 88: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/88.jpg)
88
More information
• Detailed information is available on the Eloquence web sitehttp://www.hp-eloquence.com
• Get in contact:[email protected]
Michael MarxmeierMichael [email protected]@marxmeier.com
![Page 89: TurboIMAGE to Eloquence Migration](https://reader033.fdocuments.us/reader033/viewer/2022052304/55cf9dca550346d033af335a/html5/thumbnails/89.jpg)
Co-produced by: