@yydb/light-db 0.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/LightDB.d.ts +194 -0
- package/dist/api/LightDB.d.ts.map +1 -0
- package/dist/api/LightDB.js +299 -0
- package/dist/api/LightDB.js.map +1 -0
- package/dist/api/Transaction.d.ts +100 -0
- package/dist/api/Transaction.d.ts.map +1 -0
- package/dist/api/Transaction.js +263 -0
- package/dist/api/Transaction.js.map +1 -0
- package/dist/api/index.d.ts +24 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +54 -0
- package/dist/api/index.js.map +1 -0
- package/dist/api/types.d.ts +154 -0
- package/dist/api/types.d.ts.map +1 -0
- package/dist/api/types.js +7 -0
- package/dist/api/types.js.map +1 -0
- package/dist/collection/Collection.d.ts +235 -0
- package/dist/collection/Collection.d.ts.map +1 -0
- package/dist/collection/Collection.js +671 -0
- package/dist/collection/Collection.js.map +1 -0
- package/dist/collection/QueryBuilder.d.ts +225 -0
- package/dist/collection/QueryBuilder.d.ts.map +1 -0
- package/dist/collection/QueryBuilder.js +475 -0
- package/dist/collection/QueryBuilder.js.map +1 -0
- package/dist/collection/QueryParser.d.ts +117 -0
- package/dist/collection/QueryParser.d.ts.map +1 -0
- package/dist/collection/QueryParser.js +438 -0
- package/dist/collection/QueryParser.js.map +1 -0
- package/dist/collection/index.d.ts +42 -0
- package/dist/collection/index.d.ts.map +1 -0
- package/dist/collection/index.js +41 -0
- package/dist/collection/index.js.map +1 -0
- package/dist/collection/types.d.ts +365 -0
- package/dist/collection/types.d.ts.map +1 -0
- package/dist/collection/types.js +7 -0
- package/dist/collection/types.js.map +1 -0
- package/dist/constants/index.d.ts +51 -0
- package/dist/constants/index.d.ts.map +1 -0
- package/dist/constants/index.js +68 -0
- package/dist/constants/index.js.map +1 -0
- package/dist/errors/index.d.ts +69 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/index.js +132 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/index.d.ts +220 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +729 -0
- package/dist/index.js.map +1 -0
- package/dist/indexes/BPlusTree.d.ts +181 -0
- package/dist/indexes/BPlusTree.d.ts.map +1 -0
- package/dist/indexes/BPlusTree.js +528 -0
- package/dist/indexes/BPlusTree.js.map +1 -0
- package/dist/indexes/IndexManager.d.ts +236 -0
- package/dist/indexes/IndexManager.d.ts.map +1 -0
- package/dist/indexes/IndexManager.js +502 -0
- package/dist/indexes/IndexManager.js.map +1 -0
- package/dist/indexes/PrimaryIndex.d.ts +240 -0
- package/dist/indexes/PrimaryIndex.d.ts.map +1 -0
- package/dist/indexes/PrimaryIndex.js +354 -0
- package/dist/indexes/PrimaryIndex.js.map +1 -0
- package/dist/indexes/SecondaryIndex.d.ts +204 -0
- package/dist/indexes/SecondaryIndex.d.ts.map +1 -0
- package/dist/indexes/SecondaryIndex.js +480 -0
- package/dist/indexes/SecondaryIndex.js.map +1 -0
- package/dist/indexes/errors.d.ts +66 -0
- package/dist/indexes/errors.d.ts.map +1 -0
- package/dist/indexes/errors.js +117 -0
- package/dist/indexes/errors.js.map +1 -0
- package/dist/indexes/index.d.ts +52 -0
- package/dist/indexes/index.d.ts.map +1 -0
- package/dist/indexes/index.js +131 -0
- package/dist/indexes/index.js.map +1 -0
- package/dist/indexes/types.d.ts +246 -0
- package/dist/indexes/types.d.ts.map +1 -0
- package/dist/indexes/types.js +30 -0
- package/dist/indexes/types.js.map +1 -0
- package/dist/performance/BatchWALWriter.d.ts +185 -0
- package/dist/performance/BatchWALWriter.d.ts.map +1 -0
- package/dist/performance/BatchWALWriter.js +490 -0
- package/dist/performance/BatchWALWriter.js.map +1 -0
- package/dist/performance/ColumnarStorage.d.ts +138 -0
- package/dist/performance/ColumnarStorage.d.ts.map +1 -0
- package/dist/performance/ColumnarStorage.js +875 -0
- package/dist/performance/ColumnarStorage.js.map +1 -0
- package/dist/performance/LazyQuery.d.ts +307 -0
- package/dist/performance/LazyQuery.d.ts.map +1 -0
- package/dist/performance/LazyQuery.js +588 -0
- package/dist/performance/LazyQuery.js.map +1 -0
- package/dist/performance/OptimizedBuffer.d.ts +375 -0
- package/dist/performance/OptimizedBuffer.d.ts.map +1 -0
- package/dist/performance/OptimizedBuffer.js +730 -0
- package/dist/performance/OptimizedBuffer.js.map +1 -0
- package/dist/performance/RWLock.d.ts +260 -0
- package/dist/performance/RWLock.d.ts.map +1 -0
- package/dist/performance/RWLock.js +570 -0
- package/dist/performance/RWLock.js.map +1 -0
- package/dist/performance/index.d.ts +41 -0
- package/dist/performance/index.d.ts.map +1 -0
- package/dist/performance/index.js +162 -0
- package/dist/performance/index.js.map +1 -0
- package/dist/performance/types.d.ts +247 -0
- package/dist/performance/types.d.ts.map +1 -0
- package/dist/performance/types.js +26 -0
- package/dist/performance/types.js.map +1 -0
- package/dist/storage/Checkpoint.d.ts +128 -0
- package/dist/storage/Checkpoint.d.ts.map +1 -0
- package/dist/storage/Checkpoint.js +251 -0
- package/dist/storage/Checkpoint.js.map +1 -0
- package/dist/storage/LightFile.d.ts +227 -0
- package/dist/storage/LightFile.d.ts.map +1 -0
- package/dist/storage/LightFile.js +526 -0
- package/dist/storage/LightFile.js.map +1 -0
- package/dist/storage/Recovery.d.ts +172 -0
- package/dist/storage/Recovery.d.ts.map +1 -0
- package/dist/storage/Recovery.js +399 -0
- package/dist/storage/Recovery.js.map +1 -0
- package/dist/storage/SHMFile.d.ts +243 -0
- package/dist/storage/SHMFile.d.ts.map +1 -0
- package/dist/storage/SHMFile.js +436 -0
- package/dist/storage/SHMFile.js.map +1 -0
- package/dist/storage/StorageEngine.d.ts +146 -0
- package/dist/storage/StorageEngine.d.ts.map +1 -0
- package/dist/storage/StorageEngine.js +353 -0
- package/dist/storage/StorageEngine.js.map +1 -0
- package/dist/storage/WALFile.d.ts +248 -0
- package/dist/storage/WALFile.d.ts.map +1 -0
- package/dist/storage/WALFile.js +597 -0
- package/dist/storage/WALFile.js.map +1 -0
- package/dist/storage/index.d.ts +10 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +153 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/types/index.d.ts +220 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +7 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/binary.d.ts +271 -0
- package/dist/utils/binary.d.ts.map +1 -0
- package/dist/utils/binary.js +454 -0
- package/dist/utils/binary.js.map +1 -0
- package/dist/utils/file.d.ts +166 -0
- package/dist/utils/file.d.ts.map +1 -0
- package/dist/utils/file.js +346 -0
- package/dist/utils/file.js.map +1 -0
- package/dist/utils/index.d.ts +6 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +39 -0
- package/dist/utils/index.js.map +1 -0
- package/package.json +37 -0
- package/readme.md +124 -0
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LightDB 主类
|
|
3
|
+
* 提供用户直接使用的接口层
|
|
4
|
+
*/
|
|
5
|
+
import { StorageEngine } from "../storage";
|
|
6
|
+
import { Collection } from "../collection";
|
|
7
|
+
import type {
|
|
8
|
+
LightDBOptions,
|
|
9
|
+
CollectionCreateOptions,
|
|
10
|
+
TransactionCallback,
|
|
11
|
+
TransactionOptions,
|
|
12
|
+
TransactionResult,
|
|
13
|
+
DatabaseStats,
|
|
14
|
+
DatabaseConfig,
|
|
15
|
+
ILightDB,
|
|
16
|
+
CollectionSchema,
|
|
17
|
+
} from "./types";
|
|
18
|
+
import type { CheckpointResult } from "../types";
|
|
19
|
+
/**
|
|
20
|
+
* LightDB 数据库实例
|
|
21
|
+
* 提供完整的数据库操作 API
|
|
22
|
+
*/
|
|
23
|
+
export declare class LightDB implements ILightDB {
|
|
24
|
+
private readonly storageEngine;
|
|
25
|
+
private readonly collections;
|
|
26
|
+
private readonly transactionManager;
|
|
27
|
+
private readonly options;
|
|
28
|
+
private closed;
|
|
29
|
+
/**
|
|
30
|
+
* 创建 LightDB 实例
|
|
31
|
+
* @param storageEngine 已初始化的存储引擎
|
|
32
|
+
* @param options 配置选项
|
|
33
|
+
*/
|
|
34
|
+
private constructor();
|
|
35
|
+
/**
|
|
36
|
+
* 打开数据库
|
|
37
|
+
* 创建或打开指定路径的数据库
|
|
38
|
+
*
|
|
39
|
+
* @param path 数据库文件存储路径
|
|
40
|
+
* @param options 配置选项
|
|
41
|
+
* @returns 初始化完成的 LightDB 实例
|
|
42
|
+
*
|
|
43
|
+
* @example
|
|
44
|
+
* ```typescript
|
|
45
|
+
* const db = await LightDB.open('./data/mydb', {
|
|
46
|
+
* dbName: 'mydb',
|
|
47
|
+
* autoCheckpoint: true,
|
|
48
|
+
* pageSize: 4096
|
|
49
|
+
* });
|
|
50
|
+
* ```
|
|
51
|
+
*/
|
|
52
|
+
static open(path: string, options?: LightDBOptions): Promise<LightDB>;
|
|
53
|
+
/**
|
|
54
|
+
* 获取数据库名称
|
|
55
|
+
*/
|
|
56
|
+
get dbName(): string;
|
|
57
|
+
/**
|
|
58
|
+
* 获取数据库路径
|
|
59
|
+
*/
|
|
60
|
+
get path(): string;
|
|
61
|
+
/**
|
|
62
|
+
* 检查数据库是否已打开
|
|
63
|
+
*/
|
|
64
|
+
get isOpen(): boolean;
|
|
65
|
+
/**
|
|
66
|
+
* 获取或创建集合
|
|
67
|
+
* 返回类型安全的集合实例
|
|
68
|
+
*
|
|
69
|
+
* @param name 集合名称
|
|
70
|
+
* @param options 集合配置选项
|
|
71
|
+
* @returns 集合实例
|
|
72
|
+
*
|
|
73
|
+
* @example
|
|
74
|
+
* ```typescript
|
|
75
|
+
* interface User {
|
|
76
|
+
* id: number;
|
|
77
|
+
* name: string;
|
|
78
|
+
* age: number;
|
|
79
|
+
* }
|
|
80
|
+
*
|
|
81
|
+
* const users = db.collection<User>('users', {
|
|
82
|
+
* name: 'users',
|
|
83
|
+
* primaryKey: 'id',
|
|
84
|
+
* indexes: [
|
|
85
|
+
* { name: 'name_idx', fieldName: 'name' }
|
|
86
|
+
* ]
|
|
87
|
+
* });
|
|
88
|
+
* ```
|
|
89
|
+
*/
|
|
90
|
+
collection<T extends Record<string, unknown>>(name: string, options: CollectionCreateOptions<T>): Collection<T>;
|
|
91
|
+
/**
|
|
92
|
+
* 检查集合是否存在
|
|
93
|
+
*
|
|
94
|
+
* @param name 集合名称
|
|
95
|
+
* @returns 集合是否存在
|
|
96
|
+
*/
|
|
97
|
+
hasCollection(name: string): boolean;
|
|
98
|
+
/**
|
|
99
|
+
* 删除集合
|
|
100
|
+
*
|
|
101
|
+
* @param name 集合名称
|
|
102
|
+
* @returns 是否删除成功
|
|
103
|
+
*/
|
|
104
|
+
dropCollection(name: string): boolean;
|
|
105
|
+
/**
|
|
106
|
+
* 获取所有集合名称
|
|
107
|
+
*
|
|
108
|
+
* @returns 集合名称数组
|
|
109
|
+
*/
|
|
110
|
+
getCollectionNames(): string[];
|
|
111
|
+
/**
|
|
112
|
+
* 执行事务
|
|
113
|
+
* 支持 ACID 事务特性
|
|
114
|
+
*
|
|
115
|
+
* @param callback 事务回调函数
|
|
116
|
+
* @param options 事务选项
|
|
117
|
+
* @returns 事务执行结果
|
|
118
|
+
*
|
|
119
|
+
* @example
|
|
120
|
+
* ```typescript
|
|
121
|
+
* await db.transaction(async (tx) => {
|
|
122
|
+
* const users = tx.collection<User>('users');
|
|
123
|
+
* const user = await users.findOne({ id: 1 });
|
|
124
|
+
* await users.update({ id: 1 }, { balance: user.balance - 100 });
|
|
125
|
+
* });
|
|
126
|
+
* ```
|
|
127
|
+
*/
|
|
128
|
+
transaction(callback: TransactionCallback, options?: TransactionOptions): Promise<TransactionResult>;
|
|
129
|
+
/**
|
|
130
|
+
* 执行检查点
|
|
131
|
+
* 将内存中的数据持久化到磁盘
|
|
132
|
+
*
|
|
133
|
+
* @returns 检查点执行结果
|
|
134
|
+
*/
|
|
135
|
+
checkpoint(): Promise<CheckpointResult>;
|
|
136
|
+
/**
|
|
137
|
+
* 获取数据库统计信息
|
|
138
|
+
*
|
|
139
|
+
* @returns 数据库统计信息
|
|
140
|
+
*/
|
|
141
|
+
getStats(): Promise<DatabaseStats>;
|
|
142
|
+
/**
|
|
143
|
+
* 获取数据库配置
|
|
144
|
+
*
|
|
145
|
+
* @returns 数据库配置信息
|
|
146
|
+
*/
|
|
147
|
+
getConfig(): DatabaseConfig;
|
|
148
|
+
/**
|
|
149
|
+
* 同步数据到磁盘
|
|
150
|
+
* 确保所有数据都已持久化
|
|
151
|
+
*/
|
|
152
|
+
sync(): Promise<void>;
|
|
153
|
+
/**
|
|
154
|
+
* 关闭数据库
|
|
155
|
+
* 释放所有资源并确保数据持久化
|
|
156
|
+
*/
|
|
157
|
+
close(): Promise<void>;
|
|
158
|
+
/**
|
|
159
|
+
* 确保数据库处于打开状态
|
|
160
|
+
*/
|
|
161
|
+
private ensureOpen;
|
|
162
|
+
/**
|
|
163
|
+
* 获取存储引擎(内部使用)
|
|
164
|
+
*/
|
|
165
|
+
getStorageEngine(): StorageEngine;
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* 定义集合 Schema 的辅助函数
|
|
169
|
+
* 提供类型推断和 IDE 支持
|
|
170
|
+
*
|
|
171
|
+
* @param schema Schema 定义
|
|
172
|
+
* @returns Schema 对象
|
|
173
|
+
*
|
|
174
|
+
* @example
|
|
175
|
+
* ```typescript
|
|
176
|
+
* const UserSchema = defineCollectionSchema({
|
|
177
|
+
* schema: {} as User,
|
|
178
|
+
* primaryKey: 'id',
|
|
179
|
+
* indexes: [
|
|
180
|
+
* { name: 'name_idx', fieldName: 'name' }
|
|
181
|
+
* ]
|
|
182
|
+
* });
|
|
183
|
+
* ```
|
|
184
|
+
*/
|
|
185
|
+
export declare function defineCollectionSchema<T extends Record<string, unknown>>(schema: CollectionSchema<T>): CollectionSchema<T>;
|
|
186
|
+
/**
|
|
187
|
+
* 打开数据库的便捷函数
|
|
188
|
+
*
|
|
189
|
+
* @param path 数据库文件存储路径
|
|
190
|
+
* @param options 配置选项
|
|
191
|
+
* @returns 初始化完成的 LightDB 实例
|
|
192
|
+
*/
|
|
193
|
+
export declare function openDatabase(path: string, options?: LightDBOptions): Promise<LightDB>;
|
|
194
|
+
//# sourceMappingURL=LightDB.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LightDB.d.ts","sourceRoot":"","sources":["../../src/api/LightDB.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,aAAa,EAAuB,MAAM,YAAY,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAG3C,OAAO,KAAK,EACR,cAAc,EACd,uBAAuB,EACvB,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,QAAQ,EACR,gBAAgB,EACnB,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EAAE,gBAAgB,EAAsC,MAAM,UAAU,CAAC;AAGrF;;;GAGG;AACH,qBAAa,OAAQ,YAAW,QAAQ;IACpC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAC9C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAmD;IAC/E,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAqB;IACxD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAEtB;IACF,OAAO,CAAC,MAAM,CAAU;IAExB;;;;OAIG;IACH,OAAO;IAaP;;;;;;;;;;;;;;;;OAgBG;WACiB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,OAAO,CAAC;IAyBtF;;OAEG;IACH,IAAW,MAAM,IAAI,MAAM,CAE1B;IAED;;OAEG;IACH,IAAW,IAAI,IAAI,MAAM,CAExB;IAED;;OAEG;IACH,IAAW,MAAM,IAAI,OAAO,CAE3B;IAED;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACI,UAAU,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,uBAAuB,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC;IAoBtH;;;;;OAKG;IACI,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAK3C;;;;;OAKG;IACI,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAa5C;;;;OAIG;IACI,kBAAkB,IAAI,MAAM,EAAE;IAKrC;;;;;;;;;;;;;;;;OAgBG;IACU,WAAW,CAAC,QAAQ,EAAE,mBAAmB,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAKjH;;;;;OAKG;IACU,UAAU,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAKpD;;;;OAIG;IACU,QAAQ,IAAI,OAAO,CAAC,aAAa,CAAC;IAmB/C;;;;OAIG;IACI,SAAS,IAAI,cAAc;IAUlC;;;OAGG;IACU,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAKlC;;;OAGG;IACU,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAcnC;;OAEG;IACH,OAAO,CAAC,UAAU;IASlB;;OAEG;IACI,gBAAgB,IAAI,aAAa;CAG3C;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAE1H;AAED;;;;;;GAMG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,CAE3F"}
|
|
@@ -0,0 +1,299 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* LightDB 主类
|
|
4
|
+
* 提供用户直接使用的接口层
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.LightDB = void 0;
|
|
8
|
+
exports.defineCollectionSchema = defineCollectionSchema;
|
|
9
|
+
exports.openDatabase = openDatabase;
|
|
10
|
+
const storage_1 = require("../storage");
|
|
11
|
+
const collection_1 = require("../collection");
|
|
12
|
+
const Transaction_1 = require("./Transaction");
|
|
13
|
+
const errors_1 = require("../errors");
|
|
14
|
+
/**
|
|
15
|
+
* LightDB 数据库实例
|
|
16
|
+
* 提供完整的数据库操作 API
|
|
17
|
+
*/
|
|
18
|
+
class LightDB {
|
|
19
|
+
/**
|
|
20
|
+
* 创建 LightDB 实例
|
|
21
|
+
* @param storageEngine 已初始化的存储引擎
|
|
22
|
+
* @param options 配置选项
|
|
23
|
+
*/
|
|
24
|
+
constructor(storageEngine, options) {
|
|
25
|
+
this.storageEngine = storageEngine;
|
|
26
|
+
this.options = options;
|
|
27
|
+
this.collections = new Map();
|
|
28
|
+
this.transactionManager = new Transaction_1.TransactionManager(this.collections);
|
|
29
|
+
this.closed = false;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* 打开数据库
|
|
33
|
+
* 创建或打开指定路径的数据库
|
|
34
|
+
*
|
|
35
|
+
* @param path 数据库文件存储路径
|
|
36
|
+
* @param options 配置选项
|
|
37
|
+
* @returns 初始化完成的 LightDB 实例
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* ```typescript
|
|
41
|
+
* const db = await LightDB.open('./data/mydb', {
|
|
42
|
+
* dbName: 'mydb',
|
|
43
|
+
* autoCheckpoint: true,
|
|
44
|
+
* pageSize: 4096
|
|
45
|
+
* });
|
|
46
|
+
* ```
|
|
47
|
+
*/
|
|
48
|
+
static async open(path, options = {}) {
|
|
49
|
+
const dbName = options.dbName ?? "default";
|
|
50
|
+
const fullOptions = {
|
|
51
|
+
dbName,
|
|
52
|
+
pageSize: options.pageSize ?? 4096,
|
|
53
|
+
walThreshold: options.walThreshold ?? 16 * 1024 * 1024,
|
|
54
|
+
autoCheckpoint: options.autoCheckpoint ?? true,
|
|
55
|
+
fsyncStrategy: options.fsyncStrategy,
|
|
56
|
+
};
|
|
57
|
+
const storageEngineOptions = {
|
|
58
|
+
pageSize: fullOptions.pageSize,
|
|
59
|
+
walThreshold: fullOptions.walThreshold,
|
|
60
|
+
autoCheckpoint: fullOptions.autoCheckpoint,
|
|
61
|
+
};
|
|
62
|
+
if (fullOptions.fsyncStrategy !== undefined) {
|
|
63
|
+
storageEngineOptions.fsyncStrategy = fullOptions.fsyncStrategy;
|
|
64
|
+
}
|
|
65
|
+
const storageEngine = await (0, storage_1.createStorageEngine)(path, dbName, storageEngineOptions);
|
|
66
|
+
return new LightDB(storageEngine, fullOptions);
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* 获取数据库名称
|
|
70
|
+
*/
|
|
71
|
+
get dbName() {
|
|
72
|
+
return this.options.dbName;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* 获取数据库路径
|
|
76
|
+
*/
|
|
77
|
+
get path() {
|
|
78
|
+
return this.storageEngine.getBasePath();
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* 检查数据库是否已打开
|
|
82
|
+
*/
|
|
83
|
+
get isOpen() {
|
|
84
|
+
return !this.closed && this.storageEngine.isInitialized();
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* 获取或创建集合
|
|
88
|
+
* 返回类型安全的集合实例
|
|
89
|
+
*
|
|
90
|
+
* @param name 集合名称
|
|
91
|
+
* @param options 集合配置选项
|
|
92
|
+
* @returns 集合实例
|
|
93
|
+
*
|
|
94
|
+
* @example
|
|
95
|
+
* ```typescript
|
|
96
|
+
* interface User {
|
|
97
|
+
* id: number;
|
|
98
|
+
* name: string;
|
|
99
|
+
* age: number;
|
|
100
|
+
* }
|
|
101
|
+
*
|
|
102
|
+
* const users = db.collection<User>('users', {
|
|
103
|
+
* name: 'users',
|
|
104
|
+
* primaryKey: 'id',
|
|
105
|
+
* indexes: [
|
|
106
|
+
* { name: 'name_idx', fieldName: 'name' }
|
|
107
|
+
* ]
|
|
108
|
+
* });
|
|
109
|
+
* ```
|
|
110
|
+
*/
|
|
111
|
+
collection(name, options) {
|
|
112
|
+
this.ensureOpen();
|
|
113
|
+
const existingCollection = this.collections.get(name);
|
|
114
|
+
if (existingCollection) {
|
|
115
|
+
return existingCollection;
|
|
116
|
+
}
|
|
117
|
+
const collectionOptions = {
|
|
118
|
+
name,
|
|
119
|
+
primaryKey: options.primaryKey,
|
|
120
|
+
indexes: options.indexes ?? [],
|
|
121
|
+
};
|
|
122
|
+
const collection = new collection_1.Collection(collectionOptions);
|
|
123
|
+
this.collections.set(name, collection);
|
|
124
|
+
return collection;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* 检查集合是否存在
|
|
128
|
+
*
|
|
129
|
+
* @param name 集合名称
|
|
130
|
+
* @returns 集合是否存在
|
|
131
|
+
*/
|
|
132
|
+
hasCollection(name) {
|
|
133
|
+
this.ensureOpen();
|
|
134
|
+
return this.collections.has(name);
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* 删除集合
|
|
138
|
+
*
|
|
139
|
+
* @param name 集合名称
|
|
140
|
+
* @returns 是否删除成功
|
|
141
|
+
*/
|
|
142
|
+
dropCollection(name) {
|
|
143
|
+
this.ensureOpen();
|
|
144
|
+
const collection = this.collections.get(name);
|
|
145
|
+
if (!collection) {
|
|
146
|
+
return false;
|
|
147
|
+
}
|
|
148
|
+
collection.clear();
|
|
149
|
+
this.collections.delete(name);
|
|
150
|
+
return true;
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* 获取所有集合名称
|
|
154
|
+
*
|
|
155
|
+
* @returns 集合名称数组
|
|
156
|
+
*/
|
|
157
|
+
getCollectionNames() {
|
|
158
|
+
this.ensureOpen();
|
|
159
|
+
return Array.from(this.collections.keys());
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* 执行事务
|
|
163
|
+
* 支持 ACID 事务特性
|
|
164
|
+
*
|
|
165
|
+
* @param callback 事务回调函数
|
|
166
|
+
* @param options 事务选项
|
|
167
|
+
* @returns 事务执行结果
|
|
168
|
+
*
|
|
169
|
+
* @example
|
|
170
|
+
* ```typescript
|
|
171
|
+
* await db.transaction(async (tx) => {
|
|
172
|
+
* const users = tx.collection<User>('users');
|
|
173
|
+
* const user = await users.findOne({ id: 1 });
|
|
174
|
+
* await users.update({ id: 1 }, { balance: user.balance - 100 });
|
|
175
|
+
* });
|
|
176
|
+
* ```
|
|
177
|
+
*/
|
|
178
|
+
async transaction(callback, options) {
|
|
179
|
+
this.ensureOpen();
|
|
180
|
+
return this.transactionManager.execute(callback, options);
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* 执行检查点
|
|
184
|
+
* 将内存中的数据持久化到磁盘
|
|
185
|
+
*
|
|
186
|
+
* @returns 检查点执行结果
|
|
187
|
+
*/
|
|
188
|
+
async checkpoint() {
|
|
189
|
+
this.ensureOpen();
|
|
190
|
+
return this.storageEngine.checkpoint();
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* 获取数据库统计信息
|
|
194
|
+
*
|
|
195
|
+
* @returns 数据库统计信息
|
|
196
|
+
*/
|
|
197
|
+
async getStats() {
|
|
198
|
+
this.ensureOpen();
|
|
199
|
+
const storageStats = await this.storageEngine.getStats();
|
|
200
|
+
const collectionStats = Array.from(this.collections.entries()).map(([name, collection]) => ({
|
|
201
|
+
name,
|
|
202
|
+
documentCount: collection.Size,
|
|
203
|
+
indexCount: collection.getStats().indexCount,
|
|
204
|
+
}));
|
|
205
|
+
return {
|
|
206
|
+
...storageStats,
|
|
207
|
+
dbName: this.options.dbName,
|
|
208
|
+
collectionCount: this.collections.size,
|
|
209
|
+
collections: collectionStats,
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* 获取数据库配置
|
|
214
|
+
*
|
|
215
|
+
* @returns 数据库配置信息
|
|
216
|
+
*/
|
|
217
|
+
getConfig() {
|
|
218
|
+
return {
|
|
219
|
+
dbName: this.options.dbName,
|
|
220
|
+
path: this.storageEngine.getBasePath(),
|
|
221
|
+
pageSize: this.options.pageSize,
|
|
222
|
+
walThreshold: this.options.walThreshold,
|
|
223
|
+
autoCheckpoint: this.options.autoCheckpoint,
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* 同步数据到磁盘
|
|
228
|
+
* 确保所有数据都已持久化
|
|
229
|
+
*/
|
|
230
|
+
async sync() {
|
|
231
|
+
this.ensureOpen();
|
|
232
|
+
await this.storageEngine.sync();
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* 关闭数据库
|
|
236
|
+
* 释放所有资源并确保数据持久化
|
|
237
|
+
*/
|
|
238
|
+
async close() {
|
|
239
|
+
if (this.closed) {
|
|
240
|
+
return;
|
|
241
|
+
}
|
|
242
|
+
for (const collection of this.collections.values()) {
|
|
243
|
+
collection.clear();
|
|
244
|
+
}
|
|
245
|
+
this.collections.clear();
|
|
246
|
+
await this.storageEngine.close();
|
|
247
|
+
this.closed = true;
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* 确保数据库处于打开状态
|
|
251
|
+
*/
|
|
252
|
+
ensureOpen() {
|
|
253
|
+
if (this.closed) {
|
|
254
|
+
throw new errors_1.StorageError("Database is closed", "DATABASE_CLOSED");
|
|
255
|
+
}
|
|
256
|
+
if (!this.storageEngine.isInitialized()) {
|
|
257
|
+
throw new errors_1.StorageError("Database is not initialized", "DATABASE_NOT_INITIALIZED");
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* 获取存储引擎(内部使用)
|
|
262
|
+
*/
|
|
263
|
+
getStorageEngine() {
|
|
264
|
+
return this.storageEngine;
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
exports.LightDB = LightDB;
|
|
268
|
+
/**
|
|
269
|
+
* 定义集合 Schema 的辅助函数
|
|
270
|
+
* 提供类型推断和 IDE 支持
|
|
271
|
+
*
|
|
272
|
+
* @param schema Schema 定义
|
|
273
|
+
* @returns Schema 对象
|
|
274
|
+
*
|
|
275
|
+
* @example
|
|
276
|
+
* ```typescript
|
|
277
|
+
* const UserSchema = defineCollectionSchema({
|
|
278
|
+
* schema: {} as User,
|
|
279
|
+
* primaryKey: 'id',
|
|
280
|
+
* indexes: [
|
|
281
|
+
* { name: 'name_idx', fieldName: 'name' }
|
|
282
|
+
* ]
|
|
283
|
+
* });
|
|
284
|
+
* ```
|
|
285
|
+
*/
|
|
286
|
+
function defineCollectionSchema(schema) {
|
|
287
|
+
return schema;
|
|
288
|
+
}
|
|
289
|
+
/**
|
|
290
|
+
* 打开数据库的便捷函数
|
|
291
|
+
*
|
|
292
|
+
* @param path 数据库文件存储路径
|
|
293
|
+
* @param options 配置选项
|
|
294
|
+
* @returns 初始化完成的 LightDB 实例
|
|
295
|
+
*/
|
|
296
|
+
async function openDatabase(path, options) {
|
|
297
|
+
return LightDB.open(path, options);
|
|
298
|
+
}
|
|
299
|
+
//# sourceMappingURL=LightDB.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LightDB.js","sourceRoot":"","sources":["../../src/api/LightDB.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LightDB 事务实现
|
|
3
|
+
* 提供 ACID 事务支持
|
|
4
|
+
*/
|
|
5
|
+
import type { Collection } from "../collection";
|
|
6
|
+
import type {
|
|
7
|
+
TransactionContext,
|
|
8
|
+
TransactionCollection,
|
|
9
|
+
TransactionCallback,
|
|
10
|
+
TransactionOptions,
|
|
11
|
+
TransactionState,
|
|
12
|
+
TransactionResult,
|
|
13
|
+
} from "./types";
|
|
14
|
+
/**
|
|
15
|
+
* 事务错误类
|
|
16
|
+
*/
|
|
17
|
+
export declare class TransactionError extends Error {
|
|
18
|
+
readonly code: string;
|
|
19
|
+
constructor(message: string, code: string);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* 操作记录类型
|
|
23
|
+
*/
|
|
24
|
+
interface OperationRecord {
|
|
25
|
+
type: "insert" | "update" | "delete";
|
|
26
|
+
collectionName: string;
|
|
27
|
+
data: unknown;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* 事务类
|
|
31
|
+
* 管理事务的生命周期和操作
|
|
32
|
+
*/
|
|
33
|
+
export declare class Transaction implements TransactionContext {
|
|
34
|
+
private readonly collections;
|
|
35
|
+
private readonly options;
|
|
36
|
+
private state;
|
|
37
|
+
private readonly operations;
|
|
38
|
+
private readonly startTime;
|
|
39
|
+
constructor(collections: Map<string, Collection<Record<string, unknown>>>, options?: TransactionOptions);
|
|
40
|
+
/**
|
|
41
|
+
* 获取事务集合
|
|
42
|
+
*/
|
|
43
|
+
collection<T extends Record<string, unknown>>(name: string): TransactionCollection<T>;
|
|
44
|
+
/**
|
|
45
|
+
* 确保事务处于活动状态
|
|
46
|
+
*/
|
|
47
|
+
ensureActive(): void;
|
|
48
|
+
/**
|
|
49
|
+
* 记录操作
|
|
50
|
+
*/
|
|
51
|
+
recordOperation(type: OperationRecord["type"], collectionName: string, data: unknown): void;
|
|
52
|
+
/**
|
|
53
|
+
* 提交事务
|
|
54
|
+
*/
|
|
55
|
+
commit(): TransactionResult;
|
|
56
|
+
/**
|
|
57
|
+
* 回滚事务
|
|
58
|
+
*/
|
|
59
|
+
rollback(): TransactionResult;
|
|
60
|
+
/**
|
|
61
|
+
* 撤销操作
|
|
62
|
+
*/
|
|
63
|
+
private undoOperation;
|
|
64
|
+
/**
|
|
65
|
+
* 获取事务状态
|
|
66
|
+
*/
|
|
67
|
+
getState(): TransactionState;
|
|
68
|
+
/**
|
|
69
|
+
* 获取操作数量
|
|
70
|
+
*/
|
|
71
|
+
getOperationCount(): number;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* 事务管理器
|
|
75
|
+
* 管理多个并发事务
|
|
76
|
+
*/
|
|
77
|
+
export declare class TransactionManager {
|
|
78
|
+
private readonly collections;
|
|
79
|
+
private readonly activeTransactions;
|
|
80
|
+
private transactionCounter;
|
|
81
|
+
constructor(collections: Map<string, Collection<Record<string, unknown>>>);
|
|
82
|
+
/**
|
|
83
|
+
* 开始新事务
|
|
84
|
+
*/
|
|
85
|
+
begin(options?: TransactionOptions): Transaction;
|
|
86
|
+
/**
|
|
87
|
+
* 执行事务
|
|
88
|
+
*/
|
|
89
|
+
execute(callback: TransactionCallback, options?: TransactionOptions): Promise<TransactionResult>;
|
|
90
|
+
/**
|
|
91
|
+
* 获取活动事务数量
|
|
92
|
+
*/
|
|
93
|
+
getActiveTransactionCount(): number;
|
|
94
|
+
/**
|
|
95
|
+
* 清理已完成的事务
|
|
96
|
+
*/
|
|
97
|
+
cleanup(): void;
|
|
98
|
+
}
|
|
99
|
+
export {};
|
|
100
|
+
//# sourceMappingURL=Transaction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Transaction.d.ts","sourceRoot":"","sources":["../../src/api/Transaction.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAe,MAAM,eAAe,CAAC;AAC7D,OAAO,KAAK,EACR,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EACpB,MAAM,SAAS,CAAC;AAEjB;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,KAAK;IACvC,SAAgB,IAAI,EAAE,MAAM,CAAC;gBAEjB,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;CAM5C;AA0DD;;GAEG;AACH,UAAU,eAAe;IACrB,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACrC,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,OAAO,CAAC;CACjB;AAED;;;GAGG;AACH,qBAAa,WAAY,YAAW,kBAAkB;IAClD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAmD;IAC/E,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA+B;IACvD,OAAO,CAAC,KAAK,CAAmB;IAChC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAoB;IAC/C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;gBAEvB,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,kBAAkB;IAWvG;;OAEG;IACI,UAAU,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,qBAAqB,CAAC,CAAC,CAAC;IAW5F;;OAEG;IACI,YAAY,IAAI,IAAI;IAW3B;;OAEG;IACI,eAAe,CAAC,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,EAAE,cAAc,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI;IAIlG;;OAEG;IACI,MAAM,IAAI,iBAAiB;IA4BlC;;OAEG;IACI,QAAQ,IAAI,iBAAiB;IAiCpC;;OAEG;IACH,OAAO,CAAC,aAAa;IAoBrB;;OAEG;IACI,QAAQ,IAAI,gBAAgB;IAInC;;OAEG;IACI,iBAAiB,IAAI,MAAM;CAGrC;AAED;;;GAGG;AACH,qBAAa,kBAAkB;IAC3B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAmD;IAC/E,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAA2B;IAC9D,OAAO,CAAC,kBAAkB,CAAS;gBAEvB,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAMzE;;OAEG;IACI,KAAK,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,WAAW;IAOvD;;OAEG;IACU,OAAO,CAAC,QAAQ,EAAE,mBAAmB,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAiB7G;;OAEG;IACI,yBAAyB,IAAI,MAAM;IAI1C;;OAEG;IACI,OAAO,IAAI,IAAI;CAOzB"}
|