@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.
- package/README.md +66 -0
- package/dist/CacheManager.d.ts +107 -0
- package/dist/CacheManager.d.ts.map +1 -0
- package/dist/CacheManager.js +343 -0
- package/dist/CacheManager.js.map +1 -0
- package/dist/IndexManager.d.ts +103 -0
- package/dist/IndexManager.d.ts.map +1 -0
- package/dist/IndexManager.js +385 -0
- package/dist/IndexManager.js.map +1 -0
- package/dist/MigrationHelper.d.ts +91 -0
- package/dist/MigrationHelper.d.ts.map +1 -0
- package/dist/MigrationHelper.js +220 -0
- package/dist/MigrationHelper.js.map +1 -0
- package/dist/QueryCoordinator.d.ts +76 -0
- package/dist/QueryCoordinator.d.ts.map +1 -0
- package/dist/QueryCoordinator.js +298 -0
- package/dist/QueryCoordinator.js.map +1 -0
- package/dist/ShardManager.d.ts +48 -0
- package/dist/ShardManager.d.ts.map +1 -0
- package/dist/ShardManager.js +193 -0
- package/dist/ShardManager.js.map +1 -0
- package/dist/SyncController.d.ts +102 -0
- package/dist/SyncController.d.ts.map +1 -0
- package/dist/SyncController.js +286 -0
- package/dist/SyncController.js.map +1 -0
- package/dist/YataScaleManager.d.ts +75 -0
- package/dist/YataScaleManager.d.ts.map +1 -0
- package/dist/YataScaleManager.js +265 -0
- package/dist/YataScaleManager.js.map +1 -0
- package/dist/cache/CacheManager.d.ts +116 -0
- package/dist/cache/CacheManager.d.ts.map +1 -0
- package/dist/cache/CacheManager.js +286 -0
- package/dist/cache/CacheManager.js.map +1 -0
- package/dist/cache/InvalidationManager.d.ts +91 -0
- package/dist/cache/InvalidationManager.d.ts.map +1 -0
- package/dist/cache/InvalidationManager.js +155 -0
- package/dist/cache/InvalidationManager.js.map +1 -0
- package/dist/cache/L1Cache.d.ts +97 -0
- package/dist/cache/L1Cache.d.ts.map +1 -0
- package/dist/cache/L1Cache.js +225 -0
- package/dist/cache/L1Cache.js.map +1 -0
- package/dist/cache/L2Cache.d.ts +93 -0
- package/dist/cache/L2Cache.d.ts.map +1 -0
- package/dist/cache/L2Cache.js +248 -0
- package/dist/cache/L2Cache.js.map +1 -0
- package/dist/cache/L3Cache.d.ts +101 -0
- package/dist/cache/L3Cache.d.ts.map +1 -0
- package/dist/cache/L3Cache.js +229 -0
- package/dist/cache/L3Cache.js.map +1 -0
- package/dist/cache/index.d.ts +12 -0
- package/dist/cache/index.d.ts.map +1 -0
- package/dist/cache/index.js +11 -0
- package/dist/cache/index.js.map +1 -0
- package/dist/errors.d.ts +255 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +515 -0
- package/dist/errors.js.map +1 -0
- package/dist/index/BPlusTreeIndex.d.ts +101 -0
- package/dist/index/BPlusTreeIndex.d.ts.map +1 -0
- package/dist/index/BPlusTreeIndex.js +310 -0
- package/dist/index/BPlusTreeIndex.js.map +1 -0
- package/dist/index/BloomFilter.d.ts +85 -0
- package/dist/index/BloomFilter.d.ts.map +1 -0
- package/dist/index/BloomFilter.js +215 -0
- package/dist/index/BloomFilter.js.map +1 -0
- package/dist/index/FullTextIndex.d.ts +87 -0
- package/dist/index/FullTextIndex.d.ts.map +1 -0
- package/dist/index/FullTextIndex.js +213 -0
- package/dist/index/FullTextIndex.js.map +1 -0
- package/dist/index/GraphIndex.d.ts +116 -0
- package/dist/index/GraphIndex.d.ts.map +1 -0
- package/dist/index/GraphIndex.js +308 -0
- package/dist/index/GraphIndex.js.map +1 -0
- package/dist/index/IndexManager.d.ts +105 -0
- package/dist/index/IndexManager.d.ts.map +1 -0
- package/dist/index/IndexManager.js +287 -0
- package/dist/index/IndexManager.js.map +1 -0
- package/dist/index/index.d.ts +12 -0
- package/dist/index/index.d.ts.map +1 -0
- package/dist/index/index.js +11 -0
- package/dist/index/index.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -0
- package/dist/query/DistributedExecutor.d.ts +78 -0
- package/dist/query/DistributedExecutor.d.ts.map +1 -0
- package/dist/query/DistributedExecutor.js +232 -0
- package/dist/query/DistributedExecutor.js.map +1 -0
- package/dist/query/QueryCoordinator.d.ts +98 -0
- package/dist/query/QueryCoordinator.d.ts.map +1 -0
- package/dist/query/QueryCoordinator.js +246 -0
- package/dist/query/QueryCoordinator.js.map +1 -0
- package/dist/query/QueryPlanner.d.ts +88 -0
- package/dist/query/QueryPlanner.d.ts.map +1 -0
- package/dist/query/QueryPlanner.js +235 -0
- package/dist/query/QueryPlanner.js.map +1 -0
- package/dist/query/WorkerPool.d.ts +108 -0
- package/dist/query/WorkerPool.d.ts.map +1 -0
- package/dist/query/WorkerPool.js +195 -0
- package/dist/query/WorkerPool.js.map +1 -0
- package/dist/query/index.d.ts +11 -0
- package/dist/query/index.d.ts.map +1 -0
- package/dist/query/index.js +10 -0
- package/dist/query/index.js.map +1 -0
- package/dist/shard/GraphPartitionStrategy.d.ts +65 -0
- package/dist/shard/GraphPartitionStrategy.d.ts.map +1 -0
- package/dist/shard/GraphPartitionStrategy.js +208 -0
- package/dist/shard/GraphPartitionStrategy.js.map +1 -0
- package/dist/shard/HashPartitionStrategy.d.ts +56 -0
- package/dist/shard/HashPartitionStrategy.d.ts.map +1 -0
- package/dist/shard/HashPartitionStrategy.js +169 -0
- package/dist/shard/HashPartitionStrategy.js.map +1 -0
- package/dist/shard/RangePartitionStrategy.d.ts +63 -0
- package/dist/shard/RangePartitionStrategy.d.ts.map +1 -0
- package/dist/shard/RangePartitionStrategy.js +157 -0
- package/dist/shard/RangePartitionStrategy.js.map +1 -0
- package/dist/shard/Rebalancer.d.ts +70 -0
- package/dist/shard/Rebalancer.d.ts.map +1 -0
- package/dist/shard/Rebalancer.js +184 -0
- package/dist/shard/Rebalancer.js.map +1 -0
- package/dist/shard/ShardManager.d.ts +123 -0
- package/dist/shard/ShardManager.d.ts.map +1 -0
- package/dist/shard/ShardManager.js +353 -0
- package/dist/shard/ShardManager.js.map +1 -0
- package/dist/shard/ShardRouter.d.ts +102 -0
- package/dist/shard/ShardRouter.d.ts.map +1 -0
- package/dist/shard/ShardRouter.js +181 -0
- package/dist/shard/ShardRouter.js.map +1 -0
- package/dist/shard/index.d.ts +13 -0
- package/dist/shard/index.d.ts.map +1 -0
- package/dist/shard/index.js +12 -0
- package/dist/shard/index.js.map +1 -0
- package/dist/sync/ConflictResolver.d.ts +71 -0
- package/dist/sync/ConflictResolver.d.ts.map +1 -0
- package/dist/sync/ConflictResolver.js +214 -0
- package/dist/sync/ConflictResolver.js.map +1 -0
- package/dist/sync/SyncController.d.ts +150 -0
- package/dist/sync/SyncController.d.ts.map +1 -0
- package/dist/sync/SyncController.js +304 -0
- package/dist/sync/SyncController.js.map +1 -0
- package/dist/sync/VectorClock.d.ts +102 -0
- package/dist/sync/VectorClock.d.ts.map +1 -0
- package/dist/sync/VectorClock.js +189 -0
- package/dist/sync/VectorClock.js.map +1 -0
- package/dist/sync/WALManager.d.ts +120 -0
- package/dist/sync/WALManager.d.ts.map +1 -0
- package/dist/sync/WALManager.js +240 -0
- package/dist/sync/WALManager.js.map +1 -0
- package/dist/sync/index.d.ts +11 -0
- package/dist/sync/index.d.ts.map +1 -0
- package/dist/sync/index.js +10 -0
- package/dist/sync/index.js.map +1 -0
- package/dist/types.d.ts +323 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +7 -0
- package/dist/types.js.map +1 -0
- package/package.json +86 -0
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @nahisaho/yata-scale - YataScale Manager
|
|
3
|
+
*
|
|
4
|
+
* High-level manager for the entire yata-scale system
|
|
5
|
+
*/
|
|
6
|
+
import { type Result } from 'neverthrow';
|
|
7
|
+
import type { YataScaleConfig, YataScaleStats, Entity, Relationship, GraphQuery, QueryResult, BatchWriteResult } from './types.js';
|
|
8
|
+
import { InitializationError, EntityNotFoundError, EntityAlreadyExistsError, QueryError } from './errors.js';
|
|
9
|
+
import { ShardManager } from './ShardManager.js';
|
|
10
|
+
import { CacheManager } from './CacheManager.js';
|
|
11
|
+
import { IndexManager } from './IndexManager.js';
|
|
12
|
+
import { QueryCoordinator } from './QueryCoordinator.js';
|
|
13
|
+
import { SyncController } from './SyncController.js';
|
|
14
|
+
/**
|
|
15
|
+
* YataScale manager - main entry point for the system
|
|
16
|
+
*/
|
|
17
|
+
export declare class YataScaleManager {
|
|
18
|
+
private config;
|
|
19
|
+
private shardManager;
|
|
20
|
+
private cache;
|
|
21
|
+
private indexManager;
|
|
22
|
+
private queryCoordinator;
|
|
23
|
+
private syncController;
|
|
24
|
+
private initialized;
|
|
25
|
+
/**
|
|
26
|
+
* Initialize the system
|
|
27
|
+
*/
|
|
28
|
+
initialize(config: YataScaleConfig): Promise<Result<void, InitializationError>>;
|
|
29
|
+
private ensureInitialized;
|
|
30
|
+
/**
|
|
31
|
+
* Create an entity
|
|
32
|
+
*/
|
|
33
|
+
createEntity(entity: Entity): Promise<Result<Entity, EntityAlreadyExistsError>>;
|
|
34
|
+
/**
|
|
35
|
+
* Get an entity by ID
|
|
36
|
+
*/
|
|
37
|
+
getEntity(id: string): Promise<Result<Entity, EntityNotFoundError>>;
|
|
38
|
+
/**
|
|
39
|
+
* Update an entity
|
|
40
|
+
*/
|
|
41
|
+
updateEntity(entity: Entity): Promise<Result<Entity, EntityNotFoundError>>;
|
|
42
|
+
/**
|
|
43
|
+
* Delete an entity
|
|
44
|
+
*/
|
|
45
|
+
deleteEntity(id: string): Promise<Result<void, EntityNotFoundError>>;
|
|
46
|
+
/**
|
|
47
|
+
* Create a relationship
|
|
48
|
+
*/
|
|
49
|
+
createRelationship(relationship: Relationship): Promise<Result<Relationship, Error>>;
|
|
50
|
+
/**
|
|
51
|
+
* Delete a relationship
|
|
52
|
+
*/
|
|
53
|
+
deleteRelationship(id: string): Promise<Result<void, Error>>;
|
|
54
|
+
/**
|
|
55
|
+
* Execute a query
|
|
56
|
+
*/
|
|
57
|
+
query(graphQuery: GraphQuery): Promise<Result<QueryResult, QueryError>>;
|
|
58
|
+
/**
|
|
59
|
+
* Batch write entities
|
|
60
|
+
*/
|
|
61
|
+
batchWrite(entities: Entity[], relationships?: Relationship[]): Promise<BatchWriteResult>;
|
|
62
|
+
/**
|
|
63
|
+
* Get system statistics
|
|
64
|
+
*/
|
|
65
|
+
getStats(): YataScaleStats;
|
|
66
|
+
getShardManager(): ShardManager;
|
|
67
|
+
getCacheManager(): CacheManager;
|
|
68
|
+
getIndexManager(): IndexManager;
|
|
69
|
+
getQueryCoordinator(): QueryCoordinator;
|
|
70
|
+
getSyncController(): SyncController;
|
|
71
|
+
shutdown(): Promise<void>;
|
|
72
|
+
isInitialized(): boolean;
|
|
73
|
+
getConfig(): YataScaleConfig | null;
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=YataScaleManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"YataScaleManager.d.ts","sourceRoot":"","sources":["../src/YataScaleManager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAW,KAAK,MAAM,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACd,MAAM,EACN,YAAY,EACZ,UAAU,EACV,WAAW,EACX,gBAAgB,EACjB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,mBAAmB,EAGnB,mBAAmB,EACnB,wBAAwB,EACxB,UAAU,EACX,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD;;GAEG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAgC;IAC9C,OAAO,CAAC,YAAY,CAA6B;IACjD,OAAO,CAAC,KAAK,CAA6B;IAC1C,OAAO,CAAC,YAAY,CAA6B;IACjD,OAAO,CAAC,gBAAgB,CAAiC;IACzD,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,WAAW,CAAS;IAE5B;;OAEG;IACG,UAAU,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;IAqCrF,OAAO,CAAC,iBAAiB;IAMzB;;OAEG;IACG,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC;IAerF;;OAEG;IACG,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IAiBzE;;OAEG;IACG,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IAgBhF;;OAEG;IACG,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;IAe1E;;OAEG;IACG,kBAAkB,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IAU1F;;OAEG;IACG,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAUlE;;OAEG;IACG,KAAK,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IAiC7E;;OAEG;IACG,UAAU,CACd,QAAQ,EAAE,MAAM,EAAE,EAClB,aAAa,GAAE,YAAY,EAAO,GACjC,OAAO,CAAC,gBAAgB,CAAC;IAqC5B;;OAEG;IACH,QAAQ,IAAI,cAAc;IAsB1B,eAAe,IAAI,YAAY;IAK/B,eAAe,IAAI,YAAY;IAK/B,eAAe,IAAI,YAAY;IAK/B,mBAAmB,IAAI,gBAAgB;IAKvC,iBAAiB,IAAI,cAAc;IAK7B,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAiB/B,aAAa,IAAI,OAAO;IAIxB,SAAS,IAAI,eAAe,GAAG,IAAI;CAGpC"}
|
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @nahisaho/yata-scale - YataScale Manager
|
|
3
|
+
*
|
|
4
|
+
* High-level manager for the entire yata-scale system
|
|
5
|
+
*/
|
|
6
|
+
import { ok, err } from 'neverthrow';
|
|
7
|
+
import { InitializationError, AlreadyInitializedError, NotInitializedError, EntityNotFoundError, EntityAlreadyExistsError, } from './errors.js';
|
|
8
|
+
import { ShardManager } from './ShardManager.js';
|
|
9
|
+
import { CacheManager } from './CacheManager.js';
|
|
10
|
+
import { IndexManager } from './IndexManager.js';
|
|
11
|
+
import { QueryCoordinator } from './QueryCoordinator.js';
|
|
12
|
+
import { SyncController } from './SyncController.js';
|
|
13
|
+
/**
|
|
14
|
+
* YataScale manager - main entry point for the system
|
|
15
|
+
*/
|
|
16
|
+
export class YataScaleManager {
|
|
17
|
+
config = null;
|
|
18
|
+
shardManager = null;
|
|
19
|
+
cache = null;
|
|
20
|
+
indexManager = null;
|
|
21
|
+
queryCoordinator = null;
|
|
22
|
+
syncController = null;
|
|
23
|
+
initialized = false;
|
|
24
|
+
/**
|
|
25
|
+
* Initialize the system
|
|
26
|
+
*/
|
|
27
|
+
async initialize(config) {
|
|
28
|
+
if (this.initialized) {
|
|
29
|
+
return err(new AlreadyInitializedError());
|
|
30
|
+
}
|
|
31
|
+
try {
|
|
32
|
+
this.config = config;
|
|
33
|
+
this.shardManager = new ShardManager();
|
|
34
|
+
this.cache = new CacheManager(config.cache);
|
|
35
|
+
this.indexManager = new IndexManager();
|
|
36
|
+
this.queryCoordinator = new QueryCoordinator(config.query.maxConcurrency, 60000, config.query.defaultTimeout);
|
|
37
|
+
const nodeId = config.nodeId ?? `node_${Date.now()}`;
|
|
38
|
+
this.syncController = new SyncController(nodeId);
|
|
39
|
+
// Create shards
|
|
40
|
+
for (let i = 0; i < config.shards.count; i++) {
|
|
41
|
+
const shardId = `shard_${i}`;
|
|
42
|
+
this.shardManager.createShard(shardId, config.shards);
|
|
43
|
+
}
|
|
44
|
+
this.initialized = true;
|
|
45
|
+
return ok(undefined);
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
return err(new InitializationError(`Failed to initialize: ${error instanceof Error ? error.message : String(error)}`));
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
ensureInitialized() {
|
|
52
|
+
if (!this.initialized) {
|
|
53
|
+
throw new NotInitializedError();
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Create an entity
|
|
58
|
+
*/
|
|
59
|
+
async createEntity(entity) {
|
|
60
|
+
this.ensureInitialized();
|
|
61
|
+
const cached = await this.cache.getEntity(entity.id);
|
|
62
|
+
if (cached.isOk()) {
|
|
63
|
+
return err(new EntityAlreadyExistsError(entity.id));
|
|
64
|
+
}
|
|
65
|
+
await this.cache.setEntity(entity);
|
|
66
|
+
this.indexManager.indexEntity(entity);
|
|
67
|
+
this.syncController.recordCreate(entity);
|
|
68
|
+
return ok(entity);
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Get an entity by ID
|
|
72
|
+
*/
|
|
73
|
+
async getEntity(id) {
|
|
74
|
+
this.ensureInitialized();
|
|
75
|
+
const cached = await this.cache.getEntity(id);
|
|
76
|
+
if (cached.isOk()) {
|
|
77
|
+
return ok(cached.value);
|
|
78
|
+
}
|
|
79
|
+
const indexed = this.indexManager.getEntity(id);
|
|
80
|
+
if (indexed) {
|
|
81
|
+
await this.cache.setEntity(indexed);
|
|
82
|
+
return ok(indexed);
|
|
83
|
+
}
|
|
84
|
+
return err(new EntityNotFoundError(id));
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Update an entity
|
|
88
|
+
*/
|
|
89
|
+
async updateEntity(entity) {
|
|
90
|
+
this.ensureInitialized();
|
|
91
|
+
const existing = await this.getEntity(entity.id);
|
|
92
|
+
if (existing.isErr()) {
|
|
93
|
+
return err(existing.error);
|
|
94
|
+
}
|
|
95
|
+
await this.cache.setEntity(entity);
|
|
96
|
+
this.indexManager.removeEntity(entity.id);
|
|
97
|
+
this.indexManager.indexEntity(entity);
|
|
98
|
+
this.syncController.recordUpdate(entity, existing.value);
|
|
99
|
+
return ok(entity);
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Delete an entity
|
|
103
|
+
*/
|
|
104
|
+
async deleteEntity(id) {
|
|
105
|
+
this.ensureInitialized();
|
|
106
|
+
const existing = await this.getEntity(id);
|
|
107
|
+
if (existing.isErr()) {
|
|
108
|
+
return err(existing.error);
|
|
109
|
+
}
|
|
110
|
+
await this.cache.deleteEntity(id);
|
|
111
|
+
this.indexManager.removeEntity(id);
|
|
112
|
+
this.syncController.recordDelete(id, existing.value);
|
|
113
|
+
return ok(undefined);
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Create a relationship
|
|
117
|
+
*/
|
|
118
|
+
async createRelationship(relationship) {
|
|
119
|
+
this.ensureInitialized();
|
|
120
|
+
await this.cache.setRelationship(relationship);
|
|
121
|
+
this.indexManager.indexRelationship(relationship);
|
|
122
|
+
this.syncController.recordRelationshipCreate(relationship);
|
|
123
|
+
return ok(relationship);
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Delete a relationship
|
|
127
|
+
*/
|
|
128
|
+
async deleteRelationship(id) {
|
|
129
|
+
this.ensureInitialized();
|
|
130
|
+
await this.cache.deleteRelationship(id);
|
|
131
|
+
this.indexManager.removeRelationship(id);
|
|
132
|
+
this.syncController.recordRelationshipDelete(id);
|
|
133
|
+
return ok(undefined);
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Execute a query
|
|
137
|
+
*/
|
|
138
|
+
async query(graphQuery) {
|
|
139
|
+
this.ensureInitialized();
|
|
140
|
+
const shards = this.shardManager.getAllShards();
|
|
141
|
+
const queryFn = async (_shardId, query) => {
|
|
142
|
+
const entities = [];
|
|
143
|
+
const relationships = [];
|
|
144
|
+
if (query.startEntityIds) {
|
|
145
|
+
for (const id of query.startEntityIds) {
|
|
146
|
+
const entity = this.indexManager.getEntity(id);
|
|
147
|
+
if (entity) {
|
|
148
|
+
entities.push(entity);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
if (query.entityIds) {
|
|
153
|
+
for (const id of query.entityIds) {
|
|
154
|
+
const entity = this.indexManager.getEntity(id);
|
|
155
|
+
if (entity) {
|
|
156
|
+
entities.push(entity);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
return { entities, relationships };
|
|
161
|
+
};
|
|
162
|
+
return await this.queryCoordinator.query(graphQuery, shards, queryFn);
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Batch write entities
|
|
166
|
+
*/
|
|
167
|
+
async batchWrite(entities, relationships = []) {
|
|
168
|
+
this.ensureInitialized();
|
|
169
|
+
const succeeded = [];
|
|
170
|
+
const failed = [];
|
|
171
|
+
const startTime = Date.now();
|
|
172
|
+
for (const entity of entities) {
|
|
173
|
+
const result = await this.createEntity(entity);
|
|
174
|
+
if (result.isOk()) {
|
|
175
|
+
succeeded.push(entity.id);
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
const updateResult = await this.updateEntity(entity);
|
|
179
|
+
if (updateResult.isOk()) {
|
|
180
|
+
succeeded.push(entity.id);
|
|
181
|
+
}
|
|
182
|
+
else {
|
|
183
|
+
failed.push({ id: entity.id, error: updateResult.error.message });
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
for (const rel of relationships) {
|
|
188
|
+
const result = await this.createRelationship(rel);
|
|
189
|
+
if (result.isOk()) {
|
|
190
|
+
succeeded.push(rel.id);
|
|
191
|
+
}
|
|
192
|
+
else {
|
|
193
|
+
failed.push({ id: rel.id, error: result.error.message });
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
return {
|
|
197
|
+
succeeded,
|
|
198
|
+
failed,
|
|
199
|
+
totalTime: Date.now() - startTime,
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Get system statistics
|
|
204
|
+
*/
|
|
205
|
+
getStats() {
|
|
206
|
+
this.ensureInitialized();
|
|
207
|
+
const cacheStats = this.cache.getAllStats();
|
|
208
|
+
const indexStats = this.indexManager.getAllStats();
|
|
209
|
+
const syncStats = this.syncController.getStats();
|
|
210
|
+
const shardStats = this.shardManager.getStats();
|
|
211
|
+
return {
|
|
212
|
+
entityCount: this.indexManager.entityCount,
|
|
213
|
+
relationshipCount: this.indexManager.relationshipCount,
|
|
214
|
+
shardCount: shardStats.totalShards,
|
|
215
|
+
cacheStats: cacheStats.l1,
|
|
216
|
+
indexStats: indexStats[0],
|
|
217
|
+
syncStats: {
|
|
218
|
+
nodeId: syncStats.nodeId,
|
|
219
|
+
activeSessions: syncStats.activeSessions,
|
|
220
|
+
walSequence: syncStats.walSequence,
|
|
221
|
+
},
|
|
222
|
+
};
|
|
223
|
+
}
|
|
224
|
+
getShardManager() {
|
|
225
|
+
this.ensureInitialized();
|
|
226
|
+
return this.shardManager;
|
|
227
|
+
}
|
|
228
|
+
getCacheManager() {
|
|
229
|
+
this.ensureInitialized();
|
|
230
|
+
return this.cache;
|
|
231
|
+
}
|
|
232
|
+
getIndexManager() {
|
|
233
|
+
this.ensureInitialized();
|
|
234
|
+
return this.indexManager;
|
|
235
|
+
}
|
|
236
|
+
getQueryCoordinator() {
|
|
237
|
+
this.ensureInitialized();
|
|
238
|
+
return this.queryCoordinator;
|
|
239
|
+
}
|
|
240
|
+
getSyncController() {
|
|
241
|
+
this.ensureInitialized();
|
|
242
|
+
return this.syncController;
|
|
243
|
+
}
|
|
244
|
+
async shutdown() {
|
|
245
|
+
if (!this.initialized) {
|
|
246
|
+
return;
|
|
247
|
+
}
|
|
248
|
+
await this.cache?.close();
|
|
249
|
+
await this.queryCoordinator?.shutdown();
|
|
250
|
+
this.initialized = false;
|
|
251
|
+
this.config = null;
|
|
252
|
+
this.shardManager = null;
|
|
253
|
+
this.cache = null;
|
|
254
|
+
this.indexManager = null;
|
|
255
|
+
this.queryCoordinator = null;
|
|
256
|
+
this.syncController = null;
|
|
257
|
+
}
|
|
258
|
+
isInitialized() {
|
|
259
|
+
return this.initialized;
|
|
260
|
+
}
|
|
261
|
+
getConfig() {
|
|
262
|
+
return this.config;
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
//# sourceMappingURL=YataScaleManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"YataScaleManager.js","sourceRoot":"","sources":["../src/YataScaleManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @nahisaho/yata-scale - Cache Manager
|
|
3
|
+
*
|
|
4
|
+
* Coordinates multi-tier caching (L1/L2/L3)
|
|
5
|
+
*/
|
|
6
|
+
import { type Result } from 'neverthrow';
|
|
7
|
+
import type { CacheConfig, CacheStats, Entity, Relationship } from '../types.js';
|
|
8
|
+
import { CacheMissError } from '../errors.js';
|
|
9
|
+
import { L1Cache } from './L1Cache.js';
|
|
10
|
+
import { L2Cache } from './L2Cache.js';
|
|
11
|
+
import { L3Cache } from './L3Cache.js';
|
|
12
|
+
import { InvalidationManager } from './InvalidationManager.js';
|
|
13
|
+
/**
|
|
14
|
+
* Cache manager for multi-tier caching
|
|
15
|
+
*/
|
|
16
|
+
export declare class CacheManager {
|
|
17
|
+
private readonly l1;
|
|
18
|
+
private readonly l2;
|
|
19
|
+
private readonly l3;
|
|
20
|
+
private readonly invalidation;
|
|
21
|
+
private readonly config;
|
|
22
|
+
constructor(config: CacheConfig);
|
|
23
|
+
/**
|
|
24
|
+
* Get entity with cache hierarchy
|
|
25
|
+
*/
|
|
26
|
+
getEntity(id: string): Promise<Result<Entity, CacheMissError>>;
|
|
27
|
+
/**
|
|
28
|
+
* Set entity in cache
|
|
29
|
+
*/
|
|
30
|
+
setEntity(entity: Entity): Promise<void>;
|
|
31
|
+
/**
|
|
32
|
+
* Delete entity from all tiers
|
|
33
|
+
*/
|
|
34
|
+
deleteEntity(id: string): Promise<void>;
|
|
35
|
+
/**
|
|
36
|
+
* Get relationship with cache hierarchy
|
|
37
|
+
*/
|
|
38
|
+
getRelationship(id: string): Promise<Result<Relationship, CacheMissError>>;
|
|
39
|
+
/**
|
|
40
|
+
* Set relationship in cache
|
|
41
|
+
*/
|
|
42
|
+
setRelationship(relationship: Relationship): Promise<void>;
|
|
43
|
+
/**
|
|
44
|
+
* Delete relationship from all tiers
|
|
45
|
+
*/
|
|
46
|
+
deleteRelationship(id: string): Promise<void>;
|
|
47
|
+
/**
|
|
48
|
+
* Get multiple entities
|
|
49
|
+
*/
|
|
50
|
+
getEntities(ids: string[]): Promise<Map<string, Entity>>;
|
|
51
|
+
/**
|
|
52
|
+
* Set multiple entities
|
|
53
|
+
*/
|
|
54
|
+
setEntities(entities: Entity[]): Promise<void>;
|
|
55
|
+
/**
|
|
56
|
+
* Handle invalidation event
|
|
57
|
+
*/
|
|
58
|
+
private handleInvalidation;
|
|
59
|
+
/**
|
|
60
|
+
* Invalidate entity across all tiers
|
|
61
|
+
*/
|
|
62
|
+
invalidateEntity(id: string): void;
|
|
63
|
+
/**
|
|
64
|
+
* Invalidate multiple entities
|
|
65
|
+
*/
|
|
66
|
+
invalidateEntities(ids: string[]): void;
|
|
67
|
+
/**
|
|
68
|
+
* Flush invalidations
|
|
69
|
+
*/
|
|
70
|
+
flushInvalidations(): void;
|
|
71
|
+
/**
|
|
72
|
+
* Prewarm cache with entities
|
|
73
|
+
*/
|
|
74
|
+
prewarm(entities: Entity[]): Promise<void>;
|
|
75
|
+
/**
|
|
76
|
+
* Clear all caches
|
|
77
|
+
*/
|
|
78
|
+
clear(): Promise<void>;
|
|
79
|
+
/**
|
|
80
|
+
* Perform tier demotion (move cold data down)
|
|
81
|
+
*/
|
|
82
|
+
performDemotion(): Promise<number>;
|
|
83
|
+
/**
|
|
84
|
+
* Get statistics for all tiers
|
|
85
|
+
*/
|
|
86
|
+
getAllStats(): {
|
|
87
|
+
l1: CacheStats;
|
|
88
|
+
l2: CacheStats;
|
|
89
|
+
l3: CacheStats;
|
|
90
|
+
};
|
|
91
|
+
/**
|
|
92
|
+
* Get combined statistics
|
|
93
|
+
*/
|
|
94
|
+
getCombinedStats(): CacheStats;
|
|
95
|
+
/**
|
|
96
|
+
* Get L1 cache
|
|
97
|
+
*/
|
|
98
|
+
getL1(): L1Cache;
|
|
99
|
+
/**
|
|
100
|
+
* Get L2 cache
|
|
101
|
+
*/
|
|
102
|
+
getL2(): L2Cache;
|
|
103
|
+
/**
|
|
104
|
+
* Get L3 cache
|
|
105
|
+
*/
|
|
106
|
+
getL3(): L3Cache;
|
|
107
|
+
/**
|
|
108
|
+
* Get invalidation manager
|
|
109
|
+
*/
|
|
110
|
+
getInvalidationManager(): InvalidationManager;
|
|
111
|
+
/**
|
|
112
|
+
* Close the cache manager
|
|
113
|
+
*/
|
|
114
|
+
close(): Promise<void>;
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=CacheManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CacheManager.d.ts","sourceRoot":"","sources":["../../src/cache/CacheManager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAW,KAAK,MAAM,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACjF,OAAO,EAAE,cAAc,EAAc,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,mBAAmB,EAA0B,MAAM,0BAA0B,CAAC;AAEvF;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAU;IAC7B,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAU;IAC7B,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAU;IAC7B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAsB;IACnD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;gBAEzB,MAAM,EAAE,WAAW;IAa/B;;OAEG;IACG,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IA2BpE;;OAEG;IACG,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ9C;;OAEG;IACG,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAO7C;;OAEG;IACG,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;IAyBhF;;OAEG;IACG,eAAe,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAKhE;;OAEG;IACG,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOnD;;OAEG;IACG,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IA6C9D;;OAEG;IACG,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAKpD;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAW1B;;OAEG;IACH,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAIlC;;OAEG;IACH,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI;IAIvC;;OAEG;IACH,kBAAkB,IAAI,IAAI;IAI1B;;OAEG;IACG,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAKhD;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAM5B;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC;IAYxC;;OAEG;IACH,WAAW,IAAI;QAAE,EAAE,EAAE,UAAU,CAAC;QAAC,EAAE,EAAE,UAAU,CAAC;QAAC,EAAE,EAAE,UAAU,CAAA;KAAE;IAQjE;;OAEG;IACH,gBAAgB,IAAI,UAAU;IAoB9B;;OAEG;IACH,KAAK,IAAI,OAAO;IAIhB;;OAEG;IACH,KAAK,IAAI,OAAO;IAIhB;;OAEG;IACH,KAAK,IAAI,OAAO;IAIhB;;OAEG;IACH,sBAAsB,IAAI,mBAAmB;IAI7C;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAI7B"}
|