@nahisaho/yata-scale 1.8.5

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 (158) hide show
  1. package/README.md +66 -0
  2. package/dist/CacheManager.d.ts +107 -0
  3. package/dist/CacheManager.d.ts.map +1 -0
  4. package/dist/CacheManager.js +343 -0
  5. package/dist/CacheManager.js.map +1 -0
  6. package/dist/IndexManager.d.ts +103 -0
  7. package/dist/IndexManager.d.ts.map +1 -0
  8. package/dist/IndexManager.js +385 -0
  9. package/dist/IndexManager.js.map +1 -0
  10. package/dist/MigrationHelper.d.ts +91 -0
  11. package/dist/MigrationHelper.d.ts.map +1 -0
  12. package/dist/MigrationHelper.js +220 -0
  13. package/dist/MigrationHelper.js.map +1 -0
  14. package/dist/QueryCoordinator.d.ts +76 -0
  15. package/dist/QueryCoordinator.d.ts.map +1 -0
  16. package/dist/QueryCoordinator.js +298 -0
  17. package/dist/QueryCoordinator.js.map +1 -0
  18. package/dist/ShardManager.d.ts +48 -0
  19. package/dist/ShardManager.d.ts.map +1 -0
  20. package/dist/ShardManager.js +193 -0
  21. package/dist/ShardManager.js.map +1 -0
  22. package/dist/SyncController.d.ts +102 -0
  23. package/dist/SyncController.d.ts.map +1 -0
  24. package/dist/SyncController.js +286 -0
  25. package/dist/SyncController.js.map +1 -0
  26. package/dist/YataScaleManager.d.ts +75 -0
  27. package/dist/YataScaleManager.d.ts.map +1 -0
  28. package/dist/YataScaleManager.js +265 -0
  29. package/dist/YataScaleManager.js.map +1 -0
  30. package/dist/cache/CacheManager.d.ts +116 -0
  31. package/dist/cache/CacheManager.d.ts.map +1 -0
  32. package/dist/cache/CacheManager.js +286 -0
  33. package/dist/cache/CacheManager.js.map +1 -0
  34. package/dist/cache/InvalidationManager.d.ts +91 -0
  35. package/dist/cache/InvalidationManager.d.ts.map +1 -0
  36. package/dist/cache/InvalidationManager.js +155 -0
  37. package/dist/cache/InvalidationManager.js.map +1 -0
  38. package/dist/cache/L1Cache.d.ts +97 -0
  39. package/dist/cache/L1Cache.d.ts.map +1 -0
  40. package/dist/cache/L1Cache.js +225 -0
  41. package/dist/cache/L1Cache.js.map +1 -0
  42. package/dist/cache/L2Cache.d.ts +93 -0
  43. package/dist/cache/L2Cache.d.ts.map +1 -0
  44. package/dist/cache/L2Cache.js +248 -0
  45. package/dist/cache/L2Cache.js.map +1 -0
  46. package/dist/cache/L3Cache.d.ts +101 -0
  47. package/dist/cache/L3Cache.d.ts.map +1 -0
  48. package/dist/cache/L3Cache.js +229 -0
  49. package/dist/cache/L3Cache.js.map +1 -0
  50. package/dist/cache/index.d.ts +12 -0
  51. package/dist/cache/index.d.ts.map +1 -0
  52. package/dist/cache/index.js +11 -0
  53. package/dist/cache/index.js.map +1 -0
  54. package/dist/errors.d.ts +255 -0
  55. package/dist/errors.d.ts.map +1 -0
  56. package/dist/errors.js +515 -0
  57. package/dist/errors.js.map +1 -0
  58. package/dist/index/BPlusTreeIndex.d.ts +101 -0
  59. package/dist/index/BPlusTreeIndex.d.ts.map +1 -0
  60. package/dist/index/BPlusTreeIndex.js +310 -0
  61. package/dist/index/BPlusTreeIndex.js.map +1 -0
  62. package/dist/index/BloomFilter.d.ts +85 -0
  63. package/dist/index/BloomFilter.d.ts.map +1 -0
  64. package/dist/index/BloomFilter.js +215 -0
  65. package/dist/index/BloomFilter.js.map +1 -0
  66. package/dist/index/FullTextIndex.d.ts +87 -0
  67. package/dist/index/FullTextIndex.d.ts.map +1 -0
  68. package/dist/index/FullTextIndex.js +213 -0
  69. package/dist/index/FullTextIndex.js.map +1 -0
  70. package/dist/index/GraphIndex.d.ts +116 -0
  71. package/dist/index/GraphIndex.d.ts.map +1 -0
  72. package/dist/index/GraphIndex.js +308 -0
  73. package/dist/index/GraphIndex.js.map +1 -0
  74. package/dist/index/IndexManager.d.ts +105 -0
  75. package/dist/index/IndexManager.d.ts.map +1 -0
  76. package/dist/index/IndexManager.js +287 -0
  77. package/dist/index/IndexManager.js.map +1 -0
  78. package/dist/index/index.d.ts +12 -0
  79. package/dist/index/index.d.ts.map +1 -0
  80. package/dist/index/index.js +11 -0
  81. package/dist/index/index.js.map +1 -0
  82. package/dist/index.d.ts +12 -0
  83. package/dist/index.d.ts.map +1 -0
  84. package/dist/index.js +12 -0
  85. package/dist/index.js.map +1 -0
  86. package/dist/query/DistributedExecutor.d.ts +78 -0
  87. package/dist/query/DistributedExecutor.d.ts.map +1 -0
  88. package/dist/query/DistributedExecutor.js +232 -0
  89. package/dist/query/DistributedExecutor.js.map +1 -0
  90. package/dist/query/QueryCoordinator.d.ts +98 -0
  91. package/dist/query/QueryCoordinator.d.ts.map +1 -0
  92. package/dist/query/QueryCoordinator.js +246 -0
  93. package/dist/query/QueryCoordinator.js.map +1 -0
  94. package/dist/query/QueryPlanner.d.ts +88 -0
  95. package/dist/query/QueryPlanner.d.ts.map +1 -0
  96. package/dist/query/QueryPlanner.js +235 -0
  97. package/dist/query/QueryPlanner.js.map +1 -0
  98. package/dist/query/WorkerPool.d.ts +108 -0
  99. package/dist/query/WorkerPool.d.ts.map +1 -0
  100. package/dist/query/WorkerPool.js +195 -0
  101. package/dist/query/WorkerPool.js.map +1 -0
  102. package/dist/query/index.d.ts +11 -0
  103. package/dist/query/index.d.ts.map +1 -0
  104. package/dist/query/index.js +10 -0
  105. package/dist/query/index.js.map +1 -0
  106. package/dist/shard/GraphPartitionStrategy.d.ts +65 -0
  107. package/dist/shard/GraphPartitionStrategy.d.ts.map +1 -0
  108. package/dist/shard/GraphPartitionStrategy.js +208 -0
  109. package/dist/shard/GraphPartitionStrategy.js.map +1 -0
  110. package/dist/shard/HashPartitionStrategy.d.ts +56 -0
  111. package/dist/shard/HashPartitionStrategy.d.ts.map +1 -0
  112. package/dist/shard/HashPartitionStrategy.js +169 -0
  113. package/dist/shard/HashPartitionStrategy.js.map +1 -0
  114. package/dist/shard/RangePartitionStrategy.d.ts +63 -0
  115. package/dist/shard/RangePartitionStrategy.d.ts.map +1 -0
  116. package/dist/shard/RangePartitionStrategy.js +157 -0
  117. package/dist/shard/RangePartitionStrategy.js.map +1 -0
  118. package/dist/shard/Rebalancer.d.ts +70 -0
  119. package/dist/shard/Rebalancer.d.ts.map +1 -0
  120. package/dist/shard/Rebalancer.js +184 -0
  121. package/dist/shard/Rebalancer.js.map +1 -0
  122. package/dist/shard/ShardManager.d.ts +123 -0
  123. package/dist/shard/ShardManager.d.ts.map +1 -0
  124. package/dist/shard/ShardManager.js +353 -0
  125. package/dist/shard/ShardManager.js.map +1 -0
  126. package/dist/shard/ShardRouter.d.ts +102 -0
  127. package/dist/shard/ShardRouter.d.ts.map +1 -0
  128. package/dist/shard/ShardRouter.js +181 -0
  129. package/dist/shard/ShardRouter.js.map +1 -0
  130. package/dist/shard/index.d.ts +13 -0
  131. package/dist/shard/index.d.ts.map +1 -0
  132. package/dist/shard/index.js +12 -0
  133. package/dist/shard/index.js.map +1 -0
  134. package/dist/sync/ConflictResolver.d.ts +71 -0
  135. package/dist/sync/ConflictResolver.d.ts.map +1 -0
  136. package/dist/sync/ConflictResolver.js +214 -0
  137. package/dist/sync/ConflictResolver.js.map +1 -0
  138. package/dist/sync/SyncController.d.ts +150 -0
  139. package/dist/sync/SyncController.d.ts.map +1 -0
  140. package/dist/sync/SyncController.js +304 -0
  141. package/dist/sync/SyncController.js.map +1 -0
  142. package/dist/sync/VectorClock.d.ts +102 -0
  143. package/dist/sync/VectorClock.d.ts.map +1 -0
  144. package/dist/sync/VectorClock.js +189 -0
  145. package/dist/sync/VectorClock.js.map +1 -0
  146. package/dist/sync/WALManager.d.ts +120 -0
  147. package/dist/sync/WALManager.d.ts.map +1 -0
  148. package/dist/sync/WALManager.js +240 -0
  149. package/dist/sync/WALManager.js.map +1 -0
  150. package/dist/sync/index.d.ts +11 -0
  151. package/dist/sync/index.d.ts.map +1 -0
  152. package/dist/sync/index.js +10 -0
  153. package/dist/sync/index.js.map +1 -0
  154. package/dist/types.d.ts +323 -0
  155. package/dist/types.d.ts.map +1 -0
  156. package/dist/types.js +7 -0
  157. package/dist/types.js.map +1 -0
  158. package/package.json +86 -0
@@ -0,0 +1,235 @@
1
+ /**
2
+ * @nahisaho/yata-scale - Query Planner
3
+ *
4
+ * Generates optimized query execution plans
5
+ */
6
+ /**
7
+ * Query planner for generating execution plans
8
+ */
9
+ export class QueryPlanner {
10
+ indexStats = new Map();
11
+ constructor() { }
12
+ /**
13
+ * Register index statistics
14
+ */
15
+ registerIndex(stats) {
16
+ this.indexStats.set(stats.name, stats);
17
+ }
18
+ /**
19
+ * Unregister index
20
+ */
21
+ unregisterIndex(name) {
22
+ this.indexStats.delete(name);
23
+ }
24
+ /**
25
+ * Generate query plan
26
+ */
27
+ plan(query) {
28
+ const steps = [];
29
+ let stepId = 0;
30
+ // Determine best access method
31
+ const accessStep = this.planAccessPath(query, stepId++);
32
+ steps.push(accessStep);
33
+ // Add filter step if needed
34
+ if (query.filters && query.filters.length > 0) {
35
+ for (const filter of query.filters) {
36
+ const filterStep = this.planFilterStep(filter, stepId++, [accessStep.id]);
37
+ steps.push(filterStep);
38
+ }
39
+ }
40
+ // Add traversal steps for graph queries
41
+ if (query.traversal) {
42
+ const traversalStep = this.planTraversalStep(query, stepId++, steps);
43
+ steps.push(traversalStep);
44
+ }
45
+ // Add sort step if needed
46
+ if (query.orderBy) {
47
+ const lastStep = steps[steps.length - 1];
48
+ const sortStep = this.planSortStep(query, stepId++, [lastStep.id]);
49
+ steps.push(sortStep);
50
+ }
51
+ // Add limit step if needed
52
+ if (query.limit !== undefined) {
53
+ const lastStep = steps[steps.length - 1];
54
+ const limitStep = this.planLimitStep(query, stepId++, [lastStep.id]);
55
+ steps.push(limitStep);
56
+ }
57
+ // Calculate total cost
58
+ const totalCost = steps.reduce((sum, step) => sum + step.estimatedCost, 0);
59
+ return {
60
+ query,
61
+ steps: steps.map((s) => ({
62
+ type: s.type,
63
+ target: s.target,
64
+ index: s.index,
65
+ filter: s.filter,
66
+ estimatedCost: s.estimatedCost,
67
+ })),
68
+ estimatedCost: totalCost,
69
+ parallelizable: this.isParallelizable(steps),
70
+ targetShards: this.determineTargetShards(query),
71
+ };
72
+ }
73
+ /**
74
+ * Plan access path (scan vs index)
75
+ */
76
+ planAccessPath(query, id) {
77
+ // Check if we can use an index
78
+ const bestIndex = this.findBestIndex(query);
79
+ if (bestIndex) {
80
+ return {
81
+ id: `step_${id}`,
82
+ type: 'index',
83
+ target: query.entityTypes?.[0] ?? 'entity',
84
+ index: bestIndex.name,
85
+ dependencies: [],
86
+ estimatedCost: Math.log2(bestIndex.entryCount + 1) * 10,
87
+ estimatedRows: bestIndex.entryCount * bestIndex.selectivity,
88
+ };
89
+ }
90
+ // Fall back to scan
91
+ return {
92
+ id: `step_${id}`,
93
+ type: 'scan',
94
+ target: query.entityTypes?.[0] ?? 'entity',
95
+ dependencies: [],
96
+ estimatedCost: 1000, // Full scan is expensive
97
+ estimatedRows: 10000, // Assume moderate result set
98
+ };
99
+ }
100
+ /**
101
+ * Find best index for query
102
+ */
103
+ findBestIndex(query) {
104
+ if (!query.filters || query.filters.length === 0) {
105
+ return null;
106
+ }
107
+ let bestIndex = null;
108
+ let bestSelectivity = 1;
109
+ for (const filter of query.filters) {
110
+ // Look for index on filter field
111
+ const indexName = `idx_${filter.field}`;
112
+ const stats = this.indexStats.get(indexName);
113
+ if (stats && stats.selectivity < bestSelectivity) {
114
+ bestIndex = stats;
115
+ bestSelectivity = stats.selectivity;
116
+ }
117
+ }
118
+ return bestIndex;
119
+ }
120
+ /**
121
+ * Plan filter step
122
+ */
123
+ planFilterStep(filter, id, dependencies) {
124
+ return {
125
+ id: `step_${id}`,
126
+ type: 'filter',
127
+ filter,
128
+ dependencies,
129
+ estimatedCost: 1, // Filter is cheap per row
130
+ estimatedRows: 0, // Depends on previous step
131
+ };
132
+ }
133
+ /**
134
+ * Plan traversal step
135
+ */
136
+ planTraversalStep(query, id, previousSteps) {
137
+ const lastStep = previousSteps[previousSteps.length - 1];
138
+ const depth = query.traversal?.maxDepth ?? 1;
139
+ return {
140
+ id: `step_${id}`,
141
+ type: 'join',
142
+ target: 'relationship',
143
+ dependencies: [lastStep.id],
144
+ estimatedCost: depth * 100, // Cost increases with depth
145
+ estimatedRows: lastStep.estimatedRows * Math.pow(5, depth), // Assume 5 avg neighbors
146
+ };
147
+ }
148
+ /**
149
+ * Plan sort step
150
+ */
151
+ planSortStep(query, id, dependencies) {
152
+ return {
153
+ id: `step_${id}`,
154
+ type: 'sort',
155
+ target: query.orderBy,
156
+ dependencies,
157
+ estimatedCost: 50, // Sorting is moderately expensive
158
+ estimatedRows: 0, // Same as input
159
+ };
160
+ }
161
+ /**
162
+ * Plan limit step
163
+ */
164
+ planLimitStep(query, id, dependencies) {
165
+ return {
166
+ id: `step_${id}`,
167
+ type: 'limit',
168
+ dependencies,
169
+ estimatedCost: 1, // Limit is very cheap
170
+ estimatedRows: query.limit ?? 100,
171
+ };
172
+ }
173
+ /**
174
+ * Check if plan is parallelizable
175
+ */
176
+ isParallelizable(steps) {
177
+ // Can parallelize if first step is scan or index lookup
178
+ const firstStep = steps[0];
179
+ return firstStep.type === 'scan' || firstStep.type === 'index';
180
+ }
181
+ /**
182
+ * Determine target shards for query
183
+ */
184
+ determineTargetShards(query) {
185
+ // If query has specific IDs, can route to specific shards
186
+ if (query.startEntityIds && query.startEntityIds.length > 0) {
187
+ // Would use shard router to determine shards
188
+ return ['shard_determined_by_router'];
189
+ }
190
+ // Otherwise, query all shards
191
+ return ['all'];
192
+ }
193
+ /**
194
+ * Optimize plan
195
+ */
196
+ optimize(plan) {
197
+ // Simple optimization: push down filters
198
+ const optimizedSteps = [...plan.steps];
199
+ // Reorder to put cheaper operations first
200
+ optimizedSteps.sort((a, b) => a.estimatedCost - b.estimatedCost);
201
+ return {
202
+ ...plan,
203
+ steps: optimizedSteps,
204
+ };
205
+ }
206
+ /**
207
+ * Explain plan in human-readable format
208
+ */
209
+ explain(plan) {
210
+ const lines = [];
211
+ lines.push('Query Execution Plan');
212
+ lines.push('====================');
213
+ lines.push(`Estimated Total Cost: ${plan.estimatedCost.toFixed(2)}`);
214
+ lines.push(`Parallelizable: ${plan.parallelizable}`);
215
+ lines.push(`Target Shards: ${plan.targetShards.join(', ')}`);
216
+ lines.push('');
217
+ lines.push('Steps:');
218
+ for (let i = 0; i < plan.steps.length; i++) {
219
+ const step = plan.steps[i];
220
+ lines.push(` ${i + 1}. ${step.type.toUpperCase()}`);
221
+ if (step.target) {
222
+ lines.push(` Target: ${step.target}`);
223
+ }
224
+ if (step.index) {
225
+ lines.push(` Index: ${step.index}`);
226
+ }
227
+ if (step.filter) {
228
+ lines.push(` Filter: ${step.filter.field} ${step.filter.operator} ${step.filter.value}`);
229
+ }
230
+ lines.push(` Estimated Cost: ${step.estimatedCost.toFixed(2)}`);
231
+ }
232
+ return lines.join('\n');
233
+ }
234
+ }
235
+ //# sourceMappingURL=QueryPlanner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QueryPlanner.js","sourceRoot":"","sources":["../../src/query/QueryPlanner.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAiCH;;GAEG;AACH,MAAM,OAAO,YAAY;IACf,UAAU,GAAiC,IAAI,GAAG,EAAE,CAAC;IAE7D,gBAAe,CAAC;IAEhB;;OAEG;IACH,aAAa,CAAC,KAAsB;QAClC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACzC,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,IAAY;QAC1B,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,IAAI,CAAC,KAAiB;QACpB,MAAM,KAAK,GAAe,EAAE,CAAC;QAC7B,IAAI,MAAM,GAAG,CAAC,CAAC;QAEf,+BAA+B;QAC/B,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QACxD,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAEvB,4BAA4B;QAC5B,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9C,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;gBACnC,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC1E,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;QAED,wCAAwC;QACxC,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;YACpB,MAAM,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,KAAK,CAAC,CAAC;YACrE,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC5B,CAAC;QAED,0BAA0B;QAC1B,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YAClB,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;YACnE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvB,CAAC;QAED,2BAA2B;QAC3B,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC9B,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACzC,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;YACrE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACxB,CAAC;QAED,uBAAuB;QACvB,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;QAE3E,OAAO;YACL,KAAK;YACL,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACvB,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,aAAa,EAAE,CAAC,CAAC,aAAa;aAC/B,CAAC,CAAC;YACH,aAAa,EAAE,SAAS;YACxB,cAAc,EAAE,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;YAC5C,YAAY,EAAE,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC;SAChD,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,cAAc,CAAC,KAAiB,EAAE,EAAU;QAClD,+BAA+B;QAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAE5C,IAAI,SAAS,EAAE,CAAC;YACd,OAAO;gBACL,EAAE,EAAE,QAAQ,EAAE,EAAE;gBAChB,IAAI,EAAE,OAAO;gBACb,MAAM,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,QAAQ;gBAC1C,KAAK,EAAE,SAAS,CAAC,IAAI;gBACrB,YAAY,EAAE,EAAE;gBAChB,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,EAAE;gBACvD,aAAa,EAAE,SAAS,CAAC,UAAU,GAAG,SAAS,CAAC,WAAW;aAC5D,CAAC;QACJ,CAAC;QAED,oBAAoB;QACpB,OAAO;YACL,EAAE,EAAE,QAAQ,EAAE,EAAE;YAChB,IAAI,EAAE,MAAM;YACZ,MAAM,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,QAAQ;YAC1C,YAAY,EAAE,EAAE;YAChB,aAAa,EAAE,IAAI,EAAE,yBAAyB;YAC9C,aAAa,EAAE,KAAK,EAAE,6BAA6B;SACpD,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,aAAa,CAAC,KAAiB;QACrC,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,SAAS,GAA2B,IAAI,CAAC;QAC7C,IAAI,eAAe,GAAG,CAAC,CAAC;QAExB,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YACnC,iCAAiC;YACjC,MAAM,SAAS,GAAG,OAAO,MAAM,CAAC,KAAK,EAAE,CAAC;YACxC,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAE7C,IAAI,KAAK,IAAI,KAAK,CAAC,WAAW,GAAG,eAAe,EAAE,CAAC;gBACjD,SAAS,GAAG,KAAK,CAAC;gBAClB,eAAe,GAAG,KAAK,CAAC,WAAW,CAAC;YACtC,CAAC;QACH,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;OAEG;IACK,cAAc,CACpB,MAAmB,EACnB,EAAU,EACV,YAAsB;QAEtB,OAAO;YACL,EAAE,EAAE,QAAQ,EAAE,EAAE;YAChB,IAAI,EAAE,QAAQ;YACd,MAAM;YACN,YAAY;YACZ,aAAa,EAAE,CAAC,EAAE,0BAA0B;YAC5C,aAAa,EAAE,CAAC,EAAE,2BAA2B;SAC9C,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,iBAAiB,CACvB,KAAiB,EACjB,EAAU,EACV,aAAyB;QAEzB,MAAM,QAAQ,GAAG,aAAa,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACzD,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,EAAE,QAAQ,IAAI,CAAC,CAAC;QAE7C,OAAO;YACL,EAAE,EAAE,QAAQ,EAAE,EAAE;YAChB,IAAI,EAAE,MAAM;YACZ,MAAM,EAAE,cAAc;YACtB,YAAY,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC3B,aAAa,EAAE,KAAK,GAAG,GAAG,EAAE,4BAA4B;YACxD,aAAa,EAAE,QAAQ,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,yBAAyB;SACtF,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,YAAY,CAClB,KAAiB,EACjB,EAAU,EACV,YAAsB;QAEtB,OAAO;YACL,EAAE,EAAE,QAAQ,EAAE,EAAE;YAChB,IAAI,EAAE,MAAM;YACZ,MAAM,EAAE,KAAK,CAAC,OAAO;YACrB,YAAY;YACZ,aAAa,EAAE,EAAE,EAAE,kCAAkC;YACrD,aAAa,EAAE,CAAC,EAAE,gBAAgB;SACnC,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,aAAa,CACnB,KAAiB,EACjB,EAAU,EACV,YAAsB;QAEtB,OAAO;YACL,EAAE,EAAE,QAAQ,EAAE,EAAE;YAChB,IAAI,EAAE,OAAO;YACb,YAAY;YACZ,aAAa,EAAE,CAAC,EAAE,sBAAsB;YACxC,aAAa,EAAE,KAAK,CAAC,KAAK,IAAI,GAAG;SAClC,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,gBAAgB,CAAC,KAAiB;QACxC,wDAAwD;QACxD,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAC3B,OAAO,SAAS,CAAC,IAAI,KAAK,MAAM,IAAI,SAAS,CAAC,IAAI,KAAK,OAAO,CAAC;IACjE,CAAC;IAED;;OAEG;IACK,qBAAqB,CAAC,KAAiB;QAC7C,0DAA0D;QAC1D,IAAI,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5D,6CAA6C;YAC7C,OAAO,CAAC,4BAA4B,CAAC,CAAC;QACxC,CAAC;QAED,8BAA8B;QAC9B,OAAO,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,IAAe;QACtB,yCAAyC;QACzC,MAAM,cAAc,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QAEvC,0CAA0C;QAC1C,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC;QAEjE,OAAO;YACL,GAAG,IAAI;YACP,KAAK,EAAE,cAAc;SACtB,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,IAAe;QACrB,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC,yBAAyB,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACrE,KAAK,CAAC,IAAI,CAAC,mBAAmB,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;QACrD,KAAK,CAAC,IAAI,CAAC,kBAAkB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC7D,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAErB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC3B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;YACrD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,KAAK,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;YAC5C,CAAC;YACD,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBACf,KAAK,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YAC1C,CAAC;YACD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,KAAK,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;YAC/F,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,wBAAwB,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACtE,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;CACF"}
@@ -0,0 +1,108 @@
1
+ /**
2
+ * @nahisaho/yata-scale - Worker Pool
3
+ *
4
+ * Manages worker threads for parallel query execution
5
+ */
6
+ /**
7
+ * Task to execute
8
+ */
9
+ export interface WorkerTask<T, R> {
10
+ readonly id: string;
11
+ readonly data: T;
12
+ readonly execute: (data: T) => Promise<R>;
13
+ }
14
+ /**
15
+ * Task result
16
+ */
17
+ export interface TaskResult<R> {
18
+ readonly taskId: string;
19
+ readonly result?: R;
20
+ readonly error?: Error;
21
+ readonly durationMs: number;
22
+ }
23
+ /**
24
+ * Worker pool statistics
25
+ */
26
+ export interface WorkerPoolStats {
27
+ readonly poolSize: number;
28
+ readonly activeTasks: number;
29
+ readonly queuedTasks: number;
30
+ readonly completedTasks: number;
31
+ readonly failedTasks: number;
32
+ readonly avgDurationMs: number;
33
+ }
34
+ /**
35
+ * Worker pool for parallel task execution
36
+ * Note: In Node.js, this would use worker_threads
37
+ * This is a simplified async implementation
38
+ */
39
+ export declare class WorkerPool {
40
+ private readonly poolSize;
41
+ private activeTasks;
42
+ private queuedTasks;
43
+ private completedTasks;
44
+ private failedTasks;
45
+ private totalDuration;
46
+ constructor(poolSize?: number);
47
+ /**
48
+ * Submit a task for execution
49
+ */
50
+ submit<T, R>(task: WorkerTask<T, R>): Promise<TaskResult<R>>;
51
+ /**
52
+ * Execute a task
53
+ */
54
+ private executeTask;
55
+ /**
56
+ * Process queued tasks
57
+ */
58
+ private processQueue;
59
+ /**
60
+ * Submit multiple tasks and wait for all
61
+ */
62
+ submitAll<T, R>(tasks: WorkerTask<T, R>[]): Promise<TaskResult<R>[]>;
63
+ /**
64
+ * Submit multiple tasks and get first result
65
+ */
66
+ submitRace<T, R>(tasks: WorkerTask<T, R>[]): Promise<TaskResult<R>>;
67
+ /**
68
+ * Map operation over data with parallelism
69
+ */
70
+ map<T, R>(items: T[], fn: (item: T) => Promise<R>, taskIdPrefix?: string): Promise<R[]>;
71
+ /**
72
+ * Filter operation with parallelism
73
+ */
74
+ filter<T>(items: T[], predicate: (item: T) => Promise<boolean>, taskIdPrefix?: string): Promise<T[]>;
75
+ /**
76
+ * Reduce operation (sequential with parallel mapping)
77
+ */
78
+ reduce<T, R>(items: T[], fn: (acc: R, item: T) => Promise<R>, initial: R): Promise<R>;
79
+ /**
80
+ * Get pool statistics
81
+ */
82
+ getStats(): WorkerPoolStats;
83
+ /**
84
+ * Wait for all active tasks to complete
85
+ */
86
+ drain(): Promise<void>;
87
+ /**
88
+ * Clear queued tasks
89
+ */
90
+ clear(): void;
91
+ /**
92
+ * Shutdown the pool
93
+ */
94
+ shutdown(): Promise<void>;
95
+ /**
96
+ * Get active task count
97
+ */
98
+ get activeCount(): number;
99
+ /**
100
+ * Get queued task count
101
+ */
102
+ get queuedCount(): number;
103
+ /**
104
+ * Check if pool is idle
105
+ */
106
+ get isIdle(): boolean;
107
+ }
108
+ //# sourceMappingURL=WorkerPool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkerPool.d.ts","sourceRoot":"","sources":["../../src/query/WorkerPool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,195 @@
1
+ /**
2
+ * @nahisaho/yata-scale - Worker Pool
3
+ *
4
+ * Manages worker threads for parallel query execution
5
+ */
6
+ /**
7
+ * Worker pool for parallel task execution
8
+ * Note: In Node.js, this would use worker_threads
9
+ * This is a simplified async implementation
10
+ */
11
+ export class WorkerPool {
12
+ poolSize;
13
+ activeTasks = 0;
14
+ queuedTasks = [];
15
+ completedTasks = 0;
16
+ failedTasks = 0;
17
+ totalDuration = 0;
18
+ constructor(poolSize = 4) {
19
+ this.poolSize = poolSize;
20
+ }
21
+ /**
22
+ * Submit a task for execution
23
+ */
24
+ async submit(task) {
25
+ if (this.activeTasks < this.poolSize) {
26
+ return this.executeTask(task);
27
+ }
28
+ // Queue the task
29
+ return new Promise((resolve) => {
30
+ this.queuedTasks.push({
31
+ resolve: resolve,
32
+ task: task,
33
+ });
34
+ });
35
+ }
36
+ /**
37
+ * Execute a task
38
+ */
39
+ async executeTask(task) {
40
+ this.activeTasks++;
41
+ const startTime = Date.now();
42
+ try {
43
+ const result = await task.execute(task.data);
44
+ const durationMs = Date.now() - startTime;
45
+ this.completedTasks++;
46
+ this.totalDuration += durationMs;
47
+ this.activeTasks--;
48
+ // Process next queued task
49
+ this.processQueue();
50
+ return {
51
+ taskId: task.id,
52
+ result,
53
+ durationMs,
54
+ };
55
+ }
56
+ catch (error) {
57
+ const durationMs = Date.now() - startTime;
58
+ this.failedTasks++;
59
+ this.totalDuration += durationMs;
60
+ this.activeTasks--;
61
+ // Process next queued task
62
+ this.processQueue();
63
+ return {
64
+ taskId: task.id,
65
+ error: error instanceof Error ? error : new Error(String(error)),
66
+ durationMs,
67
+ };
68
+ }
69
+ }
70
+ /**
71
+ * Process queued tasks
72
+ */
73
+ processQueue() {
74
+ while (this.activeTasks < this.poolSize && this.queuedTasks.length > 0) {
75
+ const queued = this.queuedTasks.shift();
76
+ this.executeTask(queued.task).then(queued.resolve);
77
+ }
78
+ }
79
+ /**
80
+ * Submit multiple tasks and wait for all
81
+ */
82
+ async submitAll(tasks) {
83
+ const promises = tasks.map((task) => this.submit(task));
84
+ return Promise.all(promises);
85
+ }
86
+ /**
87
+ * Submit multiple tasks and get first result
88
+ */
89
+ async submitRace(tasks) {
90
+ const promises = tasks.map((task) => this.submit(task));
91
+ return Promise.race(promises);
92
+ }
93
+ /**
94
+ * Map operation over data with parallelism
95
+ */
96
+ async map(items, fn, taskIdPrefix = 'map') {
97
+ const tasks = items.map((item, i) => ({
98
+ id: `${taskIdPrefix}_${i}`,
99
+ data: item,
100
+ execute: fn,
101
+ }));
102
+ const results = await this.submitAll(tasks);
103
+ // Preserve order and handle errors
104
+ const output = [];
105
+ for (const result of results) {
106
+ if (result.error) {
107
+ throw result.error;
108
+ }
109
+ output.push(result.result);
110
+ }
111
+ return output;
112
+ }
113
+ /**
114
+ * Filter operation with parallelism
115
+ */
116
+ async filter(items, predicate, taskIdPrefix = 'filter') {
117
+ const tasks = items.map((item, i) => ({
118
+ id: `${taskIdPrefix}_${i}`,
119
+ data: item,
120
+ execute: predicate,
121
+ }));
122
+ const results = await this.submitAll(tasks);
123
+ const output = [];
124
+ for (let i = 0; i < results.length; i++) {
125
+ if (results[i].result) {
126
+ output.push(items[i]);
127
+ }
128
+ }
129
+ return output;
130
+ }
131
+ /**
132
+ * Reduce operation (sequential with parallel mapping)
133
+ */
134
+ async reduce(items, fn, initial) {
135
+ let result = initial;
136
+ for (const item of items) {
137
+ result = await fn(result, item);
138
+ }
139
+ return result;
140
+ }
141
+ /**
142
+ * Get pool statistics
143
+ */
144
+ getStats() {
145
+ const totalTasks = this.completedTasks + this.failedTasks;
146
+ return {
147
+ poolSize: this.poolSize,
148
+ activeTasks: this.activeTasks,
149
+ queuedTasks: this.queuedTasks.length,
150
+ completedTasks: this.completedTasks,
151
+ failedTasks: this.failedTasks,
152
+ avgDurationMs: totalTasks > 0 ? this.totalDuration / totalTasks : 0,
153
+ };
154
+ }
155
+ /**
156
+ * Wait for all active tasks to complete
157
+ */
158
+ async drain() {
159
+ while (this.activeTasks > 0 || this.queuedTasks.length > 0) {
160
+ await new Promise((resolve) => setTimeout(resolve, 10));
161
+ }
162
+ }
163
+ /**
164
+ * Clear queued tasks
165
+ */
166
+ clear() {
167
+ this.queuedTasks = [];
168
+ }
169
+ /**
170
+ * Shutdown the pool
171
+ */
172
+ async shutdown() {
173
+ await this.drain();
174
+ this.clear();
175
+ }
176
+ /**
177
+ * Get active task count
178
+ */
179
+ get activeCount() {
180
+ return this.activeTasks;
181
+ }
182
+ /**
183
+ * Get queued task count
184
+ */
185
+ get queuedCount() {
186
+ return this.queuedTasks.length;
187
+ }
188
+ /**
189
+ * Check if pool is idle
190
+ */
191
+ get isIdle() {
192
+ return this.activeTasks === 0 && this.queuedTasks.length === 0;
193
+ }
194
+ }
195
+ //# sourceMappingURL=WorkerPool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkerPool.js","sourceRoot":"","sources":["../../src/query/WorkerPool.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAiCH;;;;GAIG;AACH,MAAM,OAAO,UAAU;IACJ,QAAQ,CAAS;IAC1B,WAAW,GAAW,CAAC,CAAC;IACxB,WAAW,GAAqF,EAAE,CAAC;IACnG,cAAc,GAAW,CAAC,CAAC;IAC3B,WAAW,GAAW,CAAC,CAAC;IACxB,aAAa,GAAW,CAAC,CAAC;IAElC,YAAY,WAAmB,CAAC;QAC9B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAO,IAAsB;QACvC,IAAI,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YACrC,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC;QAED,iBAAiB;QACjB,OAAO,IAAI,OAAO,CAAgB,CAAC,OAAO,EAAE,EAAE;YAC5C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;gBACpB,OAAO,EAAE,OAAmC;gBAC5C,IAAI,EAAE,IAAoC;aAC3C,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,WAAW,CAAO,IAAsB;QACpD,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE7B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YAE1C,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,IAAI,CAAC,aAAa,IAAI,UAAU,CAAC;YACjC,IAAI,CAAC,WAAW,EAAE,CAAC;YAEnB,2BAA2B;YAC3B,IAAI,CAAC,YAAY,EAAE,CAAC;YAEpB,OAAO;gBACL,MAAM,EAAE,IAAI,CAAC,EAAE;gBACf,MAAM;gBACN,UAAU;aACX,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YAE1C,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,IAAI,CAAC,aAAa,IAAI,UAAU,CAAC;YACjC,IAAI,CAAC,WAAW,EAAE,CAAC;YAEnB,2BAA2B;YAC3B,IAAI,CAAC,YAAY,EAAE,CAAC;YAEpB,OAAO;gBACL,MAAM,EAAE,IAAI,CAAC,EAAE;gBACf,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAChE,UAAU;aACX,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACK,YAAY;QAClB,OAAO,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvE,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAG,CAAC;YACzC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS,CAAO,KAAyB;QAC7C,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QACxD,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAO,KAAyB;QAC9C,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QACxD,OAAO,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,GAAG,CACP,KAAU,EACV,EAA2B,EAC3B,eAAuB,KAAK;QAE5B,MAAM,KAAK,GAAuB,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YACxD,EAAE,EAAE,GAAG,YAAY,IAAI,CAAC,EAAE;YAC1B,IAAI,EAAE,IAAI;YACV,OAAO,EAAE,EAAE;SACZ,CAAC,CAAC,CAAC;QAEJ,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAE5C,mCAAmC;QACnC,MAAM,MAAM,GAAQ,EAAE,CAAC;QACvB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;gBACjB,MAAM,MAAM,CAAC,KAAK,CAAC;YACrB,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAO,CAAC,CAAC;QAC9B,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CACV,KAAU,EACV,SAAwC,EACxC,eAAuB,QAAQ;QAE/B,MAAM,KAAK,GAA6B,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YAC9D,EAAE,EAAE,GAAG,YAAY,IAAI,CAAC,EAAE;YAC1B,IAAI,EAAE,IAAI;YACV,OAAO,EAAE,SAAS;SACnB,CAAC,CAAC,CAAC;QAEJ,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAE5C,MAAM,MAAM,GAAQ,EAAE,CAAC;QACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACxC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;gBACtB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACxB,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CACV,KAAU,EACV,EAAmC,EACnC,OAAU;QAEV,IAAI,MAAM,GAAG,OAAO,CAAC;QACrB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,GAAG,MAAM,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAClC,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC;QAC1D,OAAO;YACL,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM;YACpC,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,aAAa,EAAE,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;SACpE,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK;QACT,OAAO,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3D,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ;QACZ,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QACnB,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAED;;OAEG;IACH,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,WAAW,KAAK,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,CAAC;IACjE,CAAC;CACF"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * @nahisaho/yata-scale - Query Module
3
+ *
4
+ * Exports for distributed query functionality
5
+ */
6
+ export { QueryCoordinator } from './QueryCoordinator.js';
7
+ export { QueryPlanner } from './QueryPlanner.js';
8
+ export { DistributedExecutor } from './DistributedExecutor.js';
9
+ export { WorkerPool } from './WorkerPool.js';
10
+ export type { GraphQuery, QueryResult, QueryPlan, QueryOptions, QueryFilter, SortOrder, } from '../types.js';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/query/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,YAAY,EACV,UAAU,EACV,WAAW,EACX,SAAS,EACT,YAAY,EACZ,WAAW,EACX,SAAS,GACV,MAAM,aAAa,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @nahisaho/yata-scale - Query Module
3
+ *
4
+ * Exports for distributed query functionality
5
+ */
6
+ export { QueryCoordinator } from './QueryCoordinator.js';
7
+ export { QueryPlanner } from './QueryPlanner.js';
8
+ export { DistributedExecutor } from './DistributedExecutor.js';
9
+ export { WorkerPool } from './WorkerPool.js';
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/query/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * @nahisaho/yata-scale - Graph Partition Strategy
3
+ *
4
+ * Graph-based partitioning using connected components
5
+ */
6
+ import type { PartitionStrategy, PartitionStrategyType, EntityMetadata, Entity, Relationship } from '../types.js';
7
+ /**
8
+ * Graph partition strategy based on connected components
9
+ */
10
+ export declare class GraphPartitionStrategy implements PartitionStrategy {
11
+ readonly type: PartitionStrategyType;
12
+ private componentMap;
13
+ private shardIds;
14
+ private defaultShardId;
15
+ constructor(shardIds: string[]);
16
+ /**
17
+ * Initialize the partition map from entities and relationships
18
+ */
19
+ initialize(entities: Entity[], relationships: Relationship[]): Promise<void>;
20
+ /**
21
+ * Find connected components using Union-Find
22
+ */
23
+ private findConnectedComponents;
24
+ /**
25
+ * Assign components to shards using best-fit decreasing
26
+ */
27
+ private assignComponentsToShards;
28
+ /**
29
+ * Get shard ID for an entity
30
+ */
31
+ getShardId(entityId: string, _metadata?: Partial<EntityMetadata>): string;
32
+ /**
33
+ * Get shard IDs for multiple entities
34
+ */
35
+ getShardIds(entityIds: string[]): Map<string, string>;
36
+ /**
37
+ * Calculate remapping (graph partitioning requires recomputation)
38
+ */
39
+ remap(_oldShardCount: number, _newShardCount: number): Map<string, string>;
40
+ /**
41
+ * Add entity to a specific shard
42
+ */
43
+ assignEntity(entityId: string, shardId: string): void;
44
+ /**
45
+ * Add entity near related entity (locality)
46
+ */
47
+ assignEntityNear(entityId: string, relatedEntityId: string): void;
48
+ /**
49
+ * Get shard distribution statistics
50
+ */
51
+ getDistribution(): Map<string, number>;
52
+ /**
53
+ * Get all shard IDs
54
+ */
55
+ getShardIdsList(): string[];
56
+ /**
57
+ * Get shard count
58
+ */
59
+ get shardCount(): number;
60
+ /**
61
+ * Get entity count
62
+ */
63
+ get entityCount(): number;
64
+ }
65
+ //# sourceMappingURL=GraphPartitionStrategy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GraphPartitionStrategy.d.ts","sourceRoot":"","sources":["../../src/shard/GraphPartitionStrategy.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,iBAAiB,EACjB,qBAAqB,EACrB,cAAc,EACd,MAAM,EACN,YAAY,EACb,MAAM,aAAa,CAAC;AAErB;;GAEG;AACH,qBAAa,sBAAuB,YAAW,iBAAiB;IAC9D,SAAgB,IAAI,EAAE,qBAAqB,CAAW;IACtD,OAAO,CAAC,YAAY,CAAkC;IACtD,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,cAAc,CAAS;gBAEnB,QAAQ,EAAE,MAAM,EAAE;IAQ9B;;OAEG;IACG,UAAU,CACd,QAAQ,EAAE,MAAM,EAAE,EAClB,aAAa,EAAE,YAAY,EAAE,GAC5B,OAAO,CAAC,IAAI,CAAC;IA4BhB;;OAEG;IACH,OAAO,CAAC,uBAAuB;IA4D/B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAmChC;;OAEG;IACH,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,MAAM;IAIzE;;OAEG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IAQrD;;OAEG;IACH,KAAK,CAAC,cAAc,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IAM1E;;OAEG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAOrD;;OAEG;IACH,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,IAAI;IASjE;;OAEG;IACH,eAAe,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IActC;;OAEG;IACH,eAAe,IAAI,MAAM,EAAE;IAI3B;;OAEG;IACH,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED;;OAEG;IACH,IAAI,WAAW,IAAI,MAAM,CAExB;CACF"}