# longkidb **Repository Path**: longkicode/longkidb ## Basic Information - **Project Name**: longkidb - **Description**: LongkiDB 是一个轻量级嵌入式数据库系统,专为移动应用和资源受限环境设计,提供高性能、事务支持和跨平台兼容性。 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2025-11-24 - **Last Updated**: 2025-11-24 ## Categories & Tags **Categories**: database-service **Tags**: None ## README # LongkiDB LongkiDB 是一个轻量级嵌入式数据库系统,专为移动应用和资源受限环境设计,提供高性能、事务支持和跨平台兼容性。 ## 特性 - **轻量级设计**:核心库体积小,启动快速,适合移动设备和嵌入式系统 - **事务支持**:完整的ACID事务,支持多种隔离级别 - **高性能索引**:基于B+树的索引实现,提供高效查询 - **SQL兼容**:支持子集SQL语法,便于使用和迁移 - **跨平台兼容**:支持Android、iOS、Java SE等平台 - **内存优化**:内置对象池、查询缓存和内存管理工具 - **线程安全**:支持多线程并发访问 - **数据类型丰富**:支持常见的数据类型,包括整数、浮点数、字符串、日期、二进制等 - **性能监控**:内置性能分析和监控工具 ## 架构 LongkiDB 采用分层架构设计,主要包含以下组件: 1. **存储引擎层**:负责数据的持久化和索引管理 2. **事务管理层**:提供事务控制和并发控制 3. **SQL解析和执行层**:处理SQL语句解析和执行 4. **API接口层**:提供统一的编程接口 5. **工具类库**:包含性能优化、内存管理等辅助功能 ## 安装 ### Maven 依赖 在项目的 `pom.xml` 中添加以下依赖: ```xml longkidb-repo https://maven.example.com/longkidb com.longkidb longkidb-core 1.0.0 com.longkidb longkidb-android 1.0.0 provided ``` ### Gradle 依赖(Android) 在 `build.gradle` 中添加: ```gradle dependencies { implementation 'com.longkidb:longkidb-core:1.0.0' implementation 'com.longkidb:longkidb-android:1.0.0' } ``` ## 快速开始 ### 初始化数据库 ```java // 创建数据库实例 DatabaseConfig config = new DatabaseConfig.Builder() .databasePath("/path/to/database.db") .maxConnections(10) .cacheSize(1024 * 1024) // 1MB .enableJournal(true) .build(); LongkiDBSDK db = LongkiDBSDK.getInstance(); db.init(config); ``` ### 执行基本操作 ```java // 创建表 db.execute("CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT NOT NULL, age INTEGER, email TEXT)"); // 插入数据 db.execute("INSERT INTO users (name, age, email) VALUES (?, ?, ?)", "Alice", 30, "alice@example.com"); // 查询数据 SQLResult result = db.executeQuery("SELECT * FROM users WHERE age > ?", 25); while (result.next()) { int id = result.getInt("id"); String name = result.getString("name"); int age = result.getInt("age"); String email = result.getString("email"); System.out.println("User: " + name + ", Age: " + age + ", Email: " + email); } result.close(); // 更新数据 db.execute("UPDATE users SET age = ? WHERE name = ?", 31, "Alice"); // 删除数据 db.execute("DELETE FROM users WHERE id = ?", 1); ``` ### 使用事务 ```java try { db.beginTransaction(); db.execute("UPDATE accounts SET balance = balance - ? WHERE id = ?", 100, 1); db.execute("UPDATE accounts SET balance = balance + ? WHERE id = ?", 100, 2); db.commitTransaction(); System.out.println("Transaction committed successfully"); } catch (Exception e) { db.rollbackTransaction(); System.err.println("Transaction rolled back: " + e.getMessage()); } ``` ### 使用查询构建器 ```java // 使用查询构建器 QueryBuilder builder = db.createQueryBuilder(); SQLResult result = builder .select("id", "name", "email") .from("users") .where("age > ? AND email LIKE ?") .params(25, "%@example.com") .orderBy("name ASC") .limit(10) .executeQuery(); // 处理结果... result.close(); ``` ### 使用预编译语句 ```java // 预编译语句 PreparedStatement stmt = db.prepareStatement("SELECT * FROM users WHERE id = ?"); try { stmt.setInt(1, 1); SQLResult result = stmt.executeQuery(); // 处理结果... result.close(); } finally { stmt.close(); } ``` ### 关闭数据库 ```java // 关闭数据库连接 db.close(); ``` ## 高级特性 ### 事务隔离级别 ```java // 设置事务隔离级别 db.beginTransaction(TransactionIsolationLevel.SERIALIZABLE); try { // 事务操作... db.commitTransaction(); } catch (Exception e) { db.rollbackTransaction(); } ``` ### 索引管理 ```java // 创建索引 db.execute("CREATE INDEX idx_users_name ON users (name)"); db.execute("CREATE UNIQUE INDEX idx_users_email ON users (email)"); // 删除索引 db.execute("DROP INDEX idx_users_name"); ``` ### 批量操作 ```java // 批量执行 db.beginTransaction(); try { PreparedStatement stmt = db.prepareStatement("INSERT INTO users (name, age) VALUES (?, ?)"); try { for (User user : usersList) { stmt.setString(1, user.getName()); stmt.setInt(2, user.getAge()); stmt.addBatch(); } int[] affectedRows = stmt.executeBatch(); System.out.println("Total inserted: " + affectedRows.length); } finally { stmt.close(); } db.commitTransaction(); } catch (Exception e) { db.rollbackTransaction(); throw e; } ``` ### 性能优化 ```java // 启用性能分析 PerformanceAnalyzer analyzer = PerformanceAnalyzer.getInstance(); analyzer.enable(); // 设置慢查询阈值(500毫秒) analyzer.setSlowQueryThreshold("executeQuery", 500, 100); // 执行操作... // 导出性能报告 String report = analyzer.exportReport(); System.out.println(report); // 禁用性能分析 analyzer.disable(); ``` ### 连接池配置 ```java // 自定义连接池配置 ConnectionPoolConfig poolConfig = new ConnectionPoolConfig.Builder() .minConnections(5) .maxConnections(50) .connectionTimeout(5000) .maxIdleTime(30000) .build(); DatabaseConfig config = new DatabaseConfig.Builder() .databasePath("/path/to/database.db") .connectionPoolConfig(poolConfig) .build(); ``` ## API文档 ### LongkiDBSDK 主要的数据库入口类,提供初始化、执行SQL、事务管理等核心功能。 **主要方法:** - `getInstance()` - 获取单例实例 - `init(DatabaseConfig config)` - 初始化数据库 - `close()` - 关闭数据库 - `execute(String sql, Object... params)` - 执行更新操作 - `executeQuery(String sql, Object... params)` - 执行查询操作 - `prepareStatement(String sql)` - 创建预编译语句 - `createQueryBuilder()` - 创建查询构建器 - `beginTransaction()` - 开始事务 - `commitTransaction()` - 提交事务 - `rollbackTransaction()` - 回滚事务 ### SQLResult 表示SQL查询的结果集。 **主要方法:** - `next()` - 移动到下一行 - `close()` - 关闭结果集 - `getInt(String columnName)` - 获取整数值 - `getString(String columnName)` - 获取字符串值 - `getDouble(String columnName)` - 获取双精度浮点数值 - `getLong(String columnName)` - 获取长整数值 - `getBoolean(String columnName)` - 获取布尔值 - `getDate(String columnName)` - 获取日期值 - `getBlob(String columnName)` - 获取二进制数据 - `getColumnCount()` - 获取列数 - `getColumnName(int index)` - 获取列名 - `getFirstRow()` - 获取第一行数据 ### QueryBuilder 用于构建SQL查询的流式接口。 **主要方法:** - `select(String... columns)` - 设置SELECT子句 - `from(String table)` - 设置FROM子句 - `where(String condition)` - 设置WHERE子句 - `params(Object... params)` - 设置查询参数 - `groupBy(String... columns)` - 设置GROUP BY子句 - `having(String condition)` - 设置HAVING子句 - `orderBy(String... orderBys)` - 设置ORDER BY子句 - `limit(int limit)` - 设置LIMIT子句 - `offset(int offset)` - 设置OFFSET子句 - `executeQuery()` - 执行查询 - `toSql()` - 生成SQL语句 ### PreparedStatement 预编译的SQL语句,可以多次执行并提高性能。 **主要方法:** - `setInt(int parameterIndex, int value)` - 设置整数参数 - `setString(int parameterIndex, String value)` - 设置字符串参数 - `setDouble(int parameterIndex, double value)` - 设置双精度浮点参数 - `setLong(int parameterIndex, long value)` - 设置长整数参数 - `setBoolean(int parameterIndex, boolean value)` - 设置布尔参数 - `setDate(int parameterIndex, Date value)` - 设置日期参数 - `setBytes(int parameterIndex, byte[] value)` - 设置二进制参数 - `execute()` - 执行语句 - `executeQuery()` - 执行查询 - `executeUpdate()` - 执行更新 - `addBatch()` - 添加批处理 - `executeBatch()` - 执行批处理 - `clearParameters()` - 清除参数 - `close()` - 关闭语句 ## 数据类型 LongkiDB 支持以下数据类型: | SQL类型 | Java类型 | 描述 | |---------|---------|------| | INTEGER | int, long | 整数类型 | | REAL | float, double | 浮点数类型 | | TEXT | String | 文本字符串 | | BLOB | byte[] | 二进制数据 | | BOOLEAN | boolean | 布尔值 | | DATE | java.util.Date | 日期类型 | | TIME | java.sql.Time | 时间类型 | | TIMESTAMP | java.sql.Timestamp | 时间戳类型 | ## 错误处理 LongkiDB 使用以下异常类型: - `DatabaseException` - 数据库通用异常 - `TransactionException` - 事务相关异常 - `QueryException` - 查询相关异常 - `IOException` - IO操作异常 ## 限制和注意事项 - 表名和列名不区分大小写 - 默认事务隔离级别为REPEATABLE READ - 最大数据库大小取决于文件系统限制 - 不支持外键约束 - 不支持存储过程和触发器 ## 许可证 [在此添加许可证信息] ## 贡献 欢迎贡献代码、报告问题或提出建议。请遵循项目的贡献指南。 ## 联系我们 项目网站: [https://www.51shenzhouyun.com/](https://www.51shenzhouyun.com/) 问题跟踪: [https://github.com/longkidb/issues](https://github.com/longkidb/issues) 邮件: contact@longkidb.example.com QQ: 3105215129