# wasm-dbms-memory

[](https://opensource.org/licenses/MIT)
[](https://github.com/veeso/wasm-dbms/stargazers)
[](https://crates.io/crates/wasm-dbms-memory)
[](https://crates.io/crates/wasm-dbms-memory)
[](https://ko-fi.com/veeso)
[](https://conventionalcommits.org)
[](https://github.com/veeso/wasm-dbms/actions)
[](https://coveralls.io/github/veeso/wasm-dbms)
[](https://docs.rs/wasm-dbms-memory)
Runtime-agnostic memory abstraction and page management for the wasm-dbms framework.
This crate provides the storage layer used by `wasm-dbms`, handling page-level memory
operations, schema persistence, access control, and record-level storage.
## Components
- [`MemoryProvider`](https://docs.rs/wasm-dbms-memory/latest/wasm_dbms_memory/trait.MemoryProvider.html) - Trait for abstracting memory backends (stable memory, heap, etc.)
- [`HeapMemoryProvider`](https://docs.rs/wasm-dbms-memory/latest/wasm_dbms_memory/struct.HeapMemoryProvider.html) - In-memory implementation for testing
- [`MemoryManager`](https://docs.rs/wasm-dbms-memory/latest/wasm_dbms_memory/struct.MemoryManager.html) - Page-level memory operations
- [`SchemaRegistry`](https://docs.rs/wasm-dbms-memory/latest/wasm_dbms_memory/struct.SchemaRegistry.html) - Table schema persistence
- [`AccessControlList`](https://docs.rs/wasm-dbms-memory/latest/wasm_dbms_memory/struct.AccessControlList.html) - Identity-based access control
- [`TableRegistry`](https://docs.rs/wasm-dbms-memory/latest/wasm_dbms_memory/struct.TableRegistry.html) - Record-level storage and retrieval
## Memory Model
The memory is organized into 64 KiB pages:
```text
+-------------------------------------+
| ACL Table (1 page) |
+-------------------------------------+
| Table XX Page Ledger (1 page) |
| Table XX Free Segments Ledger |
+-------------------------------------+
| Table YY Page Ledger (1 page) |
| Table YY Free Segments Ledger |
+-------------------------------------+
| Table XX Records - Page 1 |
| Table XX Records - Page 2 |
| Table YY Records - Page 1 |
| ... |
+-------------------------------------+
```
## Usage
```rust
use wasm_dbms_memory::prelude::*;
// Use HeapMemoryProvider for testing
let provider = HeapMemoryProvider::default();
let mut manager = MemoryManager::new(&provider);
```
## License
This project is licensed under the MIT License. See the [LICENSE](../../../LICENSE) file for details.