@yydb/light-db 0.0.0 → 0.0.11
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/database.d.ts +48 -0
- package/dist/api/database.d.ts.map +1 -0
- package/dist/api/database.js +120 -0
- package/dist/api/database.js.map +1 -0
- package/dist/api/index.d.ts +7 -22
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +5 -52
- package/dist/api/index.js.map +1 -1
- package/dist/api/schema.d.ts +33 -0
- package/dist/api/schema.d.ts.map +1 -0
- package/dist/api/schema.js +80 -0
- package/dist/api/schema.js.map +1 -0
- package/dist/api/transaction.d.ts +26 -0
- package/dist/api/transaction.d.ts.map +1 -0
- package/dist/api/transaction.js +52 -0
- package/dist/api/transaction.js.map +1 -0
- package/dist/api/types.d.ts +55 -148
- package/dist/api/types.d.ts.map +1 -1
- package/dist/api/types.js +6 -5
- package/dist/api/types.js.map +1 -1
- package/dist/codec/binary.d.ts +196 -0
- package/dist/codec/binary.d.ts.map +1 -0
- package/dist/codec/binary.js +342 -0
- package/dist/codec/binary.js.map +1 -0
- package/dist/codec/checksum.d.ts +21 -0
- package/dist/codec/checksum.d.ts.map +1 -0
- package/dist/codec/checksum.js +46 -0
- package/dist/codec/checksum.js.map +1 -0
- package/dist/codec/index.d.ts +12 -0
- package/dist/codec/index.d.ts.map +1 -0
- package/dist/codec/index.js +10 -0
- package/dist/codec/index.js.map +1 -0
- package/dist/codec/page.d.ts +114 -0
- package/dist/codec/page.d.ts.map +1 -0
- package/dist/codec/page.js +225 -0
- package/dist/codec/page.js.map +1 -0
- package/dist/codec/record.d.ts +62 -0
- package/dist/codec/record.d.ts.map +1 -0
- package/dist/codec/record.js +82 -0
- package/dist/codec/record.js.map +1 -0
- package/dist/core/broadcast.d.ts +39 -0
- package/dist/core/broadcast.d.ts.map +1 -0
- package/dist/core/broadcast.js +54 -0
- package/dist/core/broadcast.js.map +1 -0
- package/dist/core/checkpoint.d.ts +23 -0
- package/dist/core/checkpoint.d.ts.map +1 -0
- package/dist/core/checkpoint.js +49 -0
- package/dist/core/checkpoint.js.map +1 -0
- package/dist/core/engine.d.ts +142 -0
- package/dist/core/engine.d.ts.map +1 -0
- package/dist/core/engine.js +304 -0
- package/dist/core/engine.js.map +1 -0
- package/dist/core/index.d.ts +17 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +13 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/lease.d.ts +32 -0
- package/dist/core/lease.d.ts.map +1 -0
- package/dist/core/lease.js +81 -0
- package/dist/core/lease.js.map +1 -0
- package/dist/core/records.d.ts +49 -0
- package/dist/core/records.d.ts.map +1 -0
- package/dist/core/records.js +70 -0
- package/dist/core/records.js.map +1 -0
- package/dist/core/recovery.d.ts +43 -0
- package/dist/core/recovery.d.ts.map +1 -0
- package/dist/core/recovery.js +99 -0
- package/dist/core/recovery.js.map +1 -0
- package/dist/core/wal.d.ts +50 -0
- package/dist/core/wal.d.ts.map +1 -0
- package/dist/core/wal.js +114 -0
- package/dist/core/wal.js.map +1 -0
- package/dist/errors/index.d.ts +44 -66
- package/dist/errors/index.d.ts.map +1 -1
- package/dist/errors/index.js +43 -128
- package/dist/errors/index.js.map +1 -1
- package/dist/index.d.ts +14 -215
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -724
- package/dist/index.js.map +1 -1
- package/dist/storage/StorageAdapter.d.ts +97 -0
- package/dist/storage/StorageAdapter.d.ts.map +1 -0
- package/dist/storage/StorageAdapter.js +9 -0
- package/dist/storage/StorageAdapter.js.map +1 -0
- package/dist/storage/index.d.ts +9 -8
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +8 -151
- package/dist/storage/index.js.map +1 -1
- package/dist/storage/indexeddb/IndexedDbStorageAdapter.d.ts +140 -0
- package/dist/storage/indexeddb/IndexedDbStorageAdapter.d.ts.map +1 -0
- package/dist/storage/indexeddb/IndexedDbStorageAdapter.js +403 -0
- package/dist/storage/indexeddb/IndexedDbStorageAdapter.js.map +1 -0
- package/dist/storage/memory/MemoryStorageAdapter.d.ts +76 -0
- package/dist/storage/memory/MemoryStorageAdapter.d.ts.map +1 -0
- package/dist/storage/memory/MemoryStorageAdapter.js +212 -0
- package/dist/storage/memory/MemoryStorageAdapter.js.map +1 -0
- package/dist/storage/opfs/OpfsStorageAdapter.d.ts +141 -0
- package/dist/storage/opfs/OpfsStorageAdapter.d.ts.map +1 -0
- package/dist/storage/opfs/OpfsStorageAdapter.js +400 -0
- package/dist/storage/opfs/OpfsStorageAdapter.js.map +1 -0
- package/package.json +48 -36
- package/readme.md +80 -94
- package/dist/api/LightDB.d.ts +0 -194
- package/dist/api/LightDB.d.ts.map +0 -1
- package/dist/api/LightDB.js +0 -299
- package/dist/api/LightDB.js.map +0 -1
- package/dist/api/Transaction.d.ts +0 -100
- package/dist/api/Transaction.d.ts.map +0 -1
- package/dist/api/Transaction.js +0 -263
- package/dist/api/Transaction.js.map +0 -1
- package/dist/collection/Collection.d.ts +0 -235
- package/dist/collection/Collection.d.ts.map +0 -1
- package/dist/collection/Collection.js +0 -671
- package/dist/collection/Collection.js.map +0 -1
- package/dist/collection/QueryBuilder.d.ts +0 -225
- package/dist/collection/QueryBuilder.d.ts.map +0 -1
- package/dist/collection/QueryBuilder.js +0 -475
- package/dist/collection/QueryBuilder.js.map +0 -1
- package/dist/collection/QueryParser.d.ts +0 -117
- package/dist/collection/QueryParser.d.ts.map +0 -1
- package/dist/collection/QueryParser.js +0 -438
- package/dist/collection/QueryParser.js.map +0 -1
- package/dist/collection/index.d.ts +0 -42
- package/dist/collection/index.d.ts.map +0 -1
- package/dist/collection/index.js +0 -41
- package/dist/collection/index.js.map +0 -1
- package/dist/collection/types.d.ts +0 -365
- package/dist/collection/types.d.ts.map +0 -1
- package/dist/collection/types.js +0 -7
- package/dist/collection/types.js.map +0 -1
- package/dist/constants/index.d.ts +0 -51
- package/dist/constants/index.d.ts.map +0 -1
- package/dist/constants/index.js +0 -68
- package/dist/constants/index.js.map +0 -1
- package/dist/indexes/BPlusTree.d.ts +0 -181
- package/dist/indexes/BPlusTree.d.ts.map +0 -1
- package/dist/indexes/BPlusTree.js +0 -528
- package/dist/indexes/BPlusTree.js.map +0 -1
- package/dist/indexes/IndexManager.d.ts +0 -236
- package/dist/indexes/IndexManager.d.ts.map +0 -1
- package/dist/indexes/IndexManager.js +0 -502
- package/dist/indexes/IndexManager.js.map +0 -1
- package/dist/indexes/PrimaryIndex.d.ts +0 -240
- package/dist/indexes/PrimaryIndex.d.ts.map +0 -1
- package/dist/indexes/PrimaryIndex.js +0 -354
- package/dist/indexes/PrimaryIndex.js.map +0 -1
- package/dist/indexes/SecondaryIndex.d.ts +0 -204
- package/dist/indexes/SecondaryIndex.d.ts.map +0 -1
- package/dist/indexes/SecondaryIndex.js +0 -480
- package/dist/indexes/SecondaryIndex.js.map +0 -1
- package/dist/indexes/errors.d.ts +0 -66
- package/dist/indexes/errors.d.ts.map +0 -1
- package/dist/indexes/errors.js +0 -117
- package/dist/indexes/errors.js.map +0 -1
- package/dist/indexes/index.d.ts +0 -52
- package/dist/indexes/index.d.ts.map +0 -1
- package/dist/indexes/index.js +0 -131
- package/dist/indexes/index.js.map +0 -1
- package/dist/indexes/types.d.ts +0 -246
- package/dist/indexes/types.d.ts.map +0 -1
- package/dist/indexes/types.js +0 -30
- package/dist/indexes/types.js.map +0 -1
- package/dist/performance/BatchWALWriter.d.ts +0 -185
- package/dist/performance/BatchWALWriter.d.ts.map +0 -1
- package/dist/performance/BatchWALWriter.js +0 -490
- package/dist/performance/BatchWALWriter.js.map +0 -1
- package/dist/performance/ColumnarStorage.d.ts +0 -138
- package/dist/performance/ColumnarStorage.d.ts.map +0 -1
- package/dist/performance/ColumnarStorage.js +0 -875
- package/dist/performance/ColumnarStorage.js.map +0 -1
- package/dist/performance/LazyQuery.d.ts +0 -307
- package/dist/performance/LazyQuery.d.ts.map +0 -1
- package/dist/performance/LazyQuery.js +0 -588
- package/dist/performance/LazyQuery.js.map +0 -1
- package/dist/performance/OptimizedBuffer.d.ts +0 -375
- package/dist/performance/OptimizedBuffer.d.ts.map +0 -1
- package/dist/performance/OptimizedBuffer.js +0 -730
- package/dist/performance/OptimizedBuffer.js.map +0 -1
- package/dist/performance/RWLock.d.ts +0 -260
- package/dist/performance/RWLock.d.ts.map +0 -1
- package/dist/performance/RWLock.js +0 -570
- package/dist/performance/RWLock.js.map +0 -1
- package/dist/performance/index.d.ts +0 -41
- package/dist/performance/index.d.ts.map +0 -1
- package/dist/performance/index.js +0 -162
- package/dist/performance/index.js.map +0 -1
- package/dist/performance/types.d.ts +0 -247
- package/dist/performance/types.d.ts.map +0 -1
- package/dist/performance/types.js +0 -26
- package/dist/performance/types.js.map +0 -1
- package/dist/storage/Checkpoint.d.ts +0 -128
- package/dist/storage/Checkpoint.d.ts.map +0 -1
- package/dist/storage/Checkpoint.js +0 -251
- package/dist/storage/Checkpoint.js.map +0 -1
- package/dist/storage/LightFile.d.ts +0 -227
- package/dist/storage/LightFile.d.ts.map +0 -1
- package/dist/storage/LightFile.js +0 -526
- package/dist/storage/LightFile.js.map +0 -1
- package/dist/storage/Recovery.d.ts +0 -172
- package/dist/storage/Recovery.d.ts.map +0 -1
- package/dist/storage/Recovery.js +0 -399
- package/dist/storage/Recovery.js.map +0 -1
- package/dist/storage/SHMFile.d.ts +0 -243
- package/dist/storage/SHMFile.d.ts.map +0 -1
- package/dist/storage/SHMFile.js +0 -436
- package/dist/storage/SHMFile.js.map +0 -1
- package/dist/storage/StorageEngine.d.ts +0 -146
- package/dist/storage/StorageEngine.d.ts.map +0 -1
- package/dist/storage/StorageEngine.js +0 -353
- package/dist/storage/StorageEngine.js.map +0 -1
- package/dist/storage/WALFile.d.ts +0 -248
- package/dist/storage/WALFile.d.ts.map +0 -1
- package/dist/storage/WALFile.js +0 -597
- package/dist/storage/WALFile.js.map +0 -1
- package/dist/types/index.d.ts +0 -220
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js +0 -7
- package/dist/types/index.js.map +0 -1
- package/dist/utils/binary.d.ts +0 -271
- package/dist/utils/binary.d.ts.map +0 -1
- package/dist/utils/binary.js +0 -454
- package/dist/utils/binary.js.map +0 -1
- package/dist/utils/file.d.ts +0 -166
- package/dist/utils/file.d.ts.map +0 -1
- package/dist/utils/file.js +0 -346
- package/dist/utils/file.js.map +0 -1
- package/dist/utils/index.d.ts +0 -6
- package/dist/utils/index.d.ts.map +0 -1
- package/dist/utils/index.js +0 -39
- package/dist/utils/index.js.map +0 -1
|
@@ -1,251 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* 检查点(Checkpoint)机制实现
|
|
4
|
-
* 将内存中的完整数据原子性写入新的 .light 文件
|
|
5
|
-
*/
|
|
6
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.IncrementalCheckpointManager = exports.AutoCheckpointScheduler = exports.CheckpointManager = void 0;
|
|
8
|
-
const constants_1 = require("../constants");
|
|
9
|
-
const errors_1 = require("../errors");
|
|
10
|
-
/**
|
|
11
|
-
* 检查点管理器
|
|
12
|
-
* 负责管理检查点的创建和协调
|
|
13
|
-
*/
|
|
14
|
-
class CheckpointManager {
|
|
15
|
-
/**
|
|
16
|
-
* 创建检查点管理器
|
|
17
|
-
* @param lightFileManager Light 文件管理器
|
|
18
|
-
* @param walManager WAL 管理器
|
|
19
|
-
* @param walIndexManager WAL 索引管理器
|
|
20
|
-
* @param pageManager 页面管理器
|
|
21
|
-
* @param walThreshold WAL 文件大小阈值
|
|
22
|
-
*/
|
|
23
|
-
constructor(lightFileManager, walManager, walIndexManager, pageManager, walThreshold = constants_1.DEFAULT_WAL_THRESHOLD) {
|
|
24
|
-
this.lightFileManager = lightFileManager;
|
|
25
|
-
this.walManager = walManager;
|
|
26
|
-
this.walIndexManager = walIndexManager;
|
|
27
|
-
this.pageManager = pageManager;
|
|
28
|
-
this.walThreshold = walThreshold;
|
|
29
|
-
this.lastCheckpointTime = null;
|
|
30
|
-
this.checkpointInProgress = false;
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* 检查是否需要执行检查点
|
|
34
|
-
*/
|
|
35
|
-
async shouldCheckpoint() {
|
|
36
|
-
if (this.checkpointInProgress) {
|
|
37
|
-
return false;
|
|
38
|
-
}
|
|
39
|
-
const walSize = await this.walManager.getFileSize();
|
|
40
|
-
return walSize >= this.walThreshold;
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* 执行检查点
|
|
44
|
-
* @param records 当前内存中的所有记录
|
|
45
|
-
*/
|
|
46
|
-
async execute(records) {
|
|
47
|
-
if (this.checkpointInProgress) {
|
|
48
|
-
throw new errors_1.CheckpointError("Checkpoint already in progress");
|
|
49
|
-
}
|
|
50
|
-
this.checkpointInProgress = true;
|
|
51
|
-
try {
|
|
52
|
-
const currentLsn = this.walManager.getCurrentLsn();
|
|
53
|
-
await this.walManager.writeCheckpoint();
|
|
54
|
-
await this.walManager.sync();
|
|
55
|
-
const pages = this.buildPages(records);
|
|
56
|
-
await this.lightFileManager.writeSnapshot(pages, currentLsn);
|
|
57
|
-
await this.walManager.clear();
|
|
58
|
-
await this.walIndexManager.resetAfterCheckpoint(currentLsn);
|
|
59
|
-
this.pageManager.loadPages(pages);
|
|
60
|
-
this.pageManager.clearDirtyFlags();
|
|
61
|
-
this.lastCheckpointTime = Date.now();
|
|
62
|
-
const endTime = Date.now();
|
|
63
|
-
const bytesWritten = await this.lightFileManager.getFileSize();
|
|
64
|
-
return {
|
|
65
|
-
timestamp: endTime,
|
|
66
|
-
lsn: currentLsn,
|
|
67
|
-
pagesWritten: pages.size,
|
|
68
|
-
bytesWritten,
|
|
69
|
-
};
|
|
70
|
-
} catch (error) {
|
|
71
|
-
const err = error;
|
|
72
|
-
throw new errors_1.CheckpointError(`Checkpoint failed: ${err.message}`, this.walManager.getCurrentLsn());
|
|
73
|
-
} finally {
|
|
74
|
-
this.checkpointInProgress = false;
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
/**
|
|
78
|
-
* 将记录转换为页面
|
|
79
|
-
* @param records 记录映射
|
|
80
|
-
*/
|
|
81
|
-
buildPages(records) {
|
|
82
|
-
const pages = new Map();
|
|
83
|
-
const pageSize = this.pageManager.getPageSize();
|
|
84
|
-
let currentPageId = 0;
|
|
85
|
-
let currentRecords = [];
|
|
86
|
-
let currentSize = 0;
|
|
87
|
-
const headerSize = 12;
|
|
88
|
-
const recordOverhead = 4 + 4 + 4;
|
|
89
|
-
for (const [key, value] of records) {
|
|
90
|
-
const keyLength = Buffer.byteLength(key, "utf8");
|
|
91
|
-
const recordSize = recordOverhead + keyLength + value.length;
|
|
92
|
-
if (currentSize + recordSize > pageSize - headerSize - 4 && currentRecords.length > 0) {
|
|
93
|
-
pages.set(currentPageId, {
|
|
94
|
-
pageId: currentPageId,
|
|
95
|
-
records: currentRecords.map((r) => ({ key: r.key, value: r.value })),
|
|
96
|
-
checksum: 0,
|
|
97
|
-
});
|
|
98
|
-
currentPageId++;
|
|
99
|
-
currentRecords = [];
|
|
100
|
-
currentSize = 0;
|
|
101
|
-
}
|
|
102
|
-
currentRecords.push({ key, value });
|
|
103
|
-
currentSize += recordSize;
|
|
104
|
-
}
|
|
105
|
-
if (currentRecords.length > 0) {
|
|
106
|
-
pages.set(currentPageId, {
|
|
107
|
-
pageId: currentPageId,
|
|
108
|
-
records: currentRecords.map((r) => ({ key: r.key, value: r.value })),
|
|
109
|
-
checksum: 0,
|
|
110
|
-
});
|
|
111
|
-
}
|
|
112
|
-
return pages;
|
|
113
|
-
}
|
|
114
|
-
/**
|
|
115
|
-
* 获取上次检查点时间
|
|
116
|
-
*/
|
|
117
|
-
getLastCheckpointTime() {
|
|
118
|
-
return this.lastCheckpointTime;
|
|
119
|
-
}
|
|
120
|
-
/**
|
|
121
|
-
* 检查是否有检查点正在进行
|
|
122
|
-
*/
|
|
123
|
-
isCheckpointInProgress() {
|
|
124
|
-
return this.checkpointInProgress;
|
|
125
|
-
}
|
|
126
|
-
/**
|
|
127
|
-
* 获取 WAL 阈值
|
|
128
|
-
*/
|
|
129
|
-
getWalThreshold() {
|
|
130
|
-
return this.walThreshold;
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
exports.CheckpointManager = CheckpointManager;
|
|
134
|
-
/**
|
|
135
|
-
* 自动检查点调度器
|
|
136
|
-
* 根据配置自动触发检查点
|
|
137
|
-
*/
|
|
138
|
-
class AutoCheckpointScheduler {
|
|
139
|
-
/**
|
|
140
|
-
* 创建自动检查点调度器
|
|
141
|
-
* @param checkpointManager 检查点管理器
|
|
142
|
-
* @param interval 检查间隔(毫秒)
|
|
143
|
-
* @param getRecords 获取当前记录的函数
|
|
144
|
-
*/
|
|
145
|
-
constructor(checkpointManager, interval, getRecords) {
|
|
146
|
-
this.checkpointManager = checkpointManager;
|
|
147
|
-
this.interval = interval;
|
|
148
|
-
this.timer = null;
|
|
149
|
-
this.running = false;
|
|
150
|
-
this.getRecords = getRecords;
|
|
151
|
-
}
|
|
152
|
-
/**
|
|
153
|
-
* 启动调度器
|
|
154
|
-
*/
|
|
155
|
-
start() {
|
|
156
|
-
if (this.running) {
|
|
157
|
-
return;
|
|
158
|
-
}
|
|
159
|
-
this.running = true;
|
|
160
|
-
this.timer = setInterval(async () => {
|
|
161
|
-
try {
|
|
162
|
-
if (await this.checkpointManager.shouldCheckpoint()) {
|
|
163
|
-
await this.checkpointManager.execute(this.getRecords());
|
|
164
|
-
}
|
|
165
|
-
} catch {
|
|
166
|
-
// 静默处理错误,避免影响定时器
|
|
167
|
-
}
|
|
168
|
-
}, this.interval);
|
|
169
|
-
}
|
|
170
|
-
/**
|
|
171
|
-
* 停止调度器
|
|
172
|
-
*/
|
|
173
|
-
stop() {
|
|
174
|
-
if (this.timer) {
|
|
175
|
-
clearInterval(this.timer);
|
|
176
|
-
this.timer = null;
|
|
177
|
-
}
|
|
178
|
-
this.running = false;
|
|
179
|
-
}
|
|
180
|
-
/**
|
|
181
|
-
* 检查是否正在运行
|
|
182
|
-
*/
|
|
183
|
-
isRunning() {
|
|
184
|
-
return this.running;
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
exports.AutoCheckpointScheduler = AutoCheckpointScheduler;
|
|
188
|
-
/**
|
|
189
|
-
* 增量检查点管理器
|
|
190
|
-
* 只将脏页写入文件,减少 I/O
|
|
191
|
-
*/
|
|
192
|
-
class IncrementalCheckpointManager {
|
|
193
|
-
/**
|
|
194
|
-
* 创建增量检查点管理器
|
|
195
|
-
* @param lightFileManager Light 文件管理器
|
|
196
|
-
* @param walManager WAL 管理器
|
|
197
|
-
* @param pageManager 页面管理器
|
|
198
|
-
* @param walThreshold WAL 阈值
|
|
199
|
-
*/
|
|
200
|
-
constructor(lightFileManager, walManager, pageManager, walThreshold = constants_1.DEFAULT_WAL_THRESHOLD) {
|
|
201
|
-
this.lightFileManager = lightFileManager;
|
|
202
|
-
this.walManager = walManager;
|
|
203
|
-
this.pageManager = pageManager;
|
|
204
|
-
this.walThreshold = walThreshold;
|
|
205
|
-
}
|
|
206
|
-
/**
|
|
207
|
-
* 执行增量检查点
|
|
208
|
-
*/
|
|
209
|
-
async executeIncremental() {
|
|
210
|
-
const dirtyPages = this.pageManager.getDirtyPages();
|
|
211
|
-
if (dirtyPages.length === 0) {
|
|
212
|
-
return {
|
|
213
|
-
timestamp: Date.now(),
|
|
214
|
-
lsn: this.walManager.getCurrentLsn(),
|
|
215
|
-
pagesWritten: 0,
|
|
216
|
-
bytesWritten: 0,
|
|
217
|
-
};
|
|
218
|
-
}
|
|
219
|
-
const currentLsn = this.walManager.getCurrentLsn();
|
|
220
|
-
for (const page of dirtyPages) {
|
|
221
|
-
await this.lightFileManager.writePage(page);
|
|
222
|
-
}
|
|
223
|
-
await this.lightFileManager.sync();
|
|
224
|
-
const header = await this.lightFileManager.readHeader();
|
|
225
|
-
if (header) {
|
|
226
|
-
header.lastSnapshotLsn = currentLsn;
|
|
227
|
-
await this.lightFileManager.writeHeader(header);
|
|
228
|
-
}
|
|
229
|
-
this.pageManager.clearDirtyFlags();
|
|
230
|
-
const totalBytes = dirtyPages.length * this.pageManager.getPageSize();
|
|
231
|
-
return {
|
|
232
|
-
timestamp: Date.now(),
|
|
233
|
-
lsn: currentLsn,
|
|
234
|
-
pagesWritten: dirtyPages.length,
|
|
235
|
-
bytesWritten: totalBytes,
|
|
236
|
-
};
|
|
237
|
-
}
|
|
238
|
-
/**
|
|
239
|
-
* 检查是否需要增量检查点
|
|
240
|
-
*/
|
|
241
|
-
async shouldCheckpoint() {
|
|
242
|
-
const dirtyPages = this.pageManager.getDirtyPages();
|
|
243
|
-
if (dirtyPages.length > 100) {
|
|
244
|
-
return true;
|
|
245
|
-
}
|
|
246
|
-
const walSize = await this.walManager.getFileSize();
|
|
247
|
-
return walSize >= this.walThreshold;
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
exports.IncrementalCheckpointManager = IncrementalCheckpointManager;
|
|
251
|
-
//# sourceMappingURL=Checkpoint.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Checkpoint.js","sourceRoot":"","sources":["../../src/storage/Checkpoint.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,227 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* .light 文件格式实现
|
|
3
|
-
* 主数据文件,存储数据库的完整快照
|
|
4
|
-
*/
|
|
5
|
-
import { LightHeader, Page, Record, PageMap, RecordMap } from "../types";
|
|
6
|
-
/**
|
|
7
|
-
* Light 文件序列化器
|
|
8
|
-
* 负责将数据序列化为 .light 文件格式
|
|
9
|
-
*/
|
|
10
|
-
export declare class LightFileSerializer {
|
|
11
|
-
private readonly pageSize;
|
|
12
|
-
/**
|
|
13
|
-
* 创建序列化器
|
|
14
|
-
* @param pageSize 页面大小,默认 4KB
|
|
15
|
-
*/
|
|
16
|
-
constructor(pageSize?: number);
|
|
17
|
-
/**
|
|
18
|
-
* 序列化文件头部
|
|
19
|
-
* @param header 头部数据
|
|
20
|
-
*/
|
|
21
|
-
serializeHeader(header: LightHeader): Buffer;
|
|
22
|
-
/**
|
|
23
|
-
* 反序列化文件头部
|
|
24
|
-
* @param buffer 包含头部数据的 Buffer
|
|
25
|
-
*/
|
|
26
|
-
deserializeHeader(buffer: Buffer): LightHeader;
|
|
27
|
-
/**
|
|
28
|
-
* 序列化单条记录
|
|
29
|
-
* @param record 记录数据
|
|
30
|
-
*/
|
|
31
|
-
serializeRecord(record: Record): Buffer;
|
|
32
|
-
/**
|
|
33
|
-
* 反序列化单条记录
|
|
34
|
-
* @param buffer 包含记录数据的 Buffer
|
|
35
|
-
* @param startOffset 起始偏移量
|
|
36
|
-
*/
|
|
37
|
-
deserializeRecord(
|
|
38
|
-
buffer: Buffer,
|
|
39
|
-
startOffset?: number,
|
|
40
|
-
): {
|
|
41
|
-
record: Record;
|
|
42
|
-
bytesRead: number;
|
|
43
|
-
};
|
|
44
|
-
/**
|
|
45
|
-
* 序列化页面
|
|
46
|
-
* @param page 页面数据
|
|
47
|
-
*/
|
|
48
|
-
serializePage(page: Page): Buffer;
|
|
49
|
-
/**
|
|
50
|
-
* 反序列化页面
|
|
51
|
-
* @param buffer 包含页面数据的 Buffer
|
|
52
|
-
* @param pageId 页面ID
|
|
53
|
-
*/
|
|
54
|
-
deserializePage(buffer: Buffer, pageId: number): Page;
|
|
55
|
-
/**
|
|
56
|
-
* 序列化整个数据库快照
|
|
57
|
-
* @param pages 页面映射
|
|
58
|
-
* @param lastSnapshotLsn 上次快照的 LSN
|
|
59
|
-
*/
|
|
60
|
-
serializeSnapshot(pages: PageMap, lastSnapshotLsn: bigint): Buffer;
|
|
61
|
-
/**
|
|
62
|
-
* 获取页面大小
|
|
63
|
-
*/
|
|
64
|
-
getPageSize(): number;
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* Light 文件管理器
|
|
68
|
-
* 负责 .light 文件的读写操作
|
|
69
|
-
*/
|
|
70
|
-
export declare class LightFileManager {
|
|
71
|
-
private readonly basePath;
|
|
72
|
-
private readonly dbName;
|
|
73
|
-
private readonly serializer;
|
|
74
|
-
private handle;
|
|
75
|
-
/**
|
|
76
|
-
* 创建文件管理器
|
|
77
|
-
* @param basePath 数据库基础路径
|
|
78
|
-
* @param dbName 数据库名称
|
|
79
|
-
* @param pageSize 页面大小
|
|
80
|
-
*/
|
|
81
|
-
constructor(basePath: string, dbName: string, pageSize?: number);
|
|
82
|
-
/**
|
|
83
|
-
* 获取 .light 文件路径
|
|
84
|
-
*/
|
|
85
|
-
getFilePath(): string;
|
|
86
|
-
/**
|
|
87
|
-
* 获取临时文件路径
|
|
88
|
-
*/
|
|
89
|
-
private getTempFilePath;
|
|
90
|
-
/**
|
|
91
|
-
* 打开文件
|
|
92
|
-
*/
|
|
93
|
-
open(): Promise<void>;
|
|
94
|
-
/**
|
|
95
|
-
* 关闭文件
|
|
96
|
-
*/
|
|
97
|
-
close(): Promise<void>;
|
|
98
|
-
/**
|
|
99
|
-
* 读取文件头部
|
|
100
|
-
*/
|
|
101
|
-
readHeader(): Promise<LightHeader | null>;
|
|
102
|
-
/**
|
|
103
|
-
* 写入文件头部
|
|
104
|
-
* @param header 头部数据
|
|
105
|
-
*/
|
|
106
|
-
writeHeader(header: LightHeader): Promise<void>;
|
|
107
|
-
/**
|
|
108
|
-
* 读取指定页面
|
|
109
|
-
* @param pageId 页面ID
|
|
110
|
-
*/
|
|
111
|
-
readPage(pageId: number): Promise<Page | null>;
|
|
112
|
-
/**
|
|
113
|
-
* 写入指定页面
|
|
114
|
-
* @param page 页面数据
|
|
115
|
-
*/
|
|
116
|
-
writePage(page: Page): Promise<void>;
|
|
117
|
-
/**
|
|
118
|
-
* 加载所有页面
|
|
119
|
-
*/
|
|
120
|
-
loadAllPages(): Promise<PageMap>;
|
|
121
|
-
/**
|
|
122
|
-
* 加载所有记录到内存映射
|
|
123
|
-
*/
|
|
124
|
-
loadAllRecords(): Promise<RecordMap>;
|
|
125
|
-
/**
|
|
126
|
-
* 原子性写入完整快照
|
|
127
|
-
* 先写临时文件,再 rename 确保原子性
|
|
128
|
-
* @param pages 页面映射
|
|
129
|
-
* @param lastSnapshotLsn 上次快照的 LSN
|
|
130
|
-
*/
|
|
131
|
-
writeSnapshot(pages: PageMap, lastSnapshotLsn: bigint): Promise<void>;
|
|
132
|
-
/**
|
|
133
|
-
* 获取文件大小
|
|
134
|
-
*/
|
|
135
|
-
getFileSize(): Promise<number>;
|
|
136
|
-
/**
|
|
137
|
-
* 同步到磁盘
|
|
138
|
-
*/
|
|
139
|
-
sync(): Promise<void>;
|
|
140
|
-
/**
|
|
141
|
-
* 检查文件是否存在
|
|
142
|
-
*/
|
|
143
|
-
exists(): Promise<boolean>;
|
|
144
|
-
/**
|
|
145
|
-
* 获取页面大小
|
|
146
|
-
*/
|
|
147
|
-
getPageSize(): number;
|
|
148
|
-
}
|
|
149
|
-
/**
|
|
150
|
-
* 页面管理器
|
|
151
|
-
* 管理内存中的页面分配和回收
|
|
152
|
-
*/
|
|
153
|
-
export declare class PageManager {
|
|
154
|
-
private readonly pageSize;
|
|
155
|
-
private pages;
|
|
156
|
-
private nextPageId;
|
|
157
|
-
private dirtyPages;
|
|
158
|
-
/**
|
|
159
|
-
* 创建页面管理器
|
|
160
|
-
* @param pageSize 页面大小
|
|
161
|
-
*/
|
|
162
|
-
constructor(pageSize?: number);
|
|
163
|
-
/**
|
|
164
|
-
* 创建新页面
|
|
165
|
-
*/
|
|
166
|
-
createPage(): Page;
|
|
167
|
-
/**
|
|
168
|
-
* 获取页面
|
|
169
|
-
* @param pageId 页面ID
|
|
170
|
-
*/
|
|
171
|
-
getPage(pageId: number): Page | undefined;
|
|
172
|
-
/**
|
|
173
|
-
* 获取或创建页面
|
|
174
|
-
* @param pageId 页面ID
|
|
175
|
-
*/
|
|
176
|
-
getOrCreatePage(pageId: number): Page;
|
|
177
|
-
/**
|
|
178
|
-
* 标记页面为脏页
|
|
179
|
-
* @param pageId 页面ID
|
|
180
|
-
*/
|
|
181
|
-
markDirty(pageId: number): void;
|
|
182
|
-
/**
|
|
183
|
-
* 获取所有脏页
|
|
184
|
-
*/
|
|
185
|
-
getDirtyPages(): Page[];
|
|
186
|
-
/**
|
|
187
|
-
* 清除脏页标记
|
|
188
|
-
*/
|
|
189
|
-
clearDirtyFlags(): void;
|
|
190
|
-
/**
|
|
191
|
-
* 加载页面数据
|
|
192
|
-
* @param pages 页面映射
|
|
193
|
-
*/
|
|
194
|
-
loadPages(pages: PageMap): void;
|
|
195
|
-
/**
|
|
196
|
-
* 获取所有页面
|
|
197
|
-
*/
|
|
198
|
-
getAllPages(): PageMap;
|
|
199
|
-
/**
|
|
200
|
-
* 获取页面数量
|
|
201
|
-
*/
|
|
202
|
-
getPageCount(): number;
|
|
203
|
-
/**
|
|
204
|
-
* 计算记录在页面中的大小
|
|
205
|
-
* @param record 记录
|
|
206
|
-
*/
|
|
207
|
-
calculateRecordSize(record: Record): number;
|
|
208
|
-
/**
|
|
209
|
-
* 获取页面可用空间
|
|
210
|
-
* @param page 页面
|
|
211
|
-
*/
|
|
212
|
-
getAvailableSpace(page: Page): number;
|
|
213
|
-
/**
|
|
214
|
-
* 查找可以容纳记录的页面
|
|
215
|
-
* @param record 记录
|
|
216
|
-
*/
|
|
217
|
-
findPageForRecord(record: Record): Page | null;
|
|
218
|
-
/**
|
|
219
|
-
* 获取下一个页面ID
|
|
220
|
-
*/
|
|
221
|
-
getNextPageId(): number;
|
|
222
|
-
/**
|
|
223
|
-
* 获取页面大小
|
|
224
|
-
*/
|
|
225
|
-
getPageSize(): number;
|
|
226
|
-
}
|
|
227
|
-
//# sourceMappingURL=LightFile.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"LightFile.d.ts","sourceRoot":"","sources":["../../src/storage/LightFile.ts"],"names":[],"mappings":"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"}
|