@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,570 @@
1
+ "use strict";
2
+ /**
3
+ * 读写锁实现
4
+ * 允许多个读查询并发,写操作独占
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.ReentrantRWLock = exports.RWLockManager = exports.RWLock = exports.WriteLockHandle = exports.ReadLockHandle = void 0;
8
+ /**
9
+ * 读锁句柄
10
+ * 用于自动释放锁
11
+ */
12
+ class ReadLockHandle {
13
+ constructor(releaseFn) {
14
+ this.released = false;
15
+ this.releaseFn = releaseFn;
16
+ }
17
+ /**
18
+ * 释放读锁
19
+ */
20
+ release() {
21
+ if (!this.released) {
22
+ this.released = true;
23
+ this.releaseFn();
24
+ }
25
+ }
26
+ /**
27
+ * 检查是否已释放
28
+ */
29
+ isReleased() {
30
+ return this.released;
31
+ }
32
+ }
33
+ exports.ReadLockHandle = ReadLockHandle;
34
+ /**
35
+ * 写锁句柄
36
+ * 用于自动释放锁
37
+ */
38
+ class WriteLockHandle {
39
+ constructor(releaseFn) {
40
+ this.released = false;
41
+ this.releaseFn = releaseFn;
42
+ }
43
+ /**
44
+ * 释放写锁
45
+ */
46
+ release() {
47
+ if (!this.released) {
48
+ this.released = true;
49
+ this.releaseFn();
50
+ }
51
+ }
52
+ /**
53
+ * 检查是否已释放
54
+ */
55
+ isReleased() {
56
+ return this.released;
57
+ }
58
+ }
59
+ exports.WriteLockHandle = WriteLockHandle;
60
+ /**
61
+ * 读写锁
62
+ * 支持多读单写,可选公平模式
63
+ */
64
+ class RWLock {
65
+ /**
66
+ * 创建读写锁
67
+ * @param options 配置选项
68
+ */
69
+ constructor(options = {}) {
70
+ this.readers = 0;
71
+ this.writer = false;
72
+ this.writeWaiters = [];
73
+ this.readWaiters = [];
74
+ this.timeout = options.timeout ?? 0;
75
+ this.fair = options.fair ?? false;
76
+ this.totalReadAcquires = 0;
77
+ this.totalWriteAcquires = 0;
78
+ }
79
+ /**
80
+ * 获取读锁
81
+ * @returns 读锁句柄
82
+ */
83
+ async acquireRead() {
84
+ if (this.canAcquireRead()) {
85
+ this.readers++;
86
+ this.totalReadAcquires++;
87
+ return new ReadLockHandle(() => this.releaseRead());
88
+ }
89
+ return new Promise((resolve, reject) => {
90
+ const waiter = {
91
+ resolve: () => {
92
+ this.readers++;
93
+ this.totalReadAcquires++;
94
+ resolve(new ReadLockHandle(() => this.releaseRead()));
95
+ },
96
+ reject,
97
+ type: "read",
98
+ timestamp: Date.now(),
99
+ };
100
+ this.readWaiters.push(waiter);
101
+ if (this.timeout > 0) {
102
+ setTimeout(() => {
103
+ const index = this.readWaiters.indexOf(waiter);
104
+ if (index !== -1) {
105
+ this.readWaiters.splice(index, 1);
106
+ reject(new Error(`Read lock acquisition timeout after ${this.timeout}ms`));
107
+ }
108
+ }, this.timeout);
109
+ }
110
+ });
111
+ }
112
+ /**
113
+ * 尝试获取读锁(非阻塞)
114
+ * @returns 读锁句柄或 null
115
+ */
116
+ tryAcquireRead() {
117
+ if (this.canAcquireRead()) {
118
+ this.readers++;
119
+ this.totalReadAcquires++;
120
+ return new ReadLockHandle(() => this.releaseRead());
121
+ }
122
+ return null;
123
+ }
124
+ /**
125
+ * 检查是否可以获取读锁
126
+ */
127
+ canAcquireRead() {
128
+ if (this.writer) {
129
+ return false;
130
+ }
131
+ if (this.fair && this.writeWaiters.length > 0) {
132
+ return false;
133
+ }
134
+ return true;
135
+ }
136
+ /**
137
+ * 获取写锁
138
+ * @returns 写锁句柄
139
+ */
140
+ async acquireWrite() {
141
+ if (this.canAcquireWrite()) {
142
+ this.writer = true;
143
+ this.totalWriteAcquires++;
144
+ return new WriteLockHandle(() => this.releaseWrite());
145
+ }
146
+ return new Promise((resolve, reject) => {
147
+ const waiter = {
148
+ resolve: () => {
149
+ this.writer = true;
150
+ this.totalWriteAcquires++;
151
+ resolve(new WriteLockHandle(() => this.releaseWrite()));
152
+ },
153
+ reject,
154
+ type: "write",
155
+ timestamp: Date.now(),
156
+ };
157
+ this.writeWaiters.push(waiter);
158
+ if (this.timeout > 0) {
159
+ setTimeout(() => {
160
+ const index = this.writeWaiters.indexOf(waiter);
161
+ if (index !== -1) {
162
+ this.writeWaiters.splice(index, 1);
163
+ reject(new Error(`Write lock acquisition timeout after ${this.timeout}ms`));
164
+ }
165
+ }, this.timeout);
166
+ }
167
+ });
168
+ }
169
+ /**
170
+ * 尝试获取写锁(非阻塞)
171
+ * @returns 写锁句柄或 null
172
+ */
173
+ tryAcquireWrite() {
174
+ if (this.canAcquireWrite()) {
175
+ this.writer = true;
176
+ this.totalWriteAcquires++;
177
+ return new WriteLockHandle(() => this.releaseWrite());
178
+ }
179
+ return null;
180
+ }
181
+ /**
182
+ * 检查是否可以获取写锁
183
+ */
184
+ canAcquireWrite() {
185
+ if (this.writer || this.readers > 0) {
186
+ return false;
187
+ }
188
+ return true;
189
+ }
190
+ /**
191
+ * 释放读锁
192
+ */
193
+ releaseRead() {
194
+ if (this.readers > 0) {
195
+ this.readers--;
196
+ }
197
+ this.wakeWaiters();
198
+ }
199
+ /**
200
+ * 释放写锁
201
+ */
202
+ releaseWrite() {
203
+ this.writer = false;
204
+ this.wakeWaiters();
205
+ }
206
+ /**
207
+ * 唤醒等待者
208
+ */
209
+ wakeWaiters() {
210
+ if (this.fair) {
211
+ if (!this.writer && this.writeWaiters.length > 0 && this.readers === 0) {
212
+ const waiter = this.writeWaiters.shift();
213
+ if (waiter) {
214
+ waiter.resolve();
215
+ return;
216
+ }
217
+ }
218
+ if (!this.writer && this.readWaiters.length > 0 && this.writeWaiters.length === 0) {
219
+ while (this.readWaiters.length > 0) {
220
+ const waiter = this.readWaiters.shift();
221
+ if (waiter) {
222
+ waiter.resolve();
223
+ }
224
+ }
225
+ }
226
+ } else {
227
+ if (!this.writer && this.writeWaiters.length > 0 && this.readers === 0) {
228
+ const waiter = this.writeWaiters.shift();
229
+ if (waiter) {
230
+ waiter.resolve();
231
+ return;
232
+ }
233
+ }
234
+ if (!this.writer && this.readWaiters.length > 0) {
235
+ while (this.readWaiters.length > 0) {
236
+ const waiter = this.readWaiters.shift();
237
+ if (waiter) {
238
+ waiter.resolve();
239
+ }
240
+ }
241
+ }
242
+ }
243
+ }
244
+ /**
245
+ * 使用读锁执行函数
246
+ * @param fn 要执行的函数
247
+ * @returns 函数返回值
248
+ */
249
+ async withRead(fn) {
250
+ const handle = await this.acquireRead();
251
+ try {
252
+ return await fn();
253
+ } finally {
254
+ handle.release();
255
+ }
256
+ }
257
+ /**
258
+ * 使用写锁执行函数
259
+ * @param fn 要执行的函数
260
+ * @returns 函数返回值
261
+ */
262
+ async withWrite(fn) {
263
+ const handle = await this.acquireWrite();
264
+ try {
265
+ return await fn();
266
+ } finally {
267
+ handle.release();
268
+ }
269
+ }
270
+ /**
271
+ * 使用读锁执行同步函数
272
+ * @param fn 要执行的函数
273
+ * @returns 函数返回值
274
+ */
275
+ withReadSync(fn) {
276
+ const handle = this.tryAcquireRead();
277
+ if (!handle) {
278
+ throw new Error("Cannot acquire read lock synchronously");
279
+ }
280
+ try {
281
+ return fn();
282
+ } finally {
283
+ handle.release();
284
+ }
285
+ }
286
+ /**
287
+ * 使用写锁执行同步函数
288
+ * @param fn 要执行的函数
289
+ * @returns 函数返回值
290
+ */
291
+ withWriteSync(fn) {
292
+ const handle = this.tryAcquireWrite();
293
+ if (!handle) {
294
+ throw new Error("Cannot acquire write lock synchronously");
295
+ }
296
+ try {
297
+ return fn();
298
+ } finally {
299
+ handle.release();
300
+ }
301
+ }
302
+ /**
303
+ * 获取统计信息
304
+ */
305
+ getStats() {
306
+ return {
307
+ readLockCount: this.readers,
308
+ writeLockCount: this.writer ? 1 : 0,
309
+ pendingReadCount: this.readWaiters.length,
310
+ pendingWriteCount: this.writeWaiters.length,
311
+ totalReadAcquires: this.totalReadAcquires,
312
+ totalWriteAcquires: this.totalWriteAcquires,
313
+ };
314
+ }
315
+ /**
316
+ * 检查是否有等待者
317
+ */
318
+ hasWaiters() {
319
+ return this.readWaiters.length > 0 || this.writeWaiters.length > 0;
320
+ }
321
+ /**
322
+ * 检查是否被读锁定
323
+ */
324
+ isReadLocked() {
325
+ return this.readers > 0;
326
+ }
327
+ /**
328
+ * 检查是否被写锁定
329
+ */
330
+ isWriteLocked() {
331
+ return this.writer;
332
+ }
333
+ /**
334
+ * 检查是否被锁定
335
+ */
336
+ isLocked() {
337
+ return this.writer || this.readers > 0;
338
+ }
339
+ /**
340
+ * 强制释放所有锁(危险操作,仅用于特殊场景)
341
+ */
342
+ forceUnlock() {
343
+ this.readers = 0;
344
+ this.writer = false;
345
+ const allWaiters = [...this.writeWaiters, ...this.readWaiters];
346
+ this.writeWaiters = [];
347
+ this.readWaiters = [];
348
+ for (const waiter of allWaiters) {
349
+ waiter.reject(new Error("Lock was force unlocked"));
350
+ }
351
+ }
352
+ }
353
+ exports.RWLock = RWLock;
354
+ /**
355
+ * 读写锁管理器
356
+ * 管理多个命名锁
357
+ */
358
+ class RWLockManager {
359
+ /**
360
+ * 创建读写锁管理器
361
+ * @param defaultOptions 默认配置
362
+ */
363
+ constructor(defaultOptions = {}) {
364
+ this.locks = new Map();
365
+ this.defaultOptions = defaultOptions;
366
+ }
367
+ /**
368
+ * 获取或创建锁
369
+ * @param name 锁名称
370
+ * @param options 配置选项
371
+ */
372
+ getLock(name, options) {
373
+ let lock = this.locks.get(name);
374
+ if (!lock) {
375
+ lock = new RWLock({
376
+ ...this.defaultOptions,
377
+ ...options,
378
+ });
379
+ this.locks.set(name, lock);
380
+ }
381
+ return lock;
382
+ }
383
+ /**
384
+ * 获取读锁
385
+ * @param name 锁名称
386
+ * @returns 读锁句柄
387
+ */
388
+ async acquireRead(name) {
389
+ return this.getLock(name).acquireRead();
390
+ }
391
+ /**
392
+ * 获取写锁
393
+ * @param name 锁名称
394
+ * @returns 写锁句柄
395
+ */
396
+ async acquireWrite(name) {
397
+ return this.getLock(name).acquireWrite();
398
+ }
399
+ /**
400
+ * 使用读锁执行函数
401
+ * @param name 锁名称
402
+ * @param fn 要执行的函数
403
+ */
404
+ async withRead(name, fn) {
405
+ return this.getLock(name).withRead(fn);
406
+ }
407
+ /**
408
+ * 使用写锁执行函数
409
+ * @param name 锁名称
410
+ * @param fn 要执行的函数
411
+ */
412
+ async withWrite(name, fn) {
413
+ return this.getLock(name).withWrite(fn);
414
+ }
415
+ /**
416
+ * 获取所有锁名称
417
+ */
418
+ getLockNames() {
419
+ return Array.from(this.locks.keys());
420
+ }
421
+ /**
422
+ * 获取锁统计信息
423
+ * @param name 锁名称
424
+ */
425
+ getStats(name) {
426
+ return this.locks.get(name)?.getStats();
427
+ }
428
+ /**
429
+ * 获取所有锁统计信息
430
+ */
431
+ getAllStats() {
432
+ const stats = new Map();
433
+ for (const [name, lock] of this.locks) {
434
+ stats.set(name, lock.getStats());
435
+ }
436
+ return stats;
437
+ }
438
+ /**
439
+ * 删除锁
440
+ * @param name 锁名称
441
+ */
442
+ deleteLock(name) {
443
+ const lock = this.locks.get(name);
444
+ if (lock && lock.isLocked()) {
445
+ return false;
446
+ }
447
+ return this.locks.delete(name);
448
+ }
449
+ /**
450
+ * 清空所有锁
451
+ */
452
+ clear() {
453
+ for (const lock of this.locks.values()) {
454
+ if (lock.isLocked()) {
455
+ throw new Error("Cannot clear locks while some are still held");
456
+ }
457
+ }
458
+ this.locks.clear();
459
+ }
460
+ }
461
+ exports.RWLockManager = RWLockManager;
462
+ /**
463
+ * 可重入读写锁
464
+ * 支持同一线程多次获取同一锁
465
+ */
466
+ class ReentrantRWLock {
467
+ /**
468
+ * 创建可重入读写锁
469
+ * @param options 配置选项
470
+ */
471
+ constructor(options = {}) {
472
+ this.lock = new RWLock(options);
473
+ this.readOwners = new Map();
474
+ this.writeOwner = null;
475
+ this.currentId = 0;
476
+ }
477
+ /**
478
+ * 生成当前上下文 ID
479
+ * 在实际应用中,应该使用线程 ID 或其他唯一标识
480
+ */
481
+ getContextId() {
482
+ return ++this.currentId;
483
+ }
484
+ /**
485
+ * 获取读锁
486
+ */
487
+ async acquireRead() {
488
+ const contextId = this.getContextId();
489
+ const count = this.readOwners.get(contextId) ?? 0;
490
+ if (count > 0) {
491
+ this.readOwners.set(contextId, count + 1);
492
+ return new ReadLockHandle(() => this.releaseRead(contextId));
493
+ }
494
+ if (this.writeOwner === contextId) {
495
+ return new ReadLockHandle(() => this.releaseRead(contextId));
496
+ }
497
+ const handle = await this.lock.acquireRead();
498
+ this.readOwners.set(contextId, 1);
499
+ return new ReadLockHandle(() => {
500
+ this.releaseRead(contextId);
501
+ handle.release();
502
+ });
503
+ }
504
+ /**
505
+ * 释放读锁
506
+ */
507
+ releaseRead(contextId) {
508
+ const count = this.readOwners.get(contextId);
509
+ if (count !== undefined) {
510
+ if (count <= 1) {
511
+ this.readOwners.delete(contextId);
512
+ } else {
513
+ this.readOwners.set(contextId, count - 1);
514
+ }
515
+ }
516
+ }
517
+ /**
518
+ * 获取写锁
519
+ */
520
+ async acquireWrite() {
521
+ const contextId = this.getContextId();
522
+ if (this.writeOwner === contextId) {
523
+ return new WriteLockHandle(() => this.releaseWrite(contextId));
524
+ }
525
+ const handle = await this.lock.acquireWrite();
526
+ this.writeOwner = contextId;
527
+ return new WriteLockHandle(() => {
528
+ this.releaseWrite(contextId);
529
+ handle.release();
530
+ });
531
+ }
532
+ /**
533
+ * 释放写锁
534
+ */
535
+ releaseWrite(contextId) {
536
+ if (this.writeOwner === contextId) {
537
+ this.writeOwner = null;
538
+ }
539
+ }
540
+ /**
541
+ * 使用读锁执行函数
542
+ */
543
+ async withRead(fn) {
544
+ const handle = await this.acquireRead();
545
+ try {
546
+ return await fn();
547
+ } finally {
548
+ handle.release();
549
+ }
550
+ }
551
+ /**
552
+ * 使用写锁执行函数
553
+ */
554
+ async withWrite(fn) {
555
+ const handle = await this.acquireWrite();
556
+ try {
557
+ return await fn();
558
+ } finally {
559
+ handle.release();
560
+ }
561
+ }
562
+ /**
563
+ * 获取统计信息
564
+ */
565
+ getStats() {
566
+ return this.lock.getStats();
567
+ }
568
+ }
569
+ exports.ReentrantRWLock = ReentrantRWLock;
570
+ //# sourceMappingURL=RWLock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RWLock.js","sourceRoot":"","sources":["../../src/performance/RWLock.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * 性能优化模块
3
+ * 提供列式存储、二进制序列化优化、异步批量写入、读写锁和惰性求值查询
4
+ *
5
+ * @packageDocumentation
6
+ */
7
+ export {
8
+ ColumnType,
9
+ ColumnDefinition,
10
+ ColumnarStorageOptions,
11
+ ColumnarStorageStats,
12
+ ColumnStats,
13
+ BatchWriteOptions,
14
+ BatchWriteStats,
15
+ BatchFlushResult,
16
+ FsyncStrategyType,
17
+ RWLockOptions,
18
+ RWLockStats,
19
+ LazyQueryOptions,
20
+ LazyQueryStats,
21
+ AggregationType,
22
+ AggregationResult,
23
+ RangeCondition,
24
+ BufferPoolOptions,
25
+ BufferPoolStats,
26
+ PerformanceOptions,
27
+ PerformanceStats,
28
+ } from "./types";
29
+ export { ColumnarStorage } from "./ColumnarStorage";
30
+ export {
31
+ BufferPool,
32
+ getGlobalBufferPool,
33
+ OptimizedBufferWriter,
34
+ OptimizedBufferReader,
35
+ FastSerializer,
36
+ BufferConcatenator,
37
+ } from "./OptimizedBuffer";
38
+ export { WalRecordEntry, BatchWalWriter, BatchWriteManager } from "./BatchWalWriter";
39
+ export { ReadLockHandle, WriteLockHandle, RWLock, RWLockManager, ReentrantRWLock } from "./RWLock";
40
+ export { LazyQueryIterator, LazyQueryBuilder, lazy, lazyIterator, GeneratorUtils } from "./LazyQuery";
41
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/performance/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EACH,UAAU,EACV,gBAAgB,EAChB,sBAAsB,EACtB,oBAAoB,EACpB,WAAW,EACX,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,iBAAiB,EACjB,eAAe,EACf,kBAAkB,EAClB,gBAAgB,GACnB,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD,OAAO,EACH,UAAU,EACV,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,EACrB,cAAc,EACd,kBAAkB,GACrB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACH,cAAc,EACd,cAAc,EACd,iBAAiB,GACpB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACH,cAAc,EACd,eAAe,EACf,MAAM,EACN,aAAa,EACb,eAAe,GAClB,MAAM,UAAU,CAAC;AAGlB,OAAO,EACH,iBAAiB,EACjB,gBAAgB,EAChB,IAAI,EACJ,YAAY,EACZ,cAAc,GACjB,MAAM,aAAa,CAAC"}