KiteSQL完全指南:Rust原生嵌入式关系型数据库的终极入门
KiteSQL完全指南Rust原生嵌入式关系型数据库的终极入门【免费下载链接】kipsqlEmbedded relational database and native Rust data API.项目地址: https://gitcode.com/gh_mirrors/ki/kipsqlKiteSQL是一款基于Rust开发的轻量级嵌入式关系型数据库它将SQL的强大功能与Rust原生的数据API完美结合无需依赖外部服务或重量级基础设施即可直接嵌入到应用程序中。无论是构建高性能的本地应用还是需要嵌入式数据库支持的项目KiteSQL都能为你提供简单、快速且可靠的解决方案。为什么选择KiteSQLKiteSQL作为一款Rust原生的嵌入式关系型数据库具有诸多令人瞩目的特性使其在众多数据库解决方案中脱颖而出。它不仅支持直接SQL执行还提供了类型化的ORM模型、模式迁移以及构建器风格的查询让你在Rust环境中能够自然地结合关系型数据库的强大功能与API表面。在原生目标上KiteSQL提供了RocksDB和LMDB两种持久化存储构建器同时还配备了用于测试和临时工作负载的内存构建器。这意味着你可以根据项目的具体需求灵活选择最适合的存储方式而无需在不同的数据库产品之间进行复杂的切换。KiteSQL的核心优势轻量级嵌入式设计完全用Rust重写无需外部依赖可直接嵌入到应用程序中减少了系统的复杂性和资源消耗。Rust原生API提供了与Rust语言风格一致的API使开发者能够更加自然地进行数据库操作提高开发效率。多样化存储选择支持RocksDB、LMDB等多种存储后端满足不同场景下的性能和持久化需求。丰富的SQL支持支持大部分SQL 2016语法包括DDL、DQL、DML等操作让你能够灵活地进行数据管理。高性能凭借Rust语言的特性和优化的存储引擎KiteSQL在读写性能方面表现出色。![KiteSQL架构概览](https://raw.gitcode.com/gh_mirrors/ki/kipsql/raw/60c5d5a23ededd8cbfa524bf569aa9d5c9633f04/assets/Untitled 1.png?utm_sourcegitcode_repo_files)KiteSQL架构概览展示了KiteSQL从SQL查询到物理执行计划的完整流程体现了其高效的处理机制。快速开始安装与配置要开始使用KiteSQL首先需要将其添加到你的Rust项目中。在Cargo.toml文件中添加以下依赖[dependencies] kite_sql 最新版本KiteSQL提供了多种存储后端默认启用RocksDB。如果你需要使用LMDB可以通过以下方式配置cargo check --no-default-features --features lmdb初始化数据库使用KiteSQL非常简单以下是一个基本的初始化示例use kite_sql::db::DataBaseBuilder; use kite_sql::errors::DatabaseError; fn main() - Result(), DatabaseError { // 使用RocksDB后端创建数据库 let mut database DataBaseBuilder::path(./data).build_rocksdb()?; // 或者使用LMDB后端 // let mut database DataBaseBuilder::path(./data).build_lmdb()?; // 或者创建内存数据库用于测试 // let mut database DataBaseBuilder::path(./data).build_in_memory()?; Ok(()) }核心功能解析ORM模型与数据操作KiteSQL内置了ORM功能通过#[derive(Model)]宏你可以轻松定义类型化的模型并获得元组映射、模式创建、迁移支持、投影、集合查询以及构建器风格的查询/变异工作流。use kite_sql::Model; #[derive(Default, Debug, PartialEq, Model)] #[model(table users)] #[model(index(name users_name_age_idx, columns name, age))] struct User { #[model(primary_key)] id: i32, #[model(unique, varchar 128)] email: String, #[model(rename user_name, varchar 64)] name: String, #[model(default 18, index)] age: Optioni32, }定义好模型后你可以进行各种数据操作// 迁移表结构 database.migrate::User()?; // 插入数据 database.insert_many([ User { id: 1, email: aliceexample.com.to_string(), name: Alice.to_string(), age: Some(18), }, User { id: 2, email: bobexample.com.to_string(), name: Bob.to_string(), age: Some(24), }, ])?; // 更新数据 database .bind(|ctx| { ctx.mutate::User()? .filter(|e| e.column(User::id())?.eq(1))? .update(|u| u.set_value(User::age(), Some(19))) })? .done()?; // 查询数据 let users database .bind(|ctx| { ctx.from::User()? .filter(|e| e.column(User::age())?.gte(18))? .project_scalars((User::id(), User::name()))? .order_by(User::name())? .limit(10)? .finish() })? .project_tuple::(i32, String)();存储后端选择KiteSQL提供了多种存储后端你可以根据项目需求选择最适合的一种build_rocksdb()打开一个基于RocksDB的持久化数据库适合写操作较多的场景。build_lmdb()打开一个基于LMDB的持久化数据库在读操作占主导时表现出色。build_in_memory()打开一个内存数据库适用于测试、示例和临时工作负载。build_optimistic()在原生目标上可用当你特别希望在RocksDB之上使用乐观事务时。![KiteSQL计划类型](https://raw.gitcode.com/gh_mirrors/ki/kipsql/raw/60c5d5a23ededd8cbfa524bf569aa9d5c9633f04/assets/Untitled 3.png?utm_sourcegitcode_repo_files)KiteSQL计划类型展示了KiteSQL支持的各种计划类型如创建计划、删除计划、插入计划等体现了其丰富的功能。SQL执行除了ORM APIKiteSQL还支持直接执行SQL语句满足你对SQL的灵活需求// 执行DDL语句 database.execute(CREATE TABLE IF NOT EXISTS demo (id INT PRIMARY KEY, v INT))?; // 执行DML语句 database.execute(INSERT INTO demo VALUES (1, 2), (2, 4))?; // 执行查询语句 let result database.run(SELECT * FROM demo)?; for row in result.rows() { println!({:?}, row.values); }高级特性事务支持KiteSQL提供了完善的事务支持包括悲观事务和乐观事务隔离级别可参考事务隔离文档。用户定义函数通过macros特性你可以定义自己的函数扩展KiteSQL的功能// 用户定义标量函数 scala_function!(TestFunction::test(LogicalType::Integer, LogicalType::Integer) - LogicalType::Integer |v1: DataValue, v2: DataValue| { // 函数实现 }); // 用户定义表函数 table_function!(MyTableFunction::test_numbers(LogicalType::Integer) - [c1: LogicalType::Integer, c2: LogicalType::Integer] (|v1: DataValue| { // 函数实现 }));检查点功能KiteSQL将检查点作为一种存储功能公开而不是完整的备份工作流。检查点仅创建一致的本地快照目录压缩、上传、保留和修剪备份应保留在应用程序代码中。// 创建检查点 database.checkpoint(./backup/checkpoint-2026-03-29)?;![KiteSQL迭代器模型](https://raw.gitcode.com/gh_mirrors/ki/kipsql/raw/60c5d5a23ededd8cbfa524bf569aa9d5c9633f04/assets/Untitled 4.png?utm_sourcegitcode_repo_files)KiteSQL迭代器模型展示了KiteSQL的迭代器模型工作原理直观地呈现了数据处理的流程。性能基准KiteSQL在性能方面表现出色特别是在嵌入式场景下。以下是在i9-13900HX、32.0 GB内存、KIOXIA-EXCERIA PLUS G3 SSD环境下的TPC-C基准测试结果720秒本地比较后端TpmCNew-Order p90Payment p90Order-Status p90Delivery p90Stock-Level p90KiteSQL LMDB713450.001s0.001s0.001s0.002s0.001sKiteSQL RocksDB405630.001s0.001s0.002s0.009s0.001sSQLite balanced675270.001s0.001s0.001s0.001s0.001sSQLite practical647740.001s0.001s0.001s0.001s0.001s从结果可以看出KiteSQL的LMDB后端在TpmC指标上表现优于SQLiteRocksDB后端虽然在TpmC上略低于SQLite但在某些场景下可能具有其他优势。生态系统与工具交互式ShellKiteSQL提供了一个交互式Shell方便你进行数据库操作和测试# 运行交互式Shell cargo run --bin kitesql-shell # 指定数据目录 cargo run --bin kitesql-shell -- --path ./tmp/kitesql-shell-data # 执行单行SQL cargo run --bin kitesql-shell -- -e select current_timestampWebAssembly支持KiteSQL还提供了WebAssembly构建可用于JavaScript运行时# 构建WebAssembly包 wasm-pack build --release --target nodejs使用示例import { WasmDatabase } from ./pkg/kite_sql.js; const db new WasmDatabase(); await db.ddl(create table demo(id int primary key, v int)); await db.execute(insert into demo values (1, 2), (2, 4)); const rows db.run(select * from demo).rows(); console.log(rows.map((r) r.values.map((v) v.Int32 ?? v)));Python绑定通过启用python特性你可以在Python中使用KiteSQLimport kite_sql db kite_sql.Database.in_memory() db.execute(create table demo(id int primary key, v int)) db.execute(insert into demo values (1, 2), (2, 4)) for row in db.run(select * from demo): print(row[values])![KiteSQL管道模型](https://raw.gitcode.com/gh_mirrors/ki/kipsql/raw/60c5d5a23ededd8cbfa524bf569aa9d5c9633f04/assets/Untitled 5.png?utm_sourcegitcode_repo_files)KiteSQL管道模型展示了KiteSQL的管道模型包括分组、哈希连接、扫描等操作体现了其高效的数据处理能力。总结KiteSQL作为一款Rust原生的嵌入式关系型数据库为开发者提供了一个简单、高效、灵活的数据库解决方案。它不仅具有轻量级、高性能的特点还提供了丰富的功能和工具满足各种应用场景的需求。无论你是Rust开发者还是正在寻找一款嵌入式数据库的项目负责人KiteSQL都值得你尝试。通过本文的介绍相信你已经对KiteSQL有了一个基本的了解接下来可以深入探索其更多的功能和特性将其应用到你的项目中。要获取更多关于KiteSQL的信息和文档请参考以下资源官方文档docs/features.mdORM指南src/orm/README.md事务隔离docs/transaction-isolation.mdTPC-C基准测试tpcc/README.md开始你的KiteSQL之旅吧体验Rust原生嵌入式关系型数据库带来的强大功能和便捷开发【免费下载链接】kipsqlEmbedded relational database and native Rust data API.项目地址: https://gitcode.com/gh_mirrors/ki/kipsql创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考