Abstraction

This next section details how cuprate_database abstracts multiple database backends into 1 API.

Diagram

A simple diagram describing the responsibilities/relationship of cuprate_database.

┌───────────────────────────────────────────────────────────────────────┐
│ cuprate_database                                                      │
│                                                                       │
│ ┌───────────────────────────┐     ┌─────────────────────────────────┐ │
│ │ Database traits           │     │ Backends                        │ │
│ │ ┌─────┐┌──────┐┌────────┐ │     │ ┌─────────────┐ ┌─────────────┐ │ │
│ │ │ Env ││ TxRw ││ ...    │ ├─────┤ │ heed (LMDB) │ │ redb        │ │ │
│ │ └─────┘└──────┘└────────┘ │     │ └─────────────┘ └─────────────┘ │ │
│ └──────────┬─────────────┬──┘     └──┬──────────────────────────────┘ │
│            │             └─────┬─────┘                                │
│            │         ┌─────────┴──────────────┐                       │
│            │         │ Database types         │                       │
│            │         │ ┌─────────────┐┌─────┐ │                       │
│            │         │ │ ConcreteEnv ││ ... │ │                       │
│            │         │ └─────────────┘└─────┘ │                       │
│            │         └─────────┬──────────────┘                       │
│            │                   │                                      │
└────────────┼───────────────────┼──────────────────────────────────────┘
             │                   │
             └───────────────────┤
                                 │
                                 ▼
                     ┌───────────────────────┐
                     │ cuprate_database user │
                     └───────────────────────┘
Last change: 2024-11-18, commit: e8598a0