# 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