Module database

Source
Expand description

Core database types.

For detailed information on database configuration, refer to the eXtremeDB reference pages.

§Examples

Creating an in-memory database using conventional memory:

use extremedb::{database, device, runtime, Result};

fn main() -> Result<()> {
    let runtime = runtime::Runtime::start(vec![]);

    // This example creates a conventional memory device, and will not work with the
    // shared memory runtime.
    assert!(!runtime.info().multiprocess_access_supported());

    // Default parameters.
    let db_params = database::Params::new();

    // Create an in-memory device and allocate memory.
    let mut devs = vec![device::Device::new_mem_conv(
        device::Assignment::Database,
        1024 * 1024,
    )?];

    // Open the database.
    let db = database::Database::open(&runtime, "test_db", None, &mut devs, db_params)?;

    // ...

    Ok(())
}

Creating a persistent database (note that extremedb_sys must be built with persistent database support — refer to its documentation pages for the details):

use extremedb::{database, device, runtime, Result};

fn main() -> Result<()> {
    let runtime = runtime::Runtime::start(vec![]);

    // Make sure that persistent database support is enabled.
    assert!(runtime.info().disk_supported());

    // This example creates conventional memory devices, and will not work with the
    // shared memory runtime.
    assert!(!runtime.info().multiprocess_access_supported());

    // Default parameters.
    let db_params = database::Params::new();

    // Database and log file names.
    let db_file = "db.dbs";
    let log_file = "db.log";

    // Create an array of devices for the persistent database.
    let mut devs = vec![
        // In-memory portion of the database.
        device::Device::new_mem_conv(device::Assignment::Database, 1024 * 1024)?,
        // Disk page pool.
        device::Device::new_mem_conv(device::Assignment::Cache, 1024 * 1024)?,
        // Database file.
        device::Device::new_file(
            device::Assignment::Persistent,
            device::FileOpenFlags::new(),
            db_file,
        )?,
        // Database log file.
        device::Device::new_file(
            device::Assignment::Log,
            device::FileOpenFlags::new(),
            log_file,
        )?,
    ];

    // Open the database.
    let db = database::Database::open(&runtime, "test_db", None, &mut devs, db_params)?;

    // ...

    Ok(())
}

Structs§

CompressionMask
A mask of page classes for compression.
Database
A database instance.
LogParams
Database log parameters.
ModeMask
Database open mode mask.
Params
Database parameters.

Enums§

CommitPolicy
Transaction commit policy.
LogType
Database log type.
TransSchedPolicy
Transaction scheduling policy.