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§
- Compression
Mask - A mask of page classes for compression.
- Database
- A database instance.
- LogParams
- Database log parameters.
- Mode
Mask - Database open mode mask.
- Params
- Database parameters.
Enums§
- Commit
Policy - Transaction commit policy.
- LogType
- Database log type.
- Trans
Sched Policy - Transaction scheduling policy.