@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,162 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* 性能优化模块
|
|
4
|
+
* 提供列式存储、二进制序列化优化、异步批量写入、读写锁和惰性求值查询
|
|
5
|
+
*
|
|
6
|
+
* @packageDocumentation
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.GeneratorUtils =
|
|
10
|
+
exports.lazyIterator =
|
|
11
|
+
exports.lazy =
|
|
12
|
+
exports.LazyQueryBuilder =
|
|
13
|
+
exports.LazyQueryIterator =
|
|
14
|
+
exports.ReentrantRWLock =
|
|
15
|
+
exports.RWLockManager =
|
|
16
|
+
exports.RWLock =
|
|
17
|
+
exports.WriteLockHandle =
|
|
18
|
+
exports.ReadLockHandle =
|
|
19
|
+
exports.BatchWriteManager =
|
|
20
|
+
exports.BatchWalWriter =
|
|
21
|
+
exports.BufferConcatenator =
|
|
22
|
+
exports.FastSerializer =
|
|
23
|
+
exports.OptimizedBufferReader =
|
|
24
|
+
exports.OptimizedBufferWriter =
|
|
25
|
+
exports.getGlobalBufferPool =
|
|
26
|
+
exports.BufferPool =
|
|
27
|
+
exports.ColumnarStorage =
|
|
28
|
+
exports.ColumnType =
|
|
29
|
+
void 0;
|
|
30
|
+
// 类型导出
|
|
31
|
+
var types_1 = require("./types");
|
|
32
|
+
Object.defineProperty(exports, "ColumnType", {
|
|
33
|
+
enumerable: true,
|
|
34
|
+
get: function () {
|
|
35
|
+
return types_1.ColumnType;
|
|
36
|
+
},
|
|
37
|
+
});
|
|
38
|
+
// 列式存储导出
|
|
39
|
+
var ColumnarStorage_1 = require("./ColumnarStorage");
|
|
40
|
+
Object.defineProperty(exports, "ColumnarStorage", {
|
|
41
|
+
enumerable: true,
|
|
42
|
+
get: function () {
|
|
43
|
+
return ColumnarStorage_1.ColumnarStorage;
|
|
44
|
+
},
|
|
45
|
+
});
|
|
46
|
+
// 二进制序列化优化导出
|
|
47
|
+
var OptimizedBuffer_1 = require("./OptimizedBuffer");
|
|
48
|
+
Object.defineProperty(exports, "BufferPool", {
|
|
49
|
+
enumerable: true,
|
|
50
|
+
get: function () {
|
|
51
|
+
return OptimizedBuffer_1.BufferPool;
|
|
52
|
+
},
|
|
53
|
+
});
|
|
54
|
+
Object.defineProperty(exports, "getGlobalBufferPool", {
|
|
55
|
+
enumerable: true,
|
|
56
|
+
get: function () {
|
|
57
|
+
return OptimizedBuffer_1.getGlobalBufferPool;
|
|
58
|
+
},
|
|
59
|
+
});
|
|
60
|
+
Object.defineProperty(exports, "OptimizedBufferWriter", {
|
|
61
|
+
enumerable: true,
|
|
62
|
+
get: function () {
|
|
63
|
+
return OptimizedBuffer_1.OptimizedBufferWriter;
|
|
64
|
+
},
|
|
65
|
+
});
|
|
66
|
+
Object.defineProperty(exports, "OptimizedBufferReader", {
|
|
67
|
+
enumerable: true,
|
|
68
|
+
get: function () {
|
|
69
|
+
return OptimizedBuffer_1.OptimizedBufferReader;
|
|
70
|
+
},
|
|
71
|
+
});
|
|
72
|
+
Object.defineProperty(exports, "FastSerializer", {
|
|
73
|
+
enumerable: true,
|
|
74
|
+
get: function () {
|
|
75
|
+
return OptimizedBuffer_1.FastSerializer;
|
|
76
|
+
},
|
|
77
|
+
});
|
|
78
|
+
Object.defineProperty(exports, "BufferConcatenator", {
|
|
79
|
+
enumerable: true,
|
|
80
|
+
get: function () {
|
|
81
|
+
return OptimizedBuffer_1.BufferConcatenator;
|
|
82
|
+
},
|
|
83
|
+
});
|
|
84
|
+
// 异步批量写入导出
|
|
85
|
+
var BatchWalWriter_1 = require("./BatchWalWriter");
|
|
86
|
+
Object.defineProperty(exports, "BatchWalWriter", {
|
|
87
|
+
enumerable: true,
|
|
88
|
+
get: function () {
|
|
89
|
+
return BatchWalWriter_1.BatchWalWriter;
|
|
90
|
+
},
|
|
91
|
+
});
|
|
92
|
+
Object.defineProperty(exports, "BatchWriteManager", {
|
|
93
|
+
enumerable: true,
|
|
94
|
+
get: function () {
|
|
95
|
+
return BatchWalWriter_1.BatchWriteManager;
|
|
96
|
+
},
|
|
97
|
+
});
|
|
98
|
+
// 读写锁导出
|
|
99
|
+
var RWLock_1 = require("./RWLock");
|
|
100
|
+
Object.defineProperty(exports, "ReadLockHandle", {
|
|
101
|
+
enumerable: true,
|
|
102
|
+
get: function () {
|
|
103
|
+
return RWLock_1.ReadLockHandle;
|
|
104
|
+
},
|
|
105
|
+
});
|
|
106
|
+
Object.defineProperty(exports, "WriteLockHandle", {
|
|
107
|
+
enumerable: true,
|
|
108
|
+
get: function () {
|
|
109
|
+
return RWLock_1.WriteLockHandle;
|
|
110
|
+
},
|
|
111
|
+
});
|
|
112
|
+
Object.defineProperty(exports, "RWLock", {
|
|
113
|
+
enumerable: true,
|
|
114
|
+
get: function () {
|
|
115
|
+
return RWLock_1.RWLock;
|
|
116
|
+
},
|
|
117
|
+
});
|
|
118
|
+
Object.defineProperty(exports, "RWLockManager", {
|
|
119
|
+
enumerable: true,
|
|
120
|
+
get: function () {
|
|
121
|
+
return RWLock_1.RWLockManager;
|
|
122
|
+
},
|
|
123
|
+
});
|
|
124
|
+
Object.defineProperty(exports, "ReentrantRWLock", {
|
|
125
|
+
enumerable: true,
|
|
126
|
+
get: function () {
|
|
127
|
+
return RWLock_1.ReentrantRWLock;
|
|
128
|
+
},
|
|
129
|
+
});
|
|
130
|
+
// 惰性求值查询导出
|
|
131
|
+
var LazyQuery_1 = require("./LazyQuery");
|
|
132
|
+
Object.defineProperty(exports, "LazyQueryIterator", {
|
|
133
|
+
enumerable: true,
|
|
134
|
+
get: function () {
|
|
135
|
+
return LazyQuery_1.LazyQueryIterator;
|
|
136
|
+
},
|
|
137
|
+
});
|
|
138
|
+
Object.defineProperty(exports, "LazyQueryBuilder", {
|
|
139
|
+
enumerable: true,
|
|
140
|
+
get: function () {
|
|
141
|
+
return LazyQuery_1.LazyQueryBuilder;
|
|
142
|
+
},
|
|
143
|
+
});
|
|
144
|
+
Object.defineProperty(exports, "lazy", {
|
|
145
|
+
enumerable: true,
|
|
146
|
+
get: function () {
|
|
147
|
+
return LazyQuery_1.lazy;
|
|
148
|
+
},
|
|
149
|
+
});
|
|
150
|
+
Object.defineProperty(exports, "lazyIterator", {
|
|
151
|
+
enumerable: true,
|
|
152
|
+
get: function () {
|
|
153
|
+
return LazyQuery_1.lazyIterator;
|
|
154
|
+
},
|
|
155
|
+
});
|
|
156
|
+
Object.defineProperty(exports, "GeneratorUtils", {
|
|
157
|
+
enumerable: true,
|
|
158
|
+
get: function () {
|
|
159
|
+
return LazyQuery_1.GeneratorUtils;
|
|
160
|
+
},
|
|
161
|
+
});
|
|
162
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/performance/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,OAAO;AACP,iCAqBiB;AApBb,mGAAA,UAAU,OAAA;AAsBd,SAAS;AACT,qDAAoD;AAA3C,kHAAA,eAAe,OAAA;AAExB,aAAa;AACb,qDAO2B;AANvB,6GAAA,UAAU,OAAA;AACV,sHAAA,mBAAmB,OAAA;AACnB,wHAAA,qBAAqB,OAAA;AACrB,wHAAA,qBAAqB,OAAA;AACrB,iHAAA,cAAc,OAAA;AACd,qHAAA,kBAAkB,OAAA;AAGtB,WAAW;AACX,mDAI0B;AAFtB,gHAAA,cAAc,OAAA;AACd,mHAAA,iBAAiB,OAAA;AAGrB,QAAQ;AACR,mCAMkB;AALd,wGAAA,cAAc,OAAA;AACd,yGAAA,eAAe,OAAA;AACf,gGAAA,MAAM,OAAA;AACN,uGAAA,aAAa,OAAA;AACb,yGAAA,eAAe,OAAA;AAGnB,WAAW;AACX,yCAMqB;AALjB,8GAAA,iBAAiB,OAAA;AACjB,6GAAA,gBAAgB,OAAA;AAChB,iGAAA,IAAI,OAAA;AACJ,yGAAA,YAAY,OAAA;AACZ,2GAAA,cAAc,OAAA"}
|
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 性能优化模块类型定义
|
|
3
|
+
* 包含列式存储、批量写入、读写锁等组件的类型定义
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* 列类型枚举
|
|
7
|
+
*/
|
|
8
|
+
export declare enum ColumnType {
|
|
9
|
+
Int8 = "int8",
|
|
10
|
+
Int16 = "int16",
|
|
11
|
+
Int32 = "int32",
|
|
12
|
+
Int64 = "int64",
|
|
13
|
+
UInt8 = "uint8",
|
|
14
|
+
UInt16 = "uint16",
|
|
15
|
+
UInt32 = "uint32",
|
|
16
|
+
UInt64 = "uint64",
|
|
17
|
+
Float32 = "float32",
|
|
18
|
+
Float64 = "float64",
|
|
19
|
+
String = "string",
|
|
20
|
+
Boolean = "boolean",
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* 列定义接口
|
|
24
|
+
*/
|
|
25
|
+
export interface ColumnDefinition {
|
|
26
|
+
/** 列名称 */
|
|
27
|
+
name: string;
|
|
28
|
+
/** 列类型 */
|
|
29
|
+
type: ColumnType;
|
|
30
|
+
/** 是否可为空 */
|
|
31
|
+
nullable?: boolean;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* 列式存储配置
|
|
35
|
+
*/
|
|
36
|
+
export interface ColumnarStorageOptions {
|
|
37
|
+
/** 列定义列表 */
|
|
38
|
+
columns: ColumnDefinition[];
|
|
39
|
+
/** 初始容量 */
|
|
40
|
+
initialCapacity?: number;
|
|
41
|
+
/** 是否自动扩容 */
|
|
42
|
+
autoGrow?: boolean;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* 列式存储统计信息
|
|
46
|
+
*/
|
|
47
|
+
export interface ColumnarStorageStats {
|
|
48
|
+
/** 列数量 */
|
|
49
|
+
columnCount: number;
|
|
50
|
+
/** 行数量 */
|
|
51
|
+
rowCount: number;
|
|
52
|
+
/** 内存使用量(字节) */
|
|
53
|
+
memoryUsage: number;
|
|
54
|
+
/** 列统计信息 */
|
|
55
|
+
columns: ColumnStats[];
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* 列统计信息
|
|
59
|
+
*/
|
|
60
|
+
export interface ColumnStats {
|
|
61
|
+
/** 列名称 */
|
|
62
|
+
name: string;
|
|
63
|
+
/** 列类型 */
|
|
64
|
+
type: ColumnType;
|
|
65
|
+
/** 非空值数量 */
|
|
66
|
+
nonNullCount: number;
|
|
67
|
+
/** 内存使用量(字节) */
|
|
68
|
+
memoryUsage: number;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* 批量写入配置
|
|
72
|
+
*/
|
|
73
|
+
export interface BatchWriteOptions {
|
|
74
|
+
/** 批量大小阈值(记录数) */
|
|
75
|
+
batchSize?: number;
|
|
76
|
+
/** 刷新间隔(毫秒) */
|
|
77
|
+
flushIntervalMs?: number;
|
|
78
|
+
/** fsync 策略 */
|
|
79
|
+
fsyncStrategy?: FsyncStrategyType;
|
|
80
|
+
/** fsync 批量大小 */
|
|
81
|
+
fsyncBatchSize?: number;
|
|
82
|
+
/** fsync 间隔(毫秒) */
|
|
83
|
+
fsyncIntervalMs?: number;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* fsync 策略类型
|
|
87
|
+
*/
|
|
88
|
+
export type FsyncStrategyType = "always" | "batch" | "interval" | "manual";
|
|
89
|
+
/**
|
|
90
|
+
* 批量写入统计信息
|
|
91
|
+
*/
|
|
92
|
+
export interface BatchWriteStats {
|
|
93
|
+
/** 待写入记录数 */
|
|
94
|
+
pendingCount: number;
|
|
95
|
+
/** 已写入记录数 */
|
|
96
|
+
writtenCount: number;
|
|
97
|
+
/** 上次刷新时间 */
|
|
98
|
+
lastFlushTime: number;
|
|
99
|
+
/** 上次 fsync 时间 */
|
|
100
|
+
lastFsyncTime: number;
|
|
101
|
+
/** 队列容量 */
|
|
102
|
+
queueCapacity: number;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* 批量写入结果
|
|
106
|
+
*/
|
|
107
|
+
export interface BatchFlushResult {
|
|
108
|
+
/** 成功写入的记录数 */
|
|
109
|
+
recordsWritten: number;
|
|
110
|
+
/** 写入字节数 */
|
|
111
|
+
bytesWritten: number;
|
|
112
|
+
/** 刷新耗时(毫秒) */
|
|
113
|
+
durationMs: number;
|
|
114
|
+
/** 是否执行了 fsync */
|
|
115
|
+
fsynced: boolean;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* 读写锁配置
|
|
119
|
+
*/
|
|
120
|
+
export interface RWLockOptions {
|
|
121
|
+
/** 最大等待时间(毫秒),0 表示无限等待 */
|
|
122
|
+
timeout?: number;
|
|
123
|
+
/** 是否启用公平模式 */
|
|
124
|
+
fair?: boolean;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* 读写锁统计信息
|
|
128
|
+
*/
|
|
129
|
+
export interface RWLockStats {
|
|
130
|
+
/** 当前读锁持有者数量 */
|
|
131
|
+
readLockCount: number;
|
|
132
|
+
/** 当前写锁持有者数量(0 或 1) */
|
|
133
|
+
writeLockCount: number;
|
|
134
|
+
/** 等待读锁的数量 */
|
|
135
|
+
pendingReadCount: number;
|
|
136
|
+
/** 等待写锁的数量 */
|
|
137
|
+
pendingWriteCount: number;
|
|
138
|
+
/** 总读锁获取次数 */
|
|
139
|
+
totalReadAcquires: number;
|
|
140
|
+
/** 总写锁获取次数 */
|
|
141
|
+
totalWriteAcquires: number;
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* 惰性查询配置
|
|
145
|
+
*/
|
|
146
|
+
export interface LazyQueryOptions {
|
|
147
|
+
/** 是否启用索引优化 */
|
|
148
|
+
useIndex?: boolean;
|
|
149
|
+
/** 预取大小 */
|
|
150
|
+
prefetchSize?: number;
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* 惰性查询统计信息
|
|
154
|
+
*/
|
|
155
|
+
export interface LazyQueryStats {
|
|
156
|
+
/** 已迭代元素数量 */
|
|
157
|
+
iteratedCount: number;
|
|
158
|
+
/** 是否已完成 */
|
|
159
|
+
completed: boolean;
|
|
160
|
+
/** 是否使用了索引 */
|
|
161
|
+
usedIndex: boolean;
|
|
162
|
+
/** 索引名称 */
|
|
163
|
+
indexName?: string;
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* 聚合操作类型
|
|
167
|
+
*/
|
|
168
|
+
export type AggregationType = "sum" | "avg" | "min" | "max" | "count" | "countDistinct";
|
|
169
|
+
/**
|
|
170
|
+
* 聚合结果
|
|
171
|
+
*/
|
|
172
|
+
export interface AggregationResult {
|
|
173
|
+
/** 聚合类型 */
|
|
174
|
+
type: AggregationType;
|
|
175
|
+
/** 字段名称 */
|
|
176
|
+
field: string;
|
|
177
|
+
/** 聚合值 */
|
|
178
|
+
value: number | bigint | null;
|
|
179
|
+
/** 计算的记录数 */
|
|
180
|
+
recordCount: number;
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* 范围查询条件
|
|
184
|
+
*/
|
|
185
|
+
export interface RangeCondition<T = unknown> {
|
|
186
|
+
/** 大于 */
|
|
187
|
+
gt?: T;
|
|
188
|
+
/** 大于等于 */
|
|
189
|
+
gte?: T;
|
|
190
|
+
/** 小于 */
|
|
191
|
+
lt?: T;
|
|
192
|
+
/** 小于等于 */
|
|
193
|
+
lte?: T;
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Buffer 池配置
|
|
197
|
+
*/
|
|
198
|
+
export interface BufferPoolOptions {
|
|
199
|
+
/** 池大小 */
|
|
200
|
+
poolSize?: number;
|
|
201
|
+
/** 块大小 */
|
|
202
|
+
chunkSize?: number;
|
|
203
|
+
/** 是否启用预分配 */
|
|
204
|
+
preallocate?: boolean;
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Buffer 池统计信息
|
|
208
|
+
*/
|
|
209
|
+
export interface BufferPoolStats {
|
|
210
|
+
/** 总块数 */
|
|
211
|
+
totalChunks: number;
|
|
212
|
+
/** 可用块数 */
|
|
213
|
+
availableChunks: number;
|
|
214
|
+
/** 已使用块数 */
|
|
215
|
+
usedChunks: number;
|
|
216
|
+
/** 总内存(字节) */
|
|
217
|
+
totalMemory: number;
|
|
218
|
+
/** 使用内存(字节) */
|
|
219
|
+
usedMemory: number;
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* 性能优化模块配置
|
|
223
|
+
*/
|
|
224
|
+
export interface PerformanceOptions {
|
|
225
|
+
/** 列式存储配置 */
|
|
226
|
+
columnarStorage?: ColumnarStorageOptions;
|
|
227
|
+
/** 批量写入配置 */
|
|
228
|
+
batchWrite?: BatchWriteOptions;
|
|
229
|
+
/** 读写锁配置 */
|
|
230
|
+
rwLock?: RWLockOptions;
|
|
231
|
+
/** Buffer 池配置 */
|
|
232
|
+
bufferPool?: BufferPoolOptions;
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* 性能优化统计信息
|
|
236
|
+
*/
|
|
237
|
+
export interface PerformanceStats {
|
|
238
|
+
/** 列式存储统计 */
|
|
239
|
+
columnarStorage?: ColumnarStorageStats;
|
|
240
|
+
/** 批量写入统计 */
|
|
241
|
+
batchWrite?: BatchWriteStats;
|
|
242
|
+
/** 读写锁统计 */
|
|
243
|
+
rwLock?: RWLockStats;
|
|
244
|
+
/** Buffer 池统计 */
|
|
245
|
+
bufferPool?: BufferPoolStats;
|
|
246
|
+
}
|
|
247
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/performance/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* 性能优化模块类型定义
|
|
4
|
+
* 包含列式存储、批量写入、读写锁等组件的类型定义
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.ColumnType = void 0;
|
|
8
|
+
/**
|
|
9
|
+
* 列类型枚举
|
|
10
|
+
*/
|
|
11
|
+
var ColumnType;
|
|
12
|
+
(function (ColumnType) {
|
|
13
|
+
ColumnType["Int8"] = "int8";
|
|
14
|
+
ColumnType["Int16"] = "int16";
|
|
15
|
+
ColumnType["Int32"] = "int32";
|
|
16
|
+
ColumnType["Int64"] = "int64";
|
|
17
|
+
ColumnType["UInt8"] = "uint8";
|
|
18
|
+
ColumnType["UInt16"] = "uint16";
|
|
19
|
+
ColumnType["UInt32"] = "uint32";
|
|
20
|
+
ColumnType["UInt64"] = "uint64";
|
|
21
|
+
ColumnType["Float32"] = "float32";
|
|
22
|
+
ColumnType["Float64"] = "float64";
|
|
23
|
+
ColumnType["String"] = "string";
|
|
24
|
+
ColumnType["Boolean"] = "boolean";
|
|
25
|
+
})(ColumnType || (exports.ColumnType = ColumnType = {}));
|
|
26
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/performance/types.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH;;GAEG;AACH,IAAY,UAaX;AAbD,WAAY,UAAU;IAClB,2BAAa,CAAA;IACb,6BAAe,CAAA;IACf,6BAAe,CAAA;IACf,6BAAe,CAAA;IACf,6BAAe,CAAA;IACf,+BAAiB,CAAA;IACjB,+BAAiB,CAAA;IACjB,+BAAiB,CAAA;IACjB,iCAAmB,CAAA;IACnB,iCAAmB,CAAA;IACnB,+BAAiB,CAAA;IACjB,iCAAmB,CAAA;AACvB,CAAC,EAbW,UAAU,0BAAV,UAAU,QAarB"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 检查点(Checkpoint)机制实现
|
|
3
|
+
* 将内存中的完整数据原子性写入新的 .light 文件
|
|
4
|
+
*/
|
|
5
|
+
import { CheckpointResult, RecordMap } from "../types";
|
|
6
|
+
import { LightFileManager, PageManager } from "./LightFile";
|
|
7
|
+
import { WalManager } from "./WALFile";
|
|
8
|
+
import { WalIndexManager } from "./SHMFile";
|
|
9
|
+
/**
|
|
10
|
+
* 检查点配置选项
|
|
11
|
+
*/
|
|
12
|
+
export interface CheckpointOptions {
|
|
13
|
+
/** 是否强制执行检查点(忽略阈值检查) */
|
|
14
|
+
force?: boolean;
|
|
15
|
+
/** 是否同步等待检查点完成 */
|
|
16
|
+
sync?: boolean;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* 检查点管理器
|
|
20
|
+
* 负责管理检查点的创建和协调
|
|
21
|
+
*/
|
|
22
|
+
export declare class CheckpointManager {
|
|
23
|
+
private readonly lightFileManager;
|
|
24
|
+
private readonly walManager;
|
|
25
|
+
private readonly walIndexManager;
|
|
26
|
+
private readonly pageManager;
|
|
27
|
+
private readonly walThreshold;
|
|
28
|
+
private lastCheckpointTime;
|
|
29
|
+
private checkpointInProgress;
|
|
30
|
+
/**
|
|
31
|
+
* 创建检查点管理器
|
|
32
|
+
* @param lightFileManager Light 文件管理器
|
|
33
|
+
* @param walManager WAL 管理器
|
|
34
|
+
* @param walIndexManager WAL 索引管理器
|
|
35
|
+
* @param pageManager 页面管理器
|
|
36
|
+
* @param walThreshold WAL 文件大小阈值
|
|
37
|
+
*/
|
|
38
|
+
constructor(
|
|
39
|
+
lightFileManager: LightFileManager,
|
|
40
|
+
walManager: WalManager,
|
|
41
|
+
walIndexManager: WalIndexManager,
|
|
42
|
+
pageManager: PageManager,
|
|
43
|
+
walThreshold?: number,
|
|
44
|
+
);
|
|
45
|
+
/**
|
|
46
|
+
* 检查是否需要执行检查点
|
|
47
|
+
*/
|
|
48
|
+
shouldCheckpoint(): Promise<boolean>;
|
|
49
|
+
/**
|
|
50
|
+
* 执行检查点
|
|
51
|
+
* @param records 当前内存中的所有记录
|
|
52
|
+
*/
|
|
53
|
+
execute(records: RecordMap): Promise<CheckpointResult>;
|
|
54
|
+
/**
|
|
55
|
+
* 将记录转换为页面
|
|
56
|
+
* @param records 记录映射
|
|
57
|
+
*/
|
|
58
|
+
private buildPages;
|
|
59
|
+
/**
|
|
60
|
+
* 获取上次检查点时间
|
|
61
|
+
*/
|
|
62
|
+
getLastCheckpointTime(): number | null;
|
|
63
|
+
/**
|
|
64
|
+
* 检查是否有检查点正在进行
|
|
65
|
+
*/
|
|
66
|
+
isCheckpointInProgress(): boolean;
|
|
67
|
+
/**
|
|
68
|
+
* 获取 WAL 阈值
|
|
69
|
+
*/
|
|
70
|
+
getWalThreshold(): number;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* 自动检查点调度器
|
|
74
|
+
* 根据配置自动触发检查点
|
|
75
|
+
*/
|
|
76
|
+
export declare class AutoCheckpointScheduler {
|
|
77
|
+
private readonly checkpointManager;
|
|
78
|
+
private readonly interval;
|
|
79
|
+
private timer;
|
|
80
|
+
private running;
|
|
81
|
+
private getRecords;
|
|
82
|
+
/**
|
|
83
|
+
* 创建自动检查点调度器
|
|
84
|
+
* @param checkpointManager 检查点管理器
|
|
85
|
+
* @param interval 检查间隔(毫秒)
|
|
86
|
+
* @param getRecords 获取当前记录的函数
|
|
87
|
+
*/
|
|
88
|
+
constructor(checkpointManager: CheckpointManager, interval: number, getRecords: () => RecordMap);
|
|
89
|
+
/**
|
|
90
|
+
* 启动调度器
|
|
91
|
+
*/
|
|
92
|
+
start(): void;
|
|
93
|
+
/**
|
|
94
|
+
* 停止调度器
|
|
95
|
+
*/
|
|
96
|
+
stop(): void;
|
|
97
|
+
/**
|
|
98
|
+
* 检查是否正在运行
|
|
99
|
+
*/
|
|
100
|
+
isRunning(): boolean;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* 增量检查点管理器
|
|
104
|
+
* 只将脏页写入文件,减少 I/O
|
|
105
|
+
*/
|
|
106
|
+
export declare class IncrementalCheckpointManager {
|
|
107
|
+
private readonly lightFileManager;
|
|
108
|
+
private readonly walManager;
|
|
109
|
+
private readonly pageManager;
|
|
110
|
+
private readonly walThreshold;
|
|
111
|
+
/**
|
|
112
|
+
* 创建增量检查点管理器
|
|
113
|
+
* @param lightFileManager Light 文件管理器
|
|
114
|
+
* @param walManager WAL 管理器
|
|
115
|
+
* @param pageManager 页面管理器
|
|
116
|
+
* @param walThreshold WAL 阈值
|
|
117
|
+
*/
|
|
118
|
+
constructor(lightFileManager: LightFileManager, walManager: WalManager, pageManager: PageManager, walThreshold?: number);
|
|
119
|
+
/**
|
|
120
|
+
* 执行增量检查点
|
|
121
|
+
*/
|
|
122
|
+
executeIncremental(): Promise<CheckpointResult>;
|
|
123
|
+
/**
|
|
124
|
+
* 检查是否需要增量检查点
|
|
125
|
+
*/
|
|
126
|
+
shouldCheckpoint(): Promise<boolean>;
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=Checkpoint.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Checkpoint.d.ts","sourceRoot":"","sources":["../../src/storage/Checkpoint.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAW,MAAM,UAAU,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAG5C;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAC9B,wBAAwB;IACxB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,kBAAkB;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;;GAGG;AACH,qBAAa,iBAAiB;IAC1B,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAmB;IACpD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IACxC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkB;IAClD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,kBAAkB,CAAgB;IAC1C,OAAO,CAAC,oBAAoB,CAAU;IAEtC;;;;;;;OAOG;gBAEC,gBAAgB,EAAE,gBAAgB,EAClC,UAAU,EAAE,UAAU,EACtB,eAAe,EAAE,eAAe,EAChC,WAAW,EAAE,WAAW,EACxB,YAAY,GAAE,MAA8B;IAWhD;;OAEG;IACU,gBAAgB,IAAI,OAAO,CAAC,OAAO,CAAC;IASjD;;;OAGG;IACU,OAAO,CAAC,OAAO,EAAE,SAAS,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA2CnE;;;OAGG;IACH,OAAO,CAAC,UAAU;IAyClB;;OAEG;IACI,qBAAqB,IAAI,MAAM,GAAG,IAAI;IAI7C;;OAEG;IACI,sBAAsB,IAAI,OAAO;IAIxC;;OAEG;IACI,eAAe,IAAI,MAAM;CAGnC;AAED;;;GAGG;AACH,qBAAa,uBAAuB;IAChC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAoB;IACtD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,KAAK,CAAwB;IACrC,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,UAAU,CAAkB;IAEpC;;;;;OAKG;gBACS,iBAAiB,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,SAAS;IAQ/F;;OAEG;IACI,KAAK,IAAI,IAAI;IAiBpB;;OAEG;IACI,IAAI,IAAI,IAAI;IAQnB;;OAEG;IACI,SAAS,IAAI,OAAO;CAG9B;AAED;;;GAGG;AACH,qBAAa,4BAA4B;IACrC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAmB;IACpD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IACxC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IAEtC;;;;;;OAMG;gBAEC,gBAAgB,EAAE,gBAAgB,EAClC,UAAU,EAAE,UAAU,EACtB,WAAW,EAAE,WAAW,EACxB,YAAY,GAAE,MAA8B;IAQhD;;OAEG;IACU,kBAAkB,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAsC5D;;OAEG;IACU,gBAAgB,IAAI,OAAO,CAAC,OAAO,CAAC;CASpD"}
|