@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.
Files changed (150) hide show
  1. package/dist/api/LightDB.d.ts +194 -0
  2. package/dist/api/LightDB.d.ts.map +1 -0
  3. package/dist/api/LightDB.js +299 -0
  4. package/dist/api/LightDB.js.map +1 -0
  5. package/dist/api/Transaction.d.ts +100 -0
  6. package/dist/api/Transaction.d.ts.map +1 -0
  7. package/dist/api/Transaction.js +263 -0
  8. package/dist/api/Transaction.js.map +1 -0
  9. package/dist/api/index.d.ts +24 -0
  10. package/dist/api/index.d.ts.map +1 -0
  11. package/dist/api/index.js +54 -0
  12. package/dist/api/index.js.map +1 -0
  13. package/dist/api/types.d.ts +154 -0
  14. package/dist/api/types.d.ts.map +1 -0
  15. package/dist/api/types.js +7 -0
  16. package/dist/api/types.js.map +1 -0
  17. package/dist/collection/Collection.d.ts +235 -0
  18. package/dist/collection/Collection.d.ts.map +1 -0
  19. package/dist/collection/Collection.js +671 -0
  20. package/dist/collection/Collection.js.map +1 -0
  21. package/dist/collection/QueryBuilder.d.ts +225 -0
  22. package/dist/collection/QueryBuilder.d.ts.map +1 -0
  23. package/dist/collection/QueryBuilder.js +475 -0
  24. package/dist/collection/QueryBuilder.js.map +1 -0
  25. package/dist/collection/QueryParser.d.ts +117 -0
  26. package/dist/collection/QueryParser.d.ts.map +1 -0
  27. package/dist/collection/QueryParser.js +438 -0
  28. package/dist/collection/QueryParser.js.map +1 -0
  29. package/dist/collection/index.d.ts +42 -0
  30. package/dist/collection/index.d.ts.map +1 -0
  31. package/dist/collection/index.js +41 -0
  32. package/dist/collection/index.js.map +1 -0
  33. package/dist/collection/types.d.ts +365 -0
  34. package/dist/collection/types.d.ts.map +1 -0
  35. package/dist/collection/types.js +7 -0
  36. package/dist/collection/types.js.map +1 -0
  37. package/dist/constants/index.d.ts +51 -0
  38. package/dist/constants/index.d.ts.map +1 -0
  39. package/dist/constants/index.js +68 -0
  40. package/dist/constants/index.js.map +1 -0
  41. package/dist/errors/index.d.ts +69 -0
  42. package/dist/errors/index.d.ts.map +1 -0
  43. package/dist/errors/index.js +132 -0
  44. package/dist/errors/index.js.map +1 -0
  45. package/dist/index.d.ts +220 -0
  46. package/dist/index.d.ts.map +1 -0
  47. package/dist/index.js +729 -0
  48. package/dist/index.js.map +1 -0
  49. package/dist/indexes/BPlusTree.d.ts +181 -0
  50. package/dist/indexes/BPlusTree.d.ts.map +1 -0
  51. package/dist/indexes/BPlusTree.js +528 -0
  52. package/dist/indexes/BPlusTree.js.map +1 -0
  53. package/dist/indexes/IndexManager.d.ts +236 -0
  54. package/dist/indexes/IndexManager.d.ts.map +1 -0
  55. package/dist/indexes/IndexManager.js +502 -0
  56. package/dist/indexes/IndexManager.js.map +1 -0
  57. package/dist/indexes/PrimaryIndex.d.ts +240 -0
  58. package/dist/indexes/PrimaryIndex.d.ts.map +1 -0
  59. package/dist/indexes/PrimaryIndex.js +354 -0
  60. package/dist/indexes/PrimaryIndex.js.map +1 -0
  61. package/dist/indexes/SecondaryIndex.d.ts +204 -0
  62. package/dist/indexes/SecondaryIndex.d.ts.map +1 -0
  63. package/dist/indexes/SecondaryIndex.js +480 -0
  64. package/dist/indexes/SecondaryIndex.js.map +1 -0
  65. package/dist/indexes/errors.d.ts +66 -0
  66. package/dist/indexes/errors.d.ts.map +1 -0
  67. package/dist/indexes/errors.js +117 -0
  68. package/dist/indexes/errors.js.map +1 -0
  69. package/dist/indexes/index.d.ts +52 -0
  70. package/dist/indexes/index.d.ts.map +1 -0
  71. package/dist/indexes/index.js +131 -0
  72. package/dist/indexes/index.js.map +1 -0
  73. package/dist/indexes/types.d.ts +246 -0
  74. package/dist/indexes/types.d.ts.map +1 -0
  75. package/dist/indexes/types.js +30 -0
  76. package/dist/indexes/types.js.map +1 -0
  77. package/dist/performance/BatchWALWriter.d.ts +185 -0
  78. package/dist/performance/BatchWALWriter.d.ts.map +1 -0
  79. package/dist/performance/BatchWALWriter.js +490 -0
  80. package/dist/performance/BatchWALWriter.js.map +1 -0
  81. package/dist/performance/ColumnarStorage.d.ts +138 -0
  82. package/dist/performance/ColumnarStorage.d.ts.map +1 -0
  83. package/dist/performance/ColumnarStorage.js +875 -0
  84. package/dist/performance/ColumnarStorage.js.map +1 -0
  85. package/dist/performance/LazyQuery.d.ts +307 -0
  86. package/dist/performance/LazyQuery.d.ts.map +1 -0
  87. package/dist/performance/LazyQuery.js +588 -0
  88. package/dist/performance/LazyQuery.js.map +1 -0
  89. package/dist/performance/OptimizedBuffer.d.ts +375 -0
  90. package/dist/performance/OptimizedBuffer.d.ts.map +1 -0
  91. package/dist/performance/OptimizedBuffer.js +730 -0
  92. package/dist/performance/OptimizedBuffer.js.map +1 -0
  93. package/dist/performance/RWLock.d.ts +260 -0
  94. package/dist/performance/RWLock.d.ts.map +1 -0
  95. package/dist/performance/RWLock.js +570 -0
  96. package/dist/performance/RWLock.js.map +1 -0
  97. package/dist/performance/index.d.ts +41 -0
  98. package/dist/performance/index.d.ts.map +1 -0
  99. package/dist/performance/index.js +162 -0
  100. package/dist/performance/index.js.map +1 -0
  101. package/dist/performance/types.d.ts +247 -0
  102. package/dist/performance/types.d.ts.map +1 -0
  103. package/dist/performance/types.js +26 -0
  104. package/dist/performance/types.js.map +1 -0
  105. package/dist/storage/Checkpoint.d.ts +128 -0
  106. package/dist/storage/Checkpoint.d.ts.map +1 -0
  107. package/dist/storage/Checkpoint.js +251 -0
  108. package/dist/storage/Checkpoint.js.map +1 -0
  109. package/dist/storage/LightFile.d.ts +227 -0
  110. package/dist/storage/LightFile.d.ts.map +1 -0
  111. package/dist/storage/LightFile.js +526 -0
  112. package/dist/storage/LightFile.js.map +1 -0
  113. package/dist/storage/Recovery.d.ts +172 -0
  114. package/dist/storage/Recovery.d.ts.map +1 -0
  115. package/dist/storage/Recovery.js +399 -0
  116. package/dist/storage/Recovery.js.map +1 -0
  117. package/dist/storage/SHMFile.d.ts +243 -0
  118. package/dist/storage/SHMFile.d.ts.map +1 -0
  119. package/dist/storage/SHMFile.js +436 -0
  120. package/dist/storage/SHMFile.js.map +1 -0
  121. package/dist/storage/StorageEngine.d.ts +146 -0
  122. package/dist/storage/StorageEngine.d.ts.map +1 -0
  123. package/dist/storage/StorageEngine.js +353 -0
  124. package/dist/storage/StorageEngine.js.map +1 -0
  125. package/dist/storage/WALFile.d.ts +248 -0
  126. package/dist/storage/WALFile.d.ts.map +1 -0
  127. package/dist/storage/WALFile.js +597 -0
  128. package/dist/storage/WALFile.js.map +1 -0
  129. package/dist/storage/index.d.ts +10 -0
  130. package/dist/storage/index.d.ts.map +1 -0
  131. package/dist/storage/index.js +153 -0
  132. package/dist/storage/index.js.map +1 -0
  133. package/dist/types/index.d.ts +220 -0
  134. package/dist/types/index.d.ts.map +1 -0
  135. package/dist/types/index.js +7 -0
  136. package/dist/types/index.js.map +1 -0
  137. package/dist/utils/binary.d.ts +271 -0
  138. package/dist/utils/binary.d.ts.map +1 -0
  139. package/dist/utils/binary.js +454 -0
  140. package/dist/utils/binary.js.map +1 -0
  141. package/dist/utils/file.d.ts +166 -0
  142. package/dist/utils/file.d.ts.map +1 -0
  143. package/dist/utils/file.js +346 -0
  144. package/dist/utils/file.js.map +1 -0
  145. package/dist/utils/index.d.ts +6 -0
  146. package/dist/utils/index.d.ts.map +1 -0
  147. package/dist/utils/index.js +39 -0
  148. package/dist/utils/index.js.map +1 -0
  149. package/package.json +37 -0
  150. package/readme.md +124 -0
@@ -0,0 +1,597 @@
1
+ "use strict";
2
+ /**
3
+ * WAL(预写日志)文件实现
4
+ * 记录每一次写操作的增量日志,用于崩溃恢复与异步持久化
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.WalManager = exports.WalReader = exports.WalWriter = exports.WalRecordSerializer = void 0;
8
+ const constants_1 = require("../constants");
9
+ const utils_1 = require("../utils");
10
+ const errors_1 = require("../errors");
11
+ /**
12
+ * WAL 记录序列化器
13
+ * 负责将 WAL 记录序列化为二进制格式
14
+ */
15
+ class WalRecordSerializer {
16
+ /**
17
+ * 序列化 WAL 记录
18
+ * @param record WAL 记录
19
+ */
20
+ serialize(record) {
21
+ const keyLength = utils_1.BinaryUtils.stringByteLength(record.key);
22
+ const valueLength = record.value ? record.value.length : 0;
23
+ const recordSize = constants_1.WAL_RECORD_HEADER_SIZE + keyLength + valueLength;
24
+ const writer = new utils_1.BufferWriter(recordSize);
25
+ writer.writeBigUInt64LE(record.lsn);
26
+ writer.writeBigUInt64LE(record.transactionId);
27
+ writer.writeUInt8(record.operationType);
28
+ writer.writeUInt32LE(keyLength);
29
+ writer.writeUInt32LE(valueLength);
30
+ writer.writeStringRaw(record.key);
31
+ if (record.value && valueLength > 0) {
32
+ writer.writeBuffer(record.value);
33
+ }
34
+ writer.writeChecksum(0);
35
+ return writer.data;
36
+ }
37
+ /**
38
+ * 反序列化 WAL 记录
39
+ * @param buffer 包含记录数据的 Buffer
40
+ * @param startOffset 起始偏移量
41
+ */
42
+ deserialize(buffer, startOffset = 0) {
43
+ const reader = new utils_1.BufferReader(buffer, startOffset);
44
+ if (!reader.hasRemaining(constants_1.WAL_RECORD_HEADER_SIZE)) {
45
+ return null;
46
+ }
47
+ const startPos = reader.position;
48
+ const lsn = reader.readBigUInt64LE();
49
+ const transactionId = reader.readBigUInt64LE();
50
+ const operationType = reader.readUInt8();
51
+ const keyLength = reader.readUInt32LE();
52
+ const valueLength = reader.readUInt32LE();
53
+ if (!reader.hasRemaining(keyLength + valueLength + 4)) {
54
+ return null;
55
+ }
56
+ const key = utils_1.BinaryUtils.readString(buffer, reader.position, keyLength);
57
+ reader.position += keyLength;
58
+ let value = null;
59
+ if (valueLength > 0) {
60
+ value = reader.readBuffer(valueLength);
61
+ }
62
+ const checksum = reader.readUInt32LE();
63
+ try {
64
+ utils_1.BinaryUtils.verifyChecksum(buffer, checksum, startPos, reader.position - startPos - 4);
65
+ } catch (e) {
66
+ if (e instanceof errors_1.ChecksumError) {
67
+ throw new errors_1.WalError(`WAL record checksum verification failed at offset ${startOffset}`, lsn, startOffset);
68
+ }
69
+ throw e;
70
+ }
71
+ return {
72
+ record: {
73
+ lsn,
74
+ transactionId,
75
+ operationType,
76
+ key,
77
+ value,
78
+ checksum,
79
+ },
80
+ bytesRead: reader.position - startPos,
81
+ };
82
+ }
83
+ /**
84
+ * 计算记录大小
85
+ * @param key 键
86
+ * @param value 值(可选)
87
+ */
88
+ calculateRecordSize(key, value) {
89
+ const keyLength = utils_1.BinaryUtils.stringByteLength(key);
90
+ const valueLength = value ? value.length : 0;
91
+ return constants_1.WAL_RECORD_HEADER_SIZE + keyLength + valueLength;
92
+ }
93
+ }
94
+ exports.WalRecordSerializer = WalRecordSerializer;
95
+ /**
96
+ * WAL 文件写入器
97
+ * 负责将 WAL 记录追加写入文件
98
+ */
99
+ class WalWriter {
100
+ /**
101
+ * 创建 WAL 写入器
102
+ * @param basePath 数据库基础路径
103
+ * @param dbName 数据库名称
104
+ * @param syncStrategy 同步策略
105
+ * @param batchSize 批量写入大小
106
+ */
107
+ constructor(basePath, dbName, syncStrategy = "always", batchSize = 100) {
108
+ this.handle = null;
109
+ this.filePath = utils_1.FileUtils.buildFilePath(basePath, dbName, constants_1.FILE_EXTENSIONS.WAL);
110
+ this.serializer = new WalRecordSerializer();
111
+ this.currentOffset = 0;
112
+ this.pendingSync = false;
113
+ this.syncStrategy = syncStrategy;
114
+ this.batchSize = batchSize;
115
+ this.writeCount = 0;
116
+ }
117
+ /**
118
+ * 打开 WAL 文件
119
+ */
120
+ async open() {
121
+ const exists = await utils_1.FileUtils.exists(this.filePath);
122
+ if (exists) {
123
+ this.handle = new utils_1.FileHandleWrapper(this.filePath, "r+");
124
+ await this.handle.open();
125
+ this.currentOffset = await this.handle.size();
126
+ } else {
127
+ this.handle = new utils_1.FileHandleWrapper(this.filePath, "w+");
128
+ await this.handle.open();
129
+ this.currentOffset = 0;
130
+ }
131
+ }
132
+ /**
133
+ * 关闭 WAL 文件
134
+ */
135
+ async close() {
136
+ if (this.pendingSync && this.handle) {
137
+ await this.handle.sync();
138
+ this.pendingSync = false;
139
+ }
140
+ if (this.handle) {
141
+ await this.handle.close();
142
+ this.handle = null;
143
+ }
144
+ }
145
+ /**
146
+ * 写入单条 WAL 记录
147
+ * @param record WAL 记录
148
+ */
149
+ async write(record) {
150
+ if (!this.handle) {
151
+ throw new errors_1.WalError("WAL file not open");
152
+ }
153
+ const buffer = this.serializer.serialize(record);
154
+ const bytesWritten = await this.handle.write(buffer, 0, buffer.length, this.currentOffset);
155
+ this.currentOffset += bytesWritten;
156
+ this.writeCount++;
157
+ this.pendingSync = true;
158
+ if (this.syncStrategy === "always") {
159
+ await this.sync();
160
+ } else if (this.syncStrategy === "batch" && this.writeCount >= this.batchSize) {
161
+ await this.sync();
162
+ this.writeCount = 0;
163
+ }
164
+ return {
165
+ success: true,
166
+ lsn: record.lsn,
167
+ bytesWritten,
168
+ };
169
+ }
170
+ /**
171
+ * 批量写入 WAL 记录
172
+ * @param records WAL 记录数组
173
+ */
174
+ async writeBatch(records) {
175
+ if (records.length === 0) {
176
+ return {
177
+ success: true,
178
+ startLsn: 0n,
179
+ endLsn: 0n,
180
+ totalBytesWritten: 0,
181
+ recordsWritten: 0,
182
+ };
183
+ }
184
+ if (!this.handle) {
185
+ throw new errors_1.WalError("WAL file not open");
186
+ }
187
+ const buffers = records.map((r) => this.serializer.serialize(r));
188
+ const combinedBuffer = utils_1.BinaryUtils.concat(buffers);
189
+ const bytesWritten = await this.handle.write(combinedBuffer, 0, combinedBuffer.length, this.currentOffset);
190
+ this.currentOffset += bytesWritten;
191
+ this.pendingSync = true;
192
+ if (this.syncStrategy === "always" || this.syncStrategy === "batch") {
193
+ await this.sync();
194
+ }
195
+ return {
196
+ success: true,
197
+ startLsn: records[0].lsn,
198
+ endLsn: records[records.length - 1].lsn,
199
+ totalBytesWritten: bytesWritten,
200
+ recordsWritten: records.length,
201
+ };
202
+ }
203
+ /**
204
+ * 同步到磁盘
205
+ */
206
+ async sync() {
207
+ if (this.handle && this.pendingSync) {
208
+ await this.handle.sync();
209
+ this.pendingSync = false;
210
+ }
211
+ }
212
+ /**
213
+ * 获取当前文件大小
214
+ */
215
+ async getFileSize() {
216
+ return this.currentOffset;
217
+ }
218
+ /**
219
+ * 获取当前偏移量
220
+ */
221
+ getCurrentOffset() {
222
+ return this.currentOffset;
223
+ }
224
+ /**
225
+ * 清空 WAL 文件
226
+ */
227
+ async clear() {
228
+ if (this.handle) {
229
+ await this.handle.close();
230
+ }
231
+ await utils_1.FileUtils.truncateFile(this.filePath, 0);
232
+ this.handle = new utils_1.FileHandleWrapper(this.filePath, "w+");
233
+ await this.handle.open();
234
+ this.currentOffset = 0;
235
+ this.pendingSync = false;
236
+ this.writeCount = 0;
237
+ }
238
+ /**
239
+ * 获取文件路径
240
+ */
241
+ getFilePath() {
242
+ return this.filePath;
243
+ }
244
+ }
245
+ exports.WalWriter = WalWriter;
246
+ /**
247
+ * WAL 文件读取器
248
+ * 负责顺序读取 WAL 记录
249
+ */
250
+ class WalReader {
251
+ /**
252
+ * 创建 WAL 读取器
253
+ * @param basePath 数据库基础路径
254
+ * @param dbName 数据库名称
255
+ * @param readBufferSize 读取缓冲区大小,默认 64KB
256
+ */
257
+ constructor(basePath, dbName, readBufferSize = 64 * 1024) {
258
+ this.handle = null;
259
+ this.filePath = utils_1.FileUtils.buildFilePath(basePath, dbName, constants_1.FILE_EXTENSIONS.WAL);
260
+ this.serializer = new WalRecordSerializer();
261
+ this.fileSize = 0;
262
+ this.currentOffset = 0;
263
+ this.readBufferSize = readBufferSize;
264
+ this.readBuffer = utils_1.BinaryUtils.alloc(readBufferSize);
265
+ this.bufferValidBytes = 0;
266
+ }
267
+ /**
268
+ * 打开 WAL 文件
269
+ */
270
+ async open() {
271
+ const exists = await utils_1.FileUtils.exists(this.filePath);
272
+ if (!exists) {
273
+ this.fileSize = 0;
274
+ return;
275
+ }
276
+ this.handle = new utils_1.FileHandleWrapper(this.filePath, "r");
277
+ await this.handle.open();
278
+ this.fileSize = await this.handle.size();
279
+ this.currentOffset = 0;
280
+ this.bufferValidBytes = 0;
281
+ }
282
+ /**
283
+ * 关闭 WAL 文件
284
+ */
285
+ async close() {
286
+ if (this.handle) {
287
+ await this.handle.close();
288
+ this.handle = null;
289
+ }
290
+ }
291
+ /**
292
+ * 填充读取缓冲区
293
+ */
294
+ async fillBuffer() {
295
+ if (!this.handle) {
296
+ return false;
297
+ }
298
+ if (this.currentOffset >= this.fileSize) {
299
+ return false;
300
+ }
301
+ const remaining = this.fileSize - this.currentOffset;
302
+ const toRead = Math.min(this.readBufferSize, remaining);
303
+ const bytesRead = await this.handle.read(this.readBuffer, 0, toRead, this.currentOffset);
304
+ this.bufferValidBytes = bytesRead;
305
+ this.currentOffset += bytesRead;
306
+ return bytesRead > 0;
307
+ }
308
+ /**
309
+ * 读取下一条 WAL 记录
310
+ */
311
+ async readNext() {
312
+ if (!this.handle && this.fileSize === 0) {
313
+ return null;
314
+ }
315
+ if (this.bufferValidBytes === 0) {
316
+ if (!(await this.fillBuffer())) {
317
+ return null;
318
+ }
319
+ }
320
+ const buffer = this.readBuffer.subarray(0, this.bufferValidBytes);
321
+ const result = this.serializer.deserialize(buffer, 0);
322
+ if (!result) {
323
+ return null;
324
+ }
325
+ this.bufferValidBytes = 0;
326
+ return result.record;
327
+ }
328
+ /**
329
+ * 创建 WAL 记录迭代器
330
+ */
331
+ async *iterate() {
332
+ await this.open();
333
+ while (true) {
334
+ const record = await this.readNext();
335
+ if (!record) {
336
+ break;
337
+ }
338
+ yield record;
339
+ }
340
+ await this.close();
341
+ }
342
+ /**
343
+ * 从指定偏移量开始读取
344
+ * @param offset 起始偏移量
345
+ */
346
+ async seek(offset) {
347
+ this.currentOffset = offset;
348
+ this.bufferValidBytes = 0;
349
+ }
350
+ /**
351
+ * 获取当前偏移量
352
+ */
353
+ getCurrentOffset() {
354
+ return this.currentOffset;
355
+ }
356
+ /**
357
+ * 获取文件大小
358
+ */
359
+ getFileSize() {
360
+ return this.fileSize;
361
+ }
362
+ /**
363
+ * 读取所有 WAL 记录
364
+ */
365
+ async readAll() {
366
+ const records = [];
367
+ await this.open();
368
+ while (true) {
369
+ const record = await this.readNext();
370
+ if (!record) {
371
+ break;
372
+ }
373
+ records.push(record);
374
+ }
375
+ await this.close();
376
+ return records;
377
+ }
378
+ /**
379
+ * 获取文件路径
380
+ */
381
+ getFilePath() {
382
+ return this.filePath;
383
+ }
384
+ }
385
+ exports.WalReader = WalReader;
386
+ /**
387
+ * WAL 管理器
388
+ * 提供统一的 WAL 读写接口
389
+ */
390
+ class WalManager {
391
+ /**
392
+ * 创建 WAL 管理器
393
+ * @param basePath 数据库基础路径
394
+ * @param dbName 数据库名称
395
+ */
396
+ constructor(basePath, dbName) {
397
+ this.writer = null;
398
+ this.reader = null;
399
+ this.basePath = basePath;
400
+ this.dbName = dbName;
401
+ this.currentLsn = 0n;
402
+ this.currentTransactionId = 0n;
403
+ }
404
+ /**
405
+ * 初始化 WAL 管理器
406
+ */
407
+ async initialize() {
408
+ this.writer = new WalWriter(this.basePath, this.dbName);
409
+ await this.writer.open();
410
+ this.reader = new WalReader(this.basePath, this.dbName);
411
+ await this.reader.open();
412
+ const lastLsn = await this.getLastLsn();
413
+ this.currentLsn = lastLsn + 1n;
414
+ this.currentTransactionId = 0n;
415
+ }
416
+ /**
417
+ * 获取最后一条记录的 LSN
418
+ */
419
+ async getLastLsn() {
420
+ if (!this.reader) {
421
+ return 0n;
422
+ }
423
+ let lastLsn = 0n;
424
+ const records = await this.reader.readAll();
425
+ for (const record of records) {
426
+ if (record.lsn > lastLsn) {
427
+ lastLsn = record.lsn;
428
+ }
429
+ }
430
+ return lastLsn;
431
+ }
432
+ /**
433
+ * 分配新的 LSN
434
+ */
435
+ allocateLsn() {
436
+ const lsn = this.currentLsn;
437
+ this.currentLsn++;
438
+ return lsn;
439
+ }
440
+ /**
441
+ * 分配新的事务 ID
442
+ */
443
+ allocateTransactionId() {
444
+ const txId = this.currentTransactionId;
445
+ this.currentTransactionId++;
446
+ return txId;
447
+ }
448
+ /**
449
+ * 写入插入记录
450
+ * @param key 键
451
+ * @param value 值
452
+ */
453
+ async writeInsert(key, value) {
454
+ if (!this.writer) {
455
+ throw new errors_1.WalError("WAL manager not initialized");
456
+ }
457
+ const record = {
458
+ lsn: this.allocateLsn(),
459
+ transactionId: this.allocateTransactionId(),
460
+ operationType: constants_1.OperationType.Insert,
461
+ key,
462
+ value,
463
+ checksum: 0,
464
+ };
465
+ return this.writer.write(record);
466
+ }
467
+ /**
468
+ * 写入更新记录
469
+ * @param key 键
470
+ * @param value 新值
471
+ */
472
+ async writeUpdate(key, value) {
473
+ if (!this.writer) {
474
+ throw new errors_1.WalError("WAL manager not initialized");
475
+ }
476
+ const record = {
477
+ lsn: this.allocateLsn(),
478
+ transactionId: this.allocateTransactionId(),
479
+ operationType: constants_1.OperationType.Update,
480
+ key,
481
+ value,
482
+ checksum: 0,
483
+ };
484
+ return this.writer.write(record);
485
+ }
486
+ /**
487
+ * 写入删除记录
488
+ * @param key 键
489
+ */
490
+ async writeDelete(key) {
491
+ if (!this.writer) {
492
+ throw new errors_1.WalError("WAL manager not initialized");
493
+ }
494
+ const record = {
495
+ lsn: this.allocateLsn(),
496
+ transactionId: this.allocateTransactionId(),
497
+ operationType: constants_1.OperationType.Delete,
498
+ key,
499
+ value: null,
500
+ checksum: 0,
501
+ };
502
+ return this.writer.write(record);
503
+ }
504
+ /**
505
+ * 写入检查点标记
506
+ */
507
+ async writeCheckpoint() {
508
+ if (!this.writer) {
509
+ throw new errors_1.WalError("WAL manager not initialized");
510
+ }
511
+ const record = {
512
+ lsn: this.allocateLsn(),
513
+ transactionId: this.allocateTransactionId(),
514
+ operationType: constants_1.OperationType.Checkpoint,
515
+ key: "",
516
+ value: null,
517
+ checksum: 0,
518
+ };
519
+ return this.writer.write(record);
520
+ }
521
+ /**
522
+ * 同步 WAL 到磁盘
523
+ */
524
+ async sync() {
525
+ if (this.writer) {
526
+ await this.writer.sync();
527
+ }
528
+ }
529
+ /**
530
+ * 清空 WAL 文件
531
+ */
532
+ async clear() {
533
+ if (this.writer) {
534
+ await this.writer.clear();
535
+ }
536
+ this.currentLsn = 1n;
537
+ }
538
+ /**
539
+ * 获取 WAL 文件大小
540
+ */
541
+ async getFileSize() {
542
+ if (!this.writer) {
543
+ return 0;
544
+ }
545
+ return this.writer.getFileSize();
546
+ }
547
+ /**
548
+ * 创建记录迭代器
549
+ */
550
+ async *iterateRecords() {
551
+ if (!this.reader) {
552
+ return;
553
+ }
554
+ const reader = new WalReader(this.basePath, this.dbName);
555
+ yield* reader.iterate();
556
+ }
557
+ /**
558
+ * 读取所有记录
559
+ */
560
+ async readAllRecords() {
561
+ const reader = new WalReader(this.basePath, this.dbName);
562
+ return reader.readAll();
563
+ }
564
+ /**
565
+ * 关闭 WAL 管理器
566
+ */
567
+ async close() {
568
+ if (this.writer) {
569
+ await this.writer.close();
570
+ this.writer = null;
571
+ }
572
+ if (this.reader) {
573
+ await this.reader.close();
574
+ this.reader = null;
575
+ }
576
+ }
577
+ /**
578
+ * 获取当前 LSN
579
+ */
580
+ getCurrentLsn() {
581
+ return this.currentLsn;
582
+ }
583
+ /**
584
+ * 获取当前事务 ID
585
+ */
586
+ getCurrentTransactionId() {
587
+ return this.currentTransactionId;
588
+ }
589
+ /**
590
+ * 设置当前 LSN(用于恢复)
591
+ */
592
+ setCurrentLsn(lsn) {
593
+ this.currentLsn = lsn + 1n;
594
+ }
595
+ }
596
+ exports.WalManager = WalManager;
597
+ //# sourceMappingURL=WALFile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WALFile.js","sourceRoot":"","sources":["../../src/storage/WALFile.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * 存储模块导出
3
+ */
4
+ export { LightFileSerializer, LightFileManager, PageManager } from "./LightFile";
5
+ export { WalRecordSerializer, WalWriter, WalReader, WalManager } from "./WALFile";
6
+ export { ShmSerializer, ShmHashTable, ShmFileManager, WalIndexManager } from "./SHMFile";
7
+ export { CheckpointManager, AutoCheckpointScheduler, IncrementalCheckpointManager, CheckpointOptions } from "./Checkpoint";
8
+ export { RecoveryManager, FastRecoveryManager, RecoveryValidator, RecoveryPhase, RecoveryContext } from "./Recovery";
9
+ export { StorageEngine, createStorageEngine } from "./StorageEngine";
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACH,mBAAmB,EACnB,gBAAgB,EAChB,WAAW,GACd,MAAM,aAAa,CAAC;AACrB,OAAO,EACH,mBAAmB,EACnB,SAAS,EACT,SAAS,EACT,UAAU,GACb,MAAM,WAAW,CAAC;AACnB,OAAO,EACH,aAAa,EACb,YAAY,EACZ,cAAc,EACd,eAAe,GAClB,MAAM,WAAW,CAAC;AACnB,OAAO,EACH,iBAAiB,EACjB,uBAAuB,EACvB,4BAA4B,EAC5B,iBAAiB,GACpB,MAAM,cAAc,CAAC;AACtB,OAAO,EACH,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EACjB,aAAa,EACb,eAAe,GAClB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC"}