-
Notifications
You must be signed in to change notification settings - Fork 165
Open
Description
Use Case
I would like to use seekdb in “embedded mode” (similar to how pyseekdb works) from other languages such as Rust, Go, or Java, without depending on Python.
Typical scenarios include:
- Building AI / RAG applications that ship a single binary and embed seekdb directly into the process (SQLite‑style), instead of running a separate seekdb server process.
- Implementing first‑class SDKs in Rust/Go that can open a local seekdb database directory, execute SQL, and fetch results in‑process, using the same behavior as the current Python embedded module.
- Using embedded seekdb in environments where starting and managing an extra database process (or bundling Python) is undesirable or not possible.
Describe the solution you'd like
Expose a small, stable C ABI for seekdb’s embedded mode, so that other languages can build FFI bindings on top of it.
Describe alternatives you've considered
- Running seekdb in server mode and connecting via the MySQL protocol from Rust/Go/Java clients (e.g. using mysql_async, sqlx, JDBC). This works today and is stable, but:
- Requires managing a separate seekdb process.
- Loses the “true embedded” feel (no single‑binary deployment, needs extra config/ports).
- Embedding CPython inside Rust/Go and calling the existing pyseekdb module. This reuses the current embedded implementation, but:
- Adds a Python runtime dependency and increases deployment complexity.
- Makes startup, packaging, and debugging heavier for non‑Python ecosystems.
- Directly FFI‑binding to C++ classes/functions (e.g. ObLiteEmbed::open/connect) via mangled symbols. This is fragile because C++ ABI and exception boundaries are not stable or guaranteed across compilers and versions, and is not suitable as a public SDK strategy.
hnwyllmm, WSL0809, zhanghuidinah and dengfuping
Metadata
Metadata
Assignees
Type
Projects
Status
Ready