eXtremeDB Windows Libraries - target\bin

The \target\bin directory under your eXtremeDB installation root contains Java archives extremedb.jar and extremedb_jdbc.jar, a python subdirectory, and a number of binary libraries described below. The Java archive files are required only for Java applications and JDBC applications. The Python subdirectory contains shared object libraries and exdb.py, which are required for Python applications.

Python Subdirectory

The \target\bin\python directory contains the eXtremeDB Python implementation source file exdb.py and the following Windows Dynamic Link Library files. (As for native C libraries, both debug (with suffix _debug) and release mode versions are provided. Only the release mode filenames are listed below.)

eXtremeDB_im_mursiw.pyd
The MURSIW transaction manager for conventional memory.
eXtremeDB_im_mursiw_shm.pyd
The MURSIW transaction manager for shared memory.
eXtremeDB_im_mvcc.pyd
The MVCC transaction manager for conventional memory.
eXtremeDB_im_mvcc_shm.pyd
The MVCC transaction manager for shared memory.

Native C Libraries

The libraries provided for all eXtremeDB packages are described below. (Please refer to the following link for descriptions of additional libraries to support extension module features.)

The native C libraries (upon which the C++, Python, Java, and .NET Framework wrappers depend) are described in the sections below. Each library is provided in two forms:

(Only release mode filenames are shown in the sections below.)

The Windows eXtremeDB runtime can be linked to applications in two ways:

Whereas C and C++ applications will normally statically link the appropriate eXtremeDB libraries, Python, Java, and .NET Framework applications load DLL versions of the necessary libraries at runtime. Use of the dynamically linked runtime provides advantages:

Static Libraries

The sections below describe the static libraries that comprise the eXtremeDB runtime. For a description of the dynamic libraries, see pages eXtremeDB Windows Dynamic Link Libraries and eXtremeDB Extension Module Windows Dynamic Link Libraries.

Required Libraries

The following tables list the essential libraries that implement the eXtremeDB functionality. Platform-dependent functionality is implemented in the set of libraries called the System Access Layer (SAL). At least one library from each of the categories below must be linked to C and C++ applications together with the supporting SAL libraries.

The SAL libraries in the following table implement the indicated functionality for all supported platforms:

mcosalatomic.lib
Atomic operations.
mcosallatches.lib
Latches implementations.
mcosaltimer.lib
Low-resolution and high-resolution timer implementations.
mconet.lib
System network layer.
mcosalmem.lib
System memory management.
mcosalsmp.lib
System mutex, semaphores, threading, and other multi-thread/process related code.
mcosaldload.lib
System dynamic loader.
mcosalhollow.lib
Stub functions for in-memory database single-threaded applications only.

Core Runtime

Of the following libraries, mcolib.lib is required for basic eXtremeDB functions, and either mcovtmem.lib or mcovtdsk.lib is required depending on whether a persistent database is used:

mcolib.lib
Main database functions.
mcovtmem.lib
Virtual Table management for all-in-memory databases.
mcovtdsk.lib
Virtual Table management for persistent and hybrid databases.

Memory Device Manager

Depending on the type of database memory device being used, one of the following libraries is required:

mcomconv.lib
Conventional memory device.
mcomalloc.lib
Conventional memory device with internal memory allocation by the eXtremeDB runtime.
mcomw32.lib
Shared memory device.

Transaction Manager

Depending on the choice of Transaction Manager, one of the following libraries is required:

mcotmursiw.lib
MURSIW (MUlti-Read-Single-Write) transaction manager.
mcotmvcc.lib
MVCC (Multi Version Concurrency Control) transaction manager.
mcotexcl.lib
EXCLusive transaction manager.

Concurrency Management

One of the following libraries is required to manage synchronization of database access from multiple threads or processes.

(Note that for minimalistic single-threaded in-memory database applications, a “hollow” synchronization stub is provided in library mcosalhollow.lib. It has no synchronization code, so it is the fastest implementation—but it is valid for single-threaded applications only. If the application links with mcosalhollow.lib, then no synchronization library is necessary.)

mcosw32.lib
Native Windows synchronization with “atomic operations” to avoid unnecessary kernel calls.
mcosw32n.lib
Native Windows synchronization without “atomic operations”.

Persistent Database Support

All C and C++ applications using the Persistent Storage APIs must link with mcovtdsk.lib instead of mcovtmem.lib for "virtual table" control. In addition, the following file system library is required:

mcofw32.lib
Windows file system support.

Utility Functions

Miscellaneous functionality used in eXtremeDB internals is provided in the following libraries. Depending on whether the standard C runtime libraries are used, one of these is required:

mcouwrt.lib
Utilities using the C runtime.
mcounrt.lib
Utilities without the C runtime.

Optional Libraries

The following sections describe optional libraries that are required only for the specified eXtremeDB features:

Dynamic Module Loader [Optional]

The following library provides the capability to dynamically load parts of the eXtremeDB core on request:

mcoloader.lib
Provides the mco_core_load() API to dynamically load parts of the eXtremeDB core on request.

Sequence Data Type Support [Optional]

These libraries provide basic sequence data type operations such as reading and inserting sequence data. All applications that use the sequence data type must link with one of the following libraries:

mcoseq.lib
Sequence data type API support.
mcoseqrle.lib
Sequence data type with RLE compression API support.

Analytics Function Library Support [Optional]

If, in addition to basic sequence operations, mathematics and statistical functions that operate on sequences are required, applications must link with one of the following libraries:

mcoseqmath.lib
Mathematical and statistical functions operating on sequences.
mcoseqrlemath.lib
Mathematical and statistical functions operating on sequences with RLE compression.

Active Replication Fabric Support [Optional]

eXtremeDB Active Replication Fabric packages provide the following libraries. All applications that use ARF (IoT) APIs must link with both:

mcoiotcomm.lib
IoT communication library.
mcoiotrepl.lib
IoT replication.

Transaction Logging APIs [Optional]

The eXtremeDB Transaction Logging APIs are implemented in the following library. All applications that use the Transaction Logging API must link with:

mcolog.lib
Transaction Logging API.

In addition, all applications that use the Transaction Logging APIs must link with a File System Wrapper library (see the Persistent Database Support section above).

Backup [Optional]

The following library is provided for applications using the incremental backup feature to backup and restore databases on persistent media:

mcobackup.lib
Incremental backup and restore for in-memory and persistent databases.

Serialization [Optional]

The following library is provided for applications using the save / load features to store and retrieve database or class snapshots on persistent media. (Note that this functionality does not require file system wrappers. The save / load features use an abstract stream (implemented by the application) to transfer data to the operating system.)

Serialization capability is implemented in the following library:

mcoseri.lib
Serialization (save and load) for all-in-memory databases.

Uniform Data Access (UDA) [Optional]

For applications that use the Uniform Data Access functions, the following library is required:

mcouda.lib
Required if UDA APIs are used.

Debug Error and Tracing Diagnostics [Optional]

The eXtremeDB tracing framework allows applications to output trace and debugging information to a log file. If desired, the following library can be included:

mcotrace.lib
Required if the tracing framework is used.

Database Calculator [Optional]

The following library is required for applications that use the database calculator:

mcodbcalc.lib
Database Calculator implementation.

Cryptography [Optional]

The Database Encryption feature requires one of the following libraries:

mcocryptaes.lib
AES encryption algorithm.
mcocryptstub.lib
Empty encryption APIs for custom implementation.