@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 @@
1
+ {"version":3,"file":"RangePartitionStrategy.js","sourceRoot":"","sources":["../../src/shard/RangePartitionStrategy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * @nahisaho/yata-scale - Rebalancer
3
+ *
4
+ * Handles shard rebalancing operations
5
+ */
6
+ import { type Result } from 'neverthrow';
7
+ import type { RebalanceOptions, RebalanceJob, PartitionStrategy } from '../types.js';
8
+ import { RebalanceError } from '../errors.js';
9
+ import type { ShardStorage } from './ShardManager.js';
10
+ /**
11
+ * Rebalance plan
12
+ */
13
+ export interface RebalancePlan {
14
+ readonly moves: EntityMove[];
15
+ readonly estimatedDuration: number;
16
+ readonly affectedShards: string[];
17
+ }
18
+ /**
19
+ * Entity move operation
20
+ */
21
+ export interface EntityMove {
22
+ readonly entityId: string;
23
+ readonly fromShard: string;
24
+ readonly toShard: string;
25
+ }
26
+ /**
27
+ * Rebalance progress
28
+ */
29
+ export interface RebalanceProgress {
30
+ readonly jobId: string;
31
+ readonly totalMoves: number;
32
+ readonly completedMoves: number;
33
+ readonly failedMoves: number;
34
+ readonly currentMove?: EntityMove;
35
+ }
36
+ /**
37
+ * Rebalancer for moving entities between shards
38
+ */
39
+ export declare class Rebalancer {
40
+ private readonly strategy;
41
+ private readonly getStorage;
42
+ private activeJobs;
43
+ private cancelled;
44
+ constructor(strategy: PartitionStrategy, getStorage: (shardId: string) => ShardStorage | undefined);
45
+ /**
46
+ * Plan a rebalance operation
47
+ */
48
+ planRebalance(currentDistribution: Map<string, string[]>, options?: RebalanceOptions): Promise<Result<RebalancePlan, RebalanceError>>;
49
+ /**
50
+ * Execute a rebalance plan
51
+ */
52
+ executeRebalance(plan: RebalancePlan, options?: RebalanceOptions): Promise<Result<RebalanceJob, RebalanceError>>;
53
+ /**
54
+ * Execute a single move
55
+ */
56
+ private executeMove;
57
+ /**
58
+ * Cancel an active rebalance
59
+ */
60
+ cancel(jobId: string): boolean;
61
+ /**
62
+ * Get progress of an active rebalance
63
+ */
64
+ getProgress(jobId: string): RebalanceProgress | undefined;
65
+ /**
66
+ * Check if a rebalance is active
67
+ */
68
+ isActive(jobId: string): boolean;
69
+ }
70
+ //# sourceMappingURL=Rebalancer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Rebalancer.d.ts","sourceRoot":"","sources":["../../src/shard/Rebalancer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAW,KAAK,MAAM,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,KAAK,EAEV,gBAAgB,EAChB,YAAY,EACZ,iBAAiB,EAClB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,KAAK,EAAE,UAAU,EAAE,CAAC;IAC7B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,cAAc,EAAE,MAAM,EAAE,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,CAAC,EAAE,UAAU,CAAC;CACnC;AAED;;GAEG;AACH,qBAAa,UAAU;IAKnB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAL7B,OAAO,CAAC,UAAU,CAA6C;IAC/D,OAAO,CAAC,SAAS,CAA0B;gBAGxB,QAAQ,EAAE,iBAAiB,EAC3B,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,YAAY,GAAG,SAAS;IAG5E;;OAEG;IACG,aAAa,CACjB,mBAAmB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAC1C,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;IAyDjD;;OAEG;IACG,gBAAgB,CACpB,IAAI,EAAE,aAAa,EACnB,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;IA4EhD;;OAEG;YACW,WAAW;IAyCzB;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAQ9B;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAIzD;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;CAGjC"}
@@ -0,0 +1,184 @@
1
+ /**
2
+ * @nahisaho/yata-scale - Rebalancer
3
+ *
4
+ * Handles shard rebalancing operations
5
+ */
6
+ import { ok, err } from 'neverthrow';
7
+ import { RebalanceError } from '../errors.js';
8
+ /**
9
+ * Rebalancer for moving entities between shards
10
+ */
11
+ export class Rebalancer {
12
+ strategy;
13
+ getStorage;
14
+ activeJobs = new Map();
15
+ cancelled = new Set();
16
+ constructor(strategy, getStorage) {
17
+ this.strategy = strategy;
18
+ this.getStorage = getStorage;
19
+ }
20
+ /**
21
+ * Plan a rebalance operation
22
+ */
23
+ async planRebalance(currentDistribution, options) {
24
+ const moves = [];
25
+ const affectedShards = new Set();
26
+ // Get target shards
27
+ const targetShards = options?.targetShards ?? [...currentDistribution.keys()];
28
+ // Calculate ideal distribution
29
+ const totalEntities = [...currentDistribution.values()].reduce((sum, entities) => sum + entities.length, 0);
30
+ const idealPerShard = Math.ceil(totalEntities / targetShards.length);
31
+ // Find overloaded and underloaded shards
32
+ const overloaded = new Map();
33
+ const underloaded = new Map();
34
+ for (const shardId of targetShards) {
35
+ const entities = currentDistribution.get(shardId) ?? [];
36
+ const excess = entities.length - idealPerShard;
37
+ if (excess > 0) {
38
+ // This shard has too many entities
39
+ overloaded.set(shardId, entities.slice(0, excess));
40
+ affectedShards.add(shardId);
41
+ }
42
+ else if (excess < 0) {
43
+ // This shard can accept more entities
44
+ underloaded.set(shardId, -excess);
45
+ affectedShards.add(shardId);
46
+ }
47
+ }
48
+ // Create move plan
49
+ for (const [fromShard, excessEntities] of overloaded) {
50
+ for (const entityId of excessEntities) {
51
+ // Find shard with capacity
52
+ for (const [toShard, capacity] of underloaded) {
53
+ if (capacity > 0) {
54
+ moves.push({ entityId, fromShard, toShard });
55
+ underloaded.set(toShard, capacity - 1);
56
+ break;
57
+ }
58
+ }
59
+ }
60
+ }
61
+ // Estimate duration (1ms per move as baseline)
62
+ const estimatedDuration = moves.length * 10;
63
+ return ok({
64
+ moves,
65
+ estimatedDuration,
66
+ affectedShards: [...affectedShards],
67
+ });
68
+ }
69
+ /**
70
+ * Execute a rebalance plan
71
+ */
72
+ async executeRebalance(plan, options) {
73
+ const jobId = `rebalance-${Date.now()}`;
74
+ const maxConcurrency = options?.maxConcurrency ?? 10;
75
+ const progress = {
76
+ jobId,
77
+ totalMoves: plan.moves.length,
78
+ completedMoves: 0,
79
+ failedMoves: 0,
80
+ };
81
+ this.activeJobs.set(jobId, progress);
82
+ // Dry run just returns the plan
83
+ if (options?.dryRun) {
84
+ const job = {
85
+ jobId,
86
+ status: 'completed',
87
+ progress: 100,
88
+ entitiesMoved: 0,
89
+ startedAt: new Date(),
90
+ completedAt: new Date(),
91
+ };
92
+ return ok(job);
93
+ }
94
+ // Execute moves in batches
95
+ const startedAt = new Date();
96
+ let completedMoves = 0;
97
+ let failedMoves = 0;
98
+ for (let i = 0; i < plan.moves.length; i += maxConcurrency) {
99
+ // Check for cancellation
100
+ if (this.cancelled.has(jobId)) {
101
+ this.activeJobs.delete(jobId);
102
+ this.cancelled.delete(jobId);
103
+ return err(new RebalanceError('Rebalance cancelled', jobId));
104
+ }
105
+ const batch = plan.moves.slice(i, i + maxConcurrency);
106
+ const results = await Promise.allSettled(batch.map((move) => this.executeMove(move)));
107
+ for (const result of results) {
108
+ if (result.status === 'fulfilled' && result.value.isOk()) {
109
+ completedMoves++;
110
+ }
111
+ else {
112
+ failedMoves++;
113
+ }
114
+ }
115
+ // Update progress
116
+ this.activeJobs.set(jobId, {
117
+ ...progress,
118
+ completedMoves,
119
+ failedMoves,
120
+ currentMove: batch[batch.length - 1],
121
+ });
122
+ }
123
+ this.activeJobs.delete(jobId);
124
+ const job = {
125
+ jobId,
126
+ status: failedMoves === 0 ? 'completed' : 'completed',
127
+ progress: 100,
128
+ entitiesMoved: completedMoves,
129
+ startedAt,
130
+ completedAt: new Date(),
131
+ error: failedMoves > 0 ? `${failedMoves} moves failed` : undefined,
132
+ };
133
+ return ok(job);
134
+ }
135
+ /**
136
+ * Execute a single move
137
+ */
138
+ async executeMove(move) {
139
+ const fromStorage = this.getStorage(move.fromShard);
140
+ const toStorage = this.getStorage(move.toShard);
141
+ if (!fromStorage || !toStorage) {
142
+ return err(new RebalanceError(`Storage not found for shard: ${!fromStorage ? move.fromShard : move.toShard}`, 'move'));
143
+ }
144
+ try {
145
+ // Read entity from source
146
+ const entity = await fromStorage.getEntity(move.entityId);
147
+ if (!entity) {
148
+ // Entity doesn't exist, skip
149
+ return ok(undefined);
150
+ }
151
+ // Write to destination
152
+ await toStorage.putEntity(entity);
153
+ // Delete from source
154
+ await fromStorage.deleteEntity(move.entityId);
155
+ return ok(undefined);
156
+ }
157
+ catch (error) {
158
+ return err(new RebalanceError(`Failed to move entity ${move.entityId}: ${error instanceof Error ? error.message : String(error)}`, 'move', error instanceof Error ? error : undefined));
159
+ }
160
+ }
161
+ /**
162
+ * Cancel an active rebalance
163
+ */
164
+ cancel(jobId) {
165
+ if (this.activeJobs.has(jobId)) {
166
+ this.cancelled.add(jobId);
167
+ return true;
168
+ }
169
+ return false;
170
+ }
171
+ /**
172
+ * Get progress of an active rebalance
173
+ */
174
+ getProgress(jobId) {
175
+ return this.activeJobs.get(jobId);
176
+ }
177
+ /**
178
+ * Check if a rebalance is active
179
+ */
180
+ isActive(jobId) {
181
+ return this.activeJobs.has(jobId);
182
+ }
183
+ }
184
+ //# sourceMappingURL=Rebalancer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Rebalancer.js","sourceRoot":"","sources":["../../src/shard/Rebalancer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,123 @@
1
+ /**
2
+ * @nahisaho/yata-scale - Shard Manager
3
+ *
4
+ * Manages shard lifecycle, health, and operations
5
+ */
6
+ import { type Result } from 'neverthrow';
7
+ import type { ShardConfig, ShardInfo, ShardHealth, RebalanceOptions, RebalanceJob, PartitionStrategyType, Entity, Relationship } from '../types.js';
8
+ import { ShardError, ShardNotFoundError, ShardUnavailableError, RebalanceError } from '../errors.js';
9
+ import { ShardRouter } from './ShardRouter.js';
10
+ /**
11
+ * Shard storage interface
12
+ */
13
+ export interface ShardStorage {
14
+ readonly shardId: string;
15
+ getEntity(id: string): Promise<Entity | undefined>;
16
+ putEntity(entity: Entity): Promise<void>;
17
+ deleteEntity(id: string): Promise<boolean>;
18
+ getRelationship(id: string): Promise<Relationship | undefined>;
19
+ putRelationship(relationship: Relationship): Promise<void>;
20
+ deleteRelationship(id: string): Promise<boolean>;
21
+ getEntities(ids: string[]): Promise<Map<string, Entity>>;
22
+ putEntities(entities: Entity[]): Promise<void>;
23
+ getEntityCount(): Promise<number>;
24
+ getRelationshipCount(): Promise<number>;
25
+ getSizeBytes(): Promise<number>;
26
+ open(): Promise<void>;
27
+ close(): Promise<void>;
28
+ clear(): Promise<void>;
29
+ }
30
+ /**
31
+ * Shard manager for lifecycle and operations
32
+ */
33
+ export declare class ShardManager {
34
+ private readonly strategyType;
35
+ private readonly storageFactory;
36
+ private shards;
37
+ private storage;
38
+ private router;
39
+ private rebalanceJobs;
40
+ private healthCheckInterval?;
41
+ constructor(strategyType: PartitionStrategyType, storageFactory: (config: ShardConfig) => ShardStorage);
42
+ /**
43
+ * Initialize with shard configurations
44
+ */
45
+ initialize(configs: ShardConfig[]): Promise<void>;
46
+ /**
47
+ * Create a new shard
48
+ */
49
+ createShard(config: ShardConfig): Promise<Result<ShardInfo, ShardError>>;
50
+ /**
51
+ * Remove a shard
52
+ */
53
+ removeShard(shardId: string, graceful?: boolean): Promise<Result<void, ShardError>>;
54
+ /**
55
+ * Get shard info
56
+ */
57
+ getShardInfo(shardId: string): Result<ShardInfo, ShardNotFoundError>;
58
+ /**
59
+ * List all shards
60
+ */
61
+ listShards(): ShardInfo[];
62
+ /**
63
+ * Get shard for an entity
64
+ */
65
+ getShardForEntity(entityId: string): Result<ShardInfo, ShardNotFoundError | ShardUnavailableError>;
66
+ /**
67
+ * Get storage for an entity
68
+ */
69
+ getStorageForEntity(entityId: string): Result<ShardStorage, ShardNotFoundError | ShardUnavailableError>;
70
+ /**
71
+ * Start rebalancing
72
+ */
73
+ startRebalance(options?: RebalanceOptions): Promise<Result<RebalanceJob, RebalanceError>>;
74
+ /**
75
+ * Execute rebalance operation
76
+ */
77
+ private executeRebalance;
78
+ /**
79
+ * Get rebalance status
80
+ */
81
+ getRebalanceStatus(jobId: string): Result<RebalanceJob, RebalanceError>;
82
+ /**
83
+ * Cancel rebalance
84
+ */
85
+ cancelRebalance(jobId: string): Promise<Result<void, RebalanceError>>;
86
+ /**
87
+ * Check health of all shards
88
+ */
89
+ checkHealth(): Promise<Map<string, ShardHealth>>;
90
+ /**
91
+ * Repair a shard
92
+ */
93
+ repairShard(shardId: string): Promise<Result<void, ShardError>>;
94
+ /**
95
+ * Get the router
96
+ */
97
+ getRouter(): ShardRouter;
98
+ /**
99
+ * Get storage for a shard
100
+ */
101
+ getStorage(shardId: string): ShardStorage | undefined;
102
+ /**
103
+ * Close all shards
104
+ */
105
+ close(): Promise<void>;
106
+ /**
107
+ * Update shard status
108
+ */
109
+ private updateShardStatus;
110
+ /**
111
+ * Create a connection object for router
112
+ */
113
+ private createConnection;
114
+ /**
115
+ * Start health check interval
116
+ */
117
+ private startHealthCheck;
118
+ /**
119
+ * Stop health check interval
120
+ */
121
+ private stopHealthCheck;
122
+ }
123
+ //# sourceMappingURL=ShardManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ShardManager.d.ts","sourceRoot":"","sources":["../../src/shard/ShardManager.ts"],"names":[],"mappings":"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"}