> For the complete documentation index, see [llms.txt](https://litedb.gitbook.io/litedb-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://litedb.gitbook.io/litedb-docs/about/use_cases.md).

# 应用场景

LiteDB 的定位是数据库学习平台、系统架构样例和现代 C++ 实验项目。判断它是否适合某个场景时，应首先考虑“是否需要观察和修改数据库内部”，而不是只考虑能否保存数据。

## 数据库原理学习

LiteDB 适合把分散的数据库知识连接起来。学习者可以：

* 跟踪 SQL 从文本到执行结果的完整过程；
* 比较语法树、绑定表达式、逻辑计划和物理计划；
* 查看记录如何编码到页面和文件；
* 分析 B+ 树分裂、范围扫描和页面回收；
* 对比 Flat 与 HNSW 的查询过程；
* 观察 WAL durable 前后的失败语义；
* 模拟崩溃并检查 redo 恢复结果。

相比只实现一个内存 SQL 解释器，它提供了持久化与恢复主线；相比大型工业数据库，它的代码规模和功能范围更适合逐层阅读。

## 课程教学与技术演示

教师或分享者可以围绕一个明确主题选择对应模块和测试，例如：

| 主题           | 可使用的实现                           |
| ------------ | -------------------------------- |
| 编译原理在数据库中的应用 | Lexer、Parser、Binder、Planner      |
| 查询执行         | 表达式求值、物理算子、Executor              |
| 外存数据结构       | 页面存储与 B+ 树                       |
| 向量数据库基础      | 距离函数、Flat、HNSW                   |
| 事务原子性        | 文件覆盖层、redo WAL、Commit 顺序         |
| 崩溃一致性        | 故障注入、恢复和 checkpoint 测试           |
| 系统模块化        | Catalog、Schema、Storage、Index 的边界 |

文档中的流程图、文件格式表和实现边界可以直接辅助课程讲解。

## 现代 C++ 工程实践

项目适合作为系统级 C++ 练习：

* 使用 RAII 管理文件、锁和运行时对象；
* 用强类型表达数据库 ID 和领域状态；
* 使用 `std::expected` 传播可恢复错误；
* 处理变长二进制编码、校验和和字节序；
* 设计不可复制或可移动的资源类型；
* 编写跨平台文件系统接口；
* 为故障路径设计可测试的接口；
* 练习 CMake 多模块工程组织。

这些任务比普通算法练习更接近真实基础软件，又不要求先理解一个庞大的工业代码库。

## 数据库架构原型

LiteDB 可以用于验证有限范围的数据库设计想法，例如：

* 添加新的逻辑或物理优化规则；
* 实现新的表达式、函数或执行算子；
* 比较不同页面布局和记录编码；
* 研究单列或复合索引设计；
* 调整 HNSW 构建和搜索策略；
* 尝试统计信息、成本估算或 `EXPLAIN`；
* 演进显式事务、隔离级别或 MVCC；
* 研究 WAL、checkpoint 和文件发布协议。

由于现有系统已经形成端到端闭环，新实验可以观察对解析、计划、执行、持久化和恢复的整体影响。

## 小规模功能验证

LiteDB 也可用于：

* 演示基础 SQL 与向量 Top-K 查询；
* 构造可持久化的最小数据库样例；
* 验证客户端/服务端消息流；
* 编写数据库课程作业或毕业设计原型；
* 对照 Python 或其他实现验证向量距离和查询结果。

这些场景中的数据应当是可重新生成的测试数据，并应接受实验版本可能改变文件格式。

## 不适合的场景

当前 LiteDB 不适合：

* 保存不可丢失的生产数据；
* 面向互联网提供关键业务服务；
* 多进程或多个引擎实例同时写同一数据目录；
* 需要大量并发写事务的系统；
* 依赖完整 SQL、复杂连接、子查询或聚合的分析任务；
* 要求成熟权限、审计、备份和运维体系的环境；
* 要求长期磁盘格式兼容或无停机升级的产品；
* 需要分布式复制、分片或高可用的系统；
* 对性能、延迟或 HNSW 召回率有严格服务等级承诺的场景。

如果目标只是为应用选择一个可靠的嵌入式或服务端数据库，应优先使用经过生产验证的成熟项目。LiteDB 更适合被打开、阅读、调试和修改。

## 选择 LiteDB 的判断方式

可以用一个简单标准判断：

> 如果最终目标是“使用数据库”，LiteDB 通常不是首选；如果目标是“理解或改造数据库”，LiteDB 才能发挥价值。

开始实际操作可以前往[快速使用](/litedb-docs/getting_started/quick_start.md)，系统性阅读则建议从[架构与设计](/litedb-docs/architecture_and_design.md)开始。


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://litedb.gitbook.io/litedb-docs/about/use_cases.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
