@nahisaho/yata-local 1.6.6 → 1.7.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/dist/index-optimizer.d.ts +254 -0
- package/dist/index-optimizer.d.ts.map +1 -0
- package/dist/index-optimizer.js +525 -0
- package/dist/index-optimizer.js.map +1 -0
- package/dist/index.d.ts +35 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +47 -1
- package/dist/index.js.map +1 -1
- package/dist/io.d.ts +143 -0
- package/dist/io.d.ts.map +1 -1
- package/dist/io.js +553 -0
- package/dist/io.js.map +1 -1
- package/dist/sync.d.ts +221 -0
- package/dist/sync.d.ts.map +1 -0
- package/dist/sync.js +404 -0
- package/dist/sync.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,525 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Index Optimizer for YATA Local
|
|
3
|
+
*
|
|
4
|
+
* Analyzes database indexes and provides optimization recommendations.
|
|
5
|
+
*
|
|
6
|
+
* @packageDocumentation
|
|
7
|
+
* @module @nahisaho/yata-local/index-optimizer
|
|
8
|
+
*
|
|
9
|
+
* @see REQ-YI-IDX-001 - Index Analysis
|
|
10
|
+
* @see REQ-YI-IDX-002 - Composite Index Generation
|
|
11
|
+
* @see REQ-YI-IDX-003 - Query Performance Monitoring
|
|
12
|
+
* @see DES-YATA-IMPROVEMENTS-001 - Design Document
|
|
13
|
+
*/
|
|
14
|
+
// ============================================================
|
|
15
|
+
// Constants
|
|
16
|
+
// ============================================================
|
|
17
|
+
/**
|
|
18
|
+
* Common query patterns that benefit from composite indexes
|
|
19
|
+
*/
|
|
20
|
+
const COMPOSITE_INDEX_PATTERNS = [
|
|
21
|
+
{
|
|
22
|
+
table: 'entities',
|
|
23
|
+
columns: ['namespace', 'type'],
|
|
24
|
+
reason: 'Frequent filtering by namespace and type together',
|
|
25
|
+
improvement: 40,
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
table: 'entities',
|
|
29
|
+
columns: ['type', 'updated_at'],
|
|
30
|
+
reason: 'Recent entities by type query optimization',
|
|
31
|
+
improvement: 35,
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
table: 'relationships',
|
|
35
|
+
columns: ['source_id', 'type'],
|
|
36
|
+
reason: 'Outgoing relationships by type lookup',
|
|
37
|
+
improvement: 45,
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
table: 'relationships',
|
|
41
|
+
columns: ['target_id', 'type'],
|
|
42
|
+
reason: 'Incoming relationships by type lookup',
|
|
43
|
+
improvement: 45,
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
table: 'patterns',
|
|
47
|
+
columns: ['category', 'confidence'],
|
|
48
|
+
reason: 'High-confidence patterns by category query',
|
|
49
|
+
improvement: 30,
|
|
50
|
+
},
|
|
51
|
+
];
|
|
52
|
+
/**
|
|
53
|
+
* Schema for query logging table
|
|
54
|
+
* @see REQ-YI-IDX-003
|
|
55
|
+
*/
|
|
56
|
+
export const QUERY_LOG_SCHEMA = `
|
|
57
|
+
-- Query log table for performance monitoring
|
|
58
|
+
CREATE TABLE IF NOT EXISTS query_log (
|
|
59
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
60
|
+
query_hash TEXT NOT NULL,
|
|
61
|
+
query_pattern TEXT NOT NULL,
|
|
62
|
+
execution_time_ms INTEGER NOT NULL,
|
|
63
|
+
rows_examined INTEGER,
|
|
64
|
+
indexes_used TEXT,
|
|
65
|
+
timestamp TEXT NOT NULL
|
|
66
|
+
);
|
|
67
|
+
|
|
68
|
+
CREATE INDEX IF NOT EXISTS idx_query_log_hash ON query_log(query_hash);
|
|
69
|
+
CREATE INDEX IF NOT EXISTS idx_query_log_timestamp ON query_log(timestamp);
|
|
70
|
+
CREATE INDEX IF NOT EXISTS idx_query_log_time ON query_log(execution_time_ms);
|
|
71
|
+
`;
|
|
72
|
+
// ============================================================
|
|
73
|
+
// IndexOptimizer Class
|
|
74
|
+
// ============================================================
|
|
75
|
+
/**
|
|
76
|
+
* Index Optimizer for YATA Local database
|
|
77
|
+
*
|
|
78
|
+
* Provides index analysis, recommendations, and monitoring capabilities.
|
|
79
|
+
*
|
|
80
|
+
* @example
|
|
81
|
+
* ```typescript
|
|
82
|
+
* const optimizer = new IndexOptimizer(db);
|
|
83
|
+
* const result = await optimizer.analyzeIndexes();
|
|
84
|
+
* console.log(result.recommendations);
|
|
85
|
+
* ```
|
|
86
|
+
*
|
|
87
|
+
* @see REQ-YI-IDX-001
|
|
88
|
+
* @see REQ-YI-IDX-002
|
|
89
|
+
* @see REQ-YI-IDX-003
|
|
90
|
+
*/
|
|
91
|
+
export class IndexOptimizer {
|
|
92
|
+
db;
|
|
93
|
+
monitoringEnabled = false;
|
|
94
|
+
constructor(db) {
|
|
95
|
+
this.db = db;
|
|
96
|
+
}
|
|
97
|
+
// ============================================================
|
|
98
|
+
// Index Analysis (REQ-YI-IDX-001)
|
|
99
|
+
// ============================================================
|
|
100
|
+
/**
|
|
101
|
+
* Analyze database indexes and generate recommendations
|
|
102
|
+
*
|
|
103
|
+
* Performance target: Complete within 5 seconds for up to 100,000 entities
|
|
104
|
+
*
|
|
105
|
+
* @param options - Analysis options
|
|
106
|
+
* @returns Index analysis result with recommendations
|
|
107
|
+
*
|
|
108
|
+
* @see REQ-YI-IDX-001
|
|
109
|
+
*/
|
|
110
|
+
async analyzeIndexes(options = {}) {
|
|
111
|
+
const startTime = Date.now();
|
|
112
|
+
const { includeQueryStats = true, maxRecommendations = 10, minImprovementThreshold = 10, } = options;
|
|
113
|
+
// Get existing indexes
|
|
114
|
+
const indexes = this.getExistingIndexes();
|
|
115
|
+
// Get table statistics
|
|
116
|
+
const entityCount = this.getTableRowCount('entities');
|
|
117
|
+
const relationshipCount = this.getTableRowCount('relationships');
|
|
118
|
+
// Generate recommendations
|
|
119
|
+
const allRecommendations = this.generateRecommendations(indexes);
|
|
120
|
+
const recommendations = allRecommendations
|
|
121
|
+
.filter(r => r.estimatedImprovement >= minImprovementThreshold)
|
|
122
|
+
.slice(0, maxRecommendations);
|
|
123
|
+
// Get query statistics if available and requested
|
|
124
|
+
let queryStats = [];
|
|
125
|
+
if (includeQueryStats && this.isQueryLogTableExists()) {
|
|
126
|
+
queryStats = this.getQueryStats();
|
|
127
|
+
}
|
|
128
|
+
const analysisTimeMs = Date.now() - startTime;
|
|
129
|
+
return {
|
|
130
|
+
indexes,
|
|
131
|
+
recommendations,
|
|
132
|
+
queryStats,
|
|
133
|
+
analyzedAt: new Date().toISOString(),
|
|
134
|
+
analysisTimeMs,
|
|
135
|
+
databasePath: this.db.name,
|
|
136
|
+
entityCount,
|
|
137
|
+
relationshipCount,
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Get all existing indexes in the database
|
|
142
|
+
*/
|
|
143
|
+
getExistingIndexes() {
|
|
144
|
+
const tables = ['entities', 'relationships', 'patterns', 'learning_cycles', 'kgprs', 'change_log'];
|
|
145
|
+
const indexes = [];
|
|
146
|
+
for (const table of tables) {
|
|
147
|
+
try {
|
|
148
|
+
const tableIndexes = this.db
|
|
149
|
+
.prepare(`PRAGMA index_list('${table}')`)
|
|
150
|
+
.all();
|
|
151
|
+
for (const idx of tableIndexes) {
|
|
152
|
+
// Skip auto-indexes
|
|
153
|
+
if (idx.name.startsWith('sqlite_autoindex'))
|
|
154
|
+
continue;
|
|
155
|
+
const columns = this.db
|
|
156
|
+
.prepare(`PRAGMA index_info('${idx.name}')`)
|
|
157
|
+
.all();
|
|
158
|
+
// Get row count estimate
|
|
159
|
+
let rowCount = 0;
|
|
160
|
+
try {
|
|
161
|
+
const stat = this.db
|
|
162
|
+
.prepare(`SELECT stat FROM sqlite_stat1 WHERE tbl = ? AND idx = ?`)
|
|
163
|
+
.get(table, idx.name);
|
|
164
|
+
if (stat) {
|
|
165
|
+
rowCount = parseInt(stat.stat.split(' ')[0], 10);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
catch {
|
|
169
|
+
// sqlite_stat1 may not exist if ANALYZE hasn't been run
|
|
170
|
+
}
|
|
171
|
+
indexes.push({
|
|
172
|
+
name: idx.name,
|
|
173
|
+
table,
|
|
174
|
+
columns: columns.map(c => c.name),
|
|
175
|
+
unique: idx.unique === 1,
|
|
176
|
+
rowCount,
|
|
177
|
+
seq: idx.seq,
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
catch {
|
|
182
|
+
// Table may not exist
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
return indexes;
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Generate index recommendations based on analysis
|
|
189
|
+
*/
|
|
190
|
+
generateRecommendations(existingIndexes) {
|
|
191
|
+
const recommendations = [];
|
|
192
|
+
const existingIndexSet = new Set(existingIndexes.map(idx => `${idx.table}:${idx.columns.join(',')}`));
|
|
193
|
+
// Check for missing composite indexes
|
|
194
|
+
for (const pattern of COMPOSITE_INDEX_PATTERNS) {
|
|
195
|
+
const key = `${pattern.table}:${pattern.columns.join(',')}`;
|
|
196
|
+
if (!existingIndexSet.has(key)) {
|
|
197
|
+
const indexName = `idx_${pattern.table}_${pattern.columns.join('_')}`;
|
|
198
|
+
recommendations.push({
|
|
199
|
+
type: 'create',
|
|
200
|
+
table: pattern.table,
|
|
201
|
+
columns: pattern.columns,
|
|
202
|
+
reason: pattern.reason,
|
|
203
|
+
estimatedImprovement: pattern.improvement,
|
|
204
|
+
sql: `CREATE INDEX IF NOT EXISTS ${indexName} ON ${pattern.table}(${pattern.columns.join(', ')})`,
|
|
205
|
+
priority: pattern.improvement >= 40 ? 1 : pattern.improvement >= 30 ? 2 : 3,
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
// Check for potentially unused indexes based on query patterns
|
|
210
|
+
// This is a heuristic - actual usage requires monitoring data
|
|
211
|
+
const coreIndexes = new Set([
|
|
212
|
+
'idx_entities_type',
|
|
213
|
+
'idx_entities_name',
|
|
214
|
+
'idx_entities_namespace',
|
|
215
|
+
'idx_relationships_source',
|
|
216
|
+
'idx_relationships_target',
|
|
217
|
+
]);
|
|
218
|
+
for (const idx of existingIndexes) {
|
|
219
|
+
if (!coreIndexes.has(idx.name) && idx.rowCount === 0) {
|
|
220
|
+
recommendations.push({
|
|
221
|
+
type: 'drop',
|
|
222
|
+
table: idx.table,
|
|
223
|
+
columns: idx.columns,
|
|
224
|
+
reason: 'Index appears unused (no recorded statistics)',
|
|
225
|
+
estimatedImprovement: 5,
|
|
226
|
+
sql: `DROP INDEX IF EXISTS ${idx.name}`,
|
|
227
|
+
priority: 5,
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
// Sort by priority and improvement
|
|
232
|
+
return recommendations.sort((a, b) => {
|
|
233
|
+
if (a.priority !== b.priority)
|
|
234
|
+
return a.priority - b.priority;
|
|
235
|
+
return b.estimatedImprovement - a.estimatedImprovement;
|
|
236
|
+
});
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Get row count for a table
|
|
240
|
+
*/
|
|
241
|
+
getTableRowCount(table) {
|
|
242
|
+
try {
|
|
243
|
+
const result = this.db
|
|
244
|
+
.prepare(`SELECT COUNT(*) as count FROM ${table}`)
|
|
245
|
+
.get();
|
|
246
|
+
return result.count;
|
|
247
|
+
}
|
|
248
|
+
catch {
|
|
249
|
+
return 0;
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
// ============================================================
|
|
253
|
+
// Composite Index Creation (REQ-YI-IDX-002)
|
|
254
|
+
// ============================================================
|
|
255
|
+
/**
|
|
256
|
+
* Create a composite index on the specified table and columns
|
|
257
|
+
*
|
|
258
|
+
* @param table - Table name
|
|
259
|
+
* @param columns - Column names for the composite index
|
|
260
|
+
* @param options - Creation options
|
|
261
|
+
* @returns SQL statement (and executes if options.execute is true)
|
|
262
|
+
*
|
|
263
|
+
* @see REQ-YI-IDX-002
|
|
264
|
+
*/
|
|
265
|
+
createCompositeIndex(table, columns, options = {}) {
|
|
266
|
+
const { name, unique = false, execute = true } = options;
|
|
267
|
+
// Generate index name if not provided
|
|
268
|
+
const indexName = name || `idx_${table}_${columns.join('_')}`;
|
|
269
|
+
// Validate table exists
|
|
270
|
+
const tableExists = this.db
|
|
271
|
+
.prepare(`SELECT name FROM sqlite_master WHERE type='table' AND name=?`)
|
|
272
|
+
.get(table);
|
|
273
|
+
if (!tableExists) {
|
|
274
|
+
throw new Error(`Table '${table}' does not exist`);
|
|
275
|
+
}
|
|
276
|
+
// Validate columns exist
|
|
277
|
+
const tableInfo = this.db
|
|
278
|
+
.prepare(`PRAGMA table_info('${table}')`)
|
|
279
|
+
.all();
|
|
280
|
+
const existingColumns = new Set(tableInfo.map(c => c.name));
|
|
281
|
+
for (const col of columns) {
|
|
282
|
+
if (!existingColumns.has(col)) {
|
|
283
|
+
throw new Error(`Column '${col}' does not exist in table '${table}'`);
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
// Generate SQL
|
|
287
|
+
const uniqueKeyword = unique ? 'UNIQUE ' : '';
|
|
288
|
+
const sql = `CREATE ${uniqueKeyword}INDEX IF NOT EXISTS ${indexName} ON ${table}(${columns.join(', ')})`;
|
|
289
|
+
// Execute if requested
|
|
290
|
+
if (execute) {
|
|
291
|
+
this.db.exec(sql);
|
|
292
|
+
}
|
|
293
|
+
return sql;
|
|
294
|
+
}
|
|
295
|
+
/**
|
|
296
|
+
* Apply all recommended indexes
|
|
297
|
+
*
|
|
298
|
+
* @param recommendations - List of recommendations to apply
|
|
299
|
+
* @returns Applied index names
|
|
300
|
+
*/
|
|
301
|
+
applyRecommendations(recommendations) {
|
|
302
|
+
const applied = [];
|
|
303
|
+
for (const rec of recommendations) {
|
|
304
|
+
if (rec.type === 'create') {
|
|
305
|
+
try {
|
|
306
|
+
this.db.exec(rec.sql);
|
|
307
|
+
const indexName = `idx_${rec.table}_${rec.columns.join('_')}`;
|
|
308
|
+
applied.push(indexName);
|
|
309
|
+
}
|
|
310
|
+
catch (error) {
|
|
311
|
+
// Index might already exist
|
|
312
|
+
console.warn(`Warning: Could not apply index: ${rec.sql}`, error);
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
// Run ANALYZE to update statistics
|
|
317
|
+
if (applied.length > 0) {
|
|
318
|
+
this.db.exec('ANALYZE');
|
|
319
|
+
}
|
|
320
|
+
return applied;
|
|
321
|
+
}
|
|
322
|
+
// ============================================================
|
|
323
|
+
// Query Performance Monitoring (REQ-YI-IDX-003)
|
|
324
|
+
// ============================================================
|
|
325
|
+
/**
|
|
326
|
+
* Enable query performance monitoring
|
|
327
|
+
*
|
|
328
|
+
* Creates query_log table if it doesn't exist.
|
|
329
|
+
*
|
|
330
|
+
* @see REQ-YI-IDX-003
|
|
331
|
+
*/
|
|
332
|
+
enableMonitoring() {
|
|
333
|
+
this.db.exec(QUERY_LOG_SCHEMA);
|
|
334
|
+
this.monitoringEnabled = true;
|
|
335
|
+
}
|
|
336
|
+
/**
|
|
337
|
+
* Disable query performance monitoring
|
|
338
|
+
*/
|
|
339
|
+
disableMonitoring() {
|
|
340
|
+
this.monitoringEnabled = false;
|
|
341
|
+
}
|
|
342
|
+
/**
|
|
343
|
+
* Check if monitoring is enabled
|
|
344
|
+
*/
|
|
345
|
+
isMonitoringEnabled() {
|
|
346
|
+
return this.monitoringEnabled;
|
|
347
|
+
}
|
|
348
|
+
/**
|
|
349
|
+
* Log a query execution for monitoring
|
|
350
|
+
*
|
|
351
|
+
* @param queryPattern - Normalized query pattern
|
|
352
|
+
* @param executionTimeMs - Execution time in milliseconds
|
|
353
|
+
* @param rowsExamined - Number of rows examined (optional)
|
|
354
|
+
* @param indexesUsed - List of indexes used (optional)
|
|
355
|
+
*/
|
|
356
|
+
logQuery(queryPattern, executionTimeMs, rowsExamined, indexesUsed) {
|
|
357
|
+
if (!this.monitoringEnabled || !this.isQueryLogTableExists())
|
|
358
|
+
return;
|
|
359
|
+
const queryHash = this.hashQuery(queryPattern);
|
|
360
|
+
const timestamp = new Date().toISOString();
|
|
361
|
+
this.db
|
|
362
|
+
.prepare(`INSERT INTO query_log (query_hash, query_pattern, execution_time_ms, rows_examined, indexes_used, timestamp)
|
|
363
|
+
VALUES (?, ?, ?, ?, ?, ?)`)
|
|
364
|
+
.run(queryHash, queryPattern, executionTimeMs, rowsExamined ?? null, indexesUsed ? JSON.stringify(indexesUsed) : null, timestamp);
|
|
365
|
+
}
|
|
366
|
+
/**
|
|
367
|
+
* Get query statistics from monitoring data
|
|
368
|
+
*
|
|
369
|
+
* @param limit - Maximum number of query patterns to return
|
|
370
|
+
* @returns Aggregated query statistics
|
|
371
|
+
*/
|
|
372
|
+
getQueryStats(limit = 50) {
|
|
373
|
+
if (!this.isQueryLogTableExists())
|
|
374
|
+
return [];
|
|
375
|
+
const stats = this.db
|
|
376
|
+
.prepare(`SELECT
|
|
377
|
+
query_hash,
|
|
378
|
+
query_pattern,
|
|
379
|
+
AVG(execution_time_ms) as avg_time,
|
|
380
|
+
MIN(execution_time_ms) as min_time,
|
|
381
|
+
MAX(execution_time_ms) as max_time,
|
|
382
|
+
COUNT(*) as exec_count,
|
|
383
|
+
AVG(rows_examined) as avg_rows,
|
|
384
|
+
MAX(timestamp) as last_executed
|
|
385
|
+
FROM query_log
|
|
386
|
+
GROUP BY query_hash
|
|
387
|
+
ORDER BY avg_time DESC
|
|
388
|
+
LIMIT ?`)
|
|
389
|
+
.all(limit);
|
|
390
|
+
return stats.map(s => ({
|
|
391
|
+
queryPattern: s.query_pattern,
|
|
392
|
+
queryHash: s.query_hash,
|
|
393
|
+
avgTimeMs: Math.round(s.avg_time * 100) / 100,
|
|
394
|
+
minTimeMs: s.min_time,
|
|
395
|
+
maxTimeMs: s.max_time,
|
|
396
|
+
executionCount: s.exec_count,
|
|
397
|
+
avgRowsExamined: s.avg_rows ? Math.round(s.avg_rows) : 0,
|
|
398
|
+
indexesUsed: [], // Would need to aggregate from individual logs
|
|
399
|
+
lastExecuted: s.last_executed,
|
|
400
|
+
}));
|
|
401
|
+
}
|
|
402
|
+
/**
|
|
403
|
+
* Get slow queries (queries exceeding threshold)
|
|
404
|
+
*
|
|
405
|
+
* @param thresholdMs - Minimum execution time to consider slow
|
|
406
|
+
* @param limit - Maximum results to return
|
|
407
|
+
* @returns Slow query entries
|
|
408
|
+
*/
|
|
409
|
+
getSlowQueries(thresholdMs = 100, limit = 20) {
|
|
410
|
+
if (!this.isQueryLogTableExists())
|
|
411
|
+
return [];
|
|
412
|
+
const stats = this.db
|
|
413
|
+
.prepare(`SELECT
|
|
414
|
+
query_hash,
|
|
415
|
+
query_pattern,
|
|
416
|
+
AVG(execution_time_ms) as avg_time,
|
|
417
|
+
MIN(execution_time_ms) as min_time,
|
|
418
|
+
MAX(execution_time_ms) as max_time,
|
|
419
|
+
COUNT(*) as exec_count,
|
|
420
|
+
AVG(rows_examined) as avg_rows,
|
|
421
|
+
MAX(timestamp) as last_executed
|
|
422
|
+
FROM query_log
|
|
423
|
+
GROUP BY query_hash
|
|
424
|
+
HAVING avg_time >= ?
|
|
425
|
+
ORDER BY avg_time DESC
|
|
426
|
+
LIMIT ?`)
|
|
427
|
+
.all(thresholdMs, limit);
|
|
428
|
+
return stats.map(s => ({
|
|
429
|
+
queryPattern: s.query_pattern,
|
|
430
|
+
queryHash: s.query_hash,
|
|
431
|
+
avgTimeMs: Math.round(s.avg_time * 100) / 100,
|
|
432
|
+
minTimeMs: s.min_time,
|
|
433
|
+
maxTimeMs: s.max_time,
|
|
434
|
+
executionCount: s.exec_count,
|
|
435
|
+
avgRowsExamined: s.avg_rows ? Math.round(s.avg_rows) : 0,
|
|
436
|
+
indexesUsed: [],
|
|
437
|
+
lastExecuted: s.last_executed,
|
|
438
|
+
}));
|
|
439
|
+
}
|
|
440
|
+
/**
|
|
441
|
+
* Clear query log (older than specified days)
|
|
442
|
+
*
|
|
443
|
+
* @param olderThanDays - Delete logs older than this many days (0 = all)
|
|
444
|
+
* @returns Number of deleted entries
|
|
445
|
+
*/
|
|
446
|
+
clearQueryLog(olderThanDays = 30) {
|
|
447
|
+
if (!this.isQueryLogTableExists())
|
|
448
|
+
return 0;
|
|
449
|
+
if (olderThanDays === 0) {
|
|
450
|
+
const result = this.db.prepare('DELETE FROM query_log').run();
|
|
451
|
+
return result.changes;
|
|
452
|
+
}
|
|
453
|
+
const cutoffDate = new Date();
|
|
454
|
+
cutoffDate.setDate(cutoffDate.getDate() - olderThanDays);
|
|
455
|
+
const cutoffIso = cutoffDate.toISOString();
|
|
456
|
+
const result = this.db
|
|
457
|
+
.prepare('DELETE FROM query_log WHERE timestamp < ?')
|
|
458
|
+
.run(cutoffIso);
|
|
459
|
+
return result.changes;
|
|
460
|
+
}
|
|
461
|
+
// ============================================================
|
|
462
|
+
// Helper Methods
|
|
463
|
+
// ============================================================
|
|
464
|
+
/**
|
|
465
|
+
* Check if query_log table exists
|
|
466
|
+
*/
|
|
467
|
+
isQueryLogTableExists() {
|
|
468
|
+
const result = this.db
|
|
469
|
+
.prepare(`SELECT name FROM sqlite_master WHERE type='table' AND name='query_log'`)
|
|
470
|
+
.get();
|
|
471
|
+
return !!result;
|
|
472
|
+
}
|
|
473
|
+
/**
|
|
474
|
+
* Generate a hash for query pattern grouping
|
|
475
|
+
*/
|
|
476
|
+
hashQuery(query) {
|
|
477
|
+
// Simple hash for grouping similar queries
|
|
478
|
+
let hash = 0;
|
|
479
|
+
const normalized = query
|
|
480
|
+
.toLowerCase()
|
|
481
|
+
.replace(/\s+/g, ' ')
|
|
482
|
+
.replace(/\d+/g, '?')
|
|
483
|
+
.replace(/'[^']*'/g, '?')
|
|
484
|
+
.trim();
|
|
485
|
+
for (let i = 0; i < normalized.length; i++) {
|
|
486
|
+
const char = normalized.charCodeAt(i);
|
|
487
|
+
hash = (hash << 5) - hash + char;
|
|
488
|
+
hash = hash & hash; // Convert to 32-bit integer
|
|
489
|
+
}
|
|
490
|
+
return Math.abs(hash).toString(16).padStart(8, '0');
|
|
491
|
+
}
|
|
492
|
+
/**
|
|
493
|
+
* Run ANALYZE to update SQLite statistics
|
|
494
|
+
*/
|
|
495
|
+
runAnalyze() {
|
|
496
|
+
this.db.exec('ANALYZE');
|
|
497
|
+
}
|
|
498
|
+
/**
|
|
499
|
+
* Get database statistics summary
|
|
500
|
+
*/
|
|
501
|
+
getDatabaseStats() {
|
|
502
|
+
const entityCount = this.getTableRowCount('entities');
|
|
503
|
+
const relationshipCount = this.getTableRowCount('relationships');
|
|
504
|
+
const patternCount = this.getTableRowCount('patterns');
|
|
505
|
+
const indexes = this.getExistingIndexes();
|
|
506
|
+
// Get database size
|
|
507
|
+
let dbSizeBytes = 0;
|
|
508
|
+
try {
|
|
509
|
+
const pageCount = this.db.prepare('PRAGMA page_count').get().page_count;
|
|
510
|
+
const pageSize = this.db.prepare('PRAGMA page_size').get().page_size;
|
|
511
|
+
dbSizeBytes = pageCount * pageSize;
|
|
512
|
+
}
|
|
513
|
+
catch {
|
|
514
|
+
// Fallback
|
|
515
|
+
}
|
|
516
|
+
return {
|
|
517
|
+
entityCount,
|
|
518
|
+
relationshipCount,
|
|
519
|
+
patternCount,
|
|
520
|
+
indexCount: indexes.length,
|
|
521
|
+
dbSizeBytes,
|
|
522
|
+
};
|
|
523
|
+
}
|
|
524
|
+
}
|
|
525
|
+
//# sourceMappingURL=index-optimizer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-optimizer.js","sourceRoot":"","sources":["../src/index-optimizer.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -248,6 +248,36 @@ export declare class YataLocal {
|
|
|
248
248
|
* @see REQ-YL-IO-001
|
|
249
249
|
*/
|
|
250
250
|
exportRdf(filePath?: string, options?: RdfExportOptions): Promise<string>;
|
|
251
|
+
/**
|
|
252
|
+
* Unified export API supporting multiple formats (JSON, RDF, GraphML)
|
|
253
|
+
* Performance target: 30 seconds for up to 100,000 entities
|
|
254
|
+
*
|
|
255
|
+
* @param options - Export options (format, namespace filter, output path)
|
|
256
|
+
* @returns Export result with content or file path
|
|
257
|
+
*
|
|
258
|
+
* @see REQ-YI-EXP-001
|
|
259
|
+
*/
|
|
260
|
+
export(options: import('./io.js').ExportOptions): Promise<import('./io.js').ExportResult>;
|
|
261
|
+
/**
|
|
262
|
+
* Unified import API supporting multiple formats
|
|
263
|
+
*
|
|
264
|
+
* @param input - File path or content string
|
|
265
|
+
* @param options - Import options (format, merge strategy)
|
|
266
|
+
* @returns Import result with statistics
|
|
267
|
+
*
|
|
268
|
+
* @see REQ-YI-EXP-002
|
|
269
|
+
*/
|
|
270
|
+
import(input: string, options: import('./io.js').ImportOptions): Promise<import('./io.js').ImportResult>;
|
|
271
|
+
/**
|
|
272
|
+
* Export incremental changes since a specific date
|
|
273
|
+
*
|
|
274
|
+
* @param since - Export changes since this date
|
|
275
|
+
* @param options - Export options (format, output path)
|
|
276
|
+
* @returns Export result with only changed entities
|
|
277
|
+
*
|
|
278
|
+
* @see REQ-YI-EXP-003
|
|
279
|
+
*/
|
|
280
|
+
exportIncremental(since: Date, options?: Omit<import('./io.js').ExportOptions, 'since'>): Promise<import('./io.js').ExportResult>;
|
|
251
281
|
/**
|
|
252
282
|
* Compute delta between states
|
|
253
283
|
* @see REQ-YL-IO-004
|
|
@@ -288,11 +318,15 @@ export * from './types.js';
|
|
|
288
318
|
export { YataDatabase } from './database.js';
|
|
289
319
|
export { QueryEngine } from './query-engine.js';
|
|
290
320
|
export { ReasoningEngine, type InferenceResult } from './reasoning.js';
|
|
291
|
-
export { IoModule, type JsonExport, type RdfExportOptions } from './io.js';
|
|
321
|
+
export { IoModule, type JsonExport, type RdfExportOptions, type EnhancedJsonExport, type ExportOptions, type ImportOptions, type ExportResult, type ImportResult, } from './io.js';
|
|
292
322
|
export { KnowledgeGraphUpdater, createKnowledgeGraphUpdater, type ExtractedEntity, type ExtractedRelationship, type CodeAnalysisResult, type UpdateResult, } from './auto-updater.js';
|
|
293
323
|
export { YataBridge, createYataBridge, type YataBridgeConfig, } from './yata-bridge.js';
|
|
294
324
|
export { LocalKGPRManager, createLocalKGPRManager, LocalPrivacyFilter, createLocalPrivacyFilter, LocalDiffEngine, createLocalDiffEngine, } from './kgpr/index.js';
|
|
295
325
|
export type { LocalKGPRInfo, LocalKGPRDiff, LocalKGPRReviewEntry, LocalEntityChange, LocalRelationshipChange, LocalDiffStats, CreateLocalKGPROptions, ListLocalKGPROptions, LocalPrivacyFilterConfig, KGSnapshot, DiffOptions, } from './kgpr/types.js';
|
|
296
326
|
export { LocalWakeSleepCycle, createLocalWakeSleepCycle, LocalWakePhase, createLocalWakePhase, LocalSleepPhase, createLocalSleepPhase, LocalPatternCompressor, createLocalPatternCompressor, DEFAULT_WAKE_SLEEP_CONFIG, } from './wake-sleep/index.js';
|
|
297
327
|
export type { LocalPatternCandidate, LocalPatternType, LocalPatternCluster, LocalConsolidatedPattern, WakeObserveOptions, WakeObserveResult, SleepClusterOptions, SleepClusterResult, CompressOptions, LocalLearningCycleResult, LocalLearningCycleMetadata, LearningCycleStatus, SimilarityMethod, WakeSleepConfig, } from './wake-sleep/types.js';
|
|
328
|
+
export { IndexOptimizer, QUERY_LOG_SCHEMA, } from './index-optimizer.js';
|
|
329
|
+
export type { IndexInfo, IndexRecommendation, QueryStats, IndexAnalysisResult, AnalysisOptions, CompositeIndexOptions, } from './index-optimizer.js';
|
|
330
|
+
export { GlobalSyncManager, createGlobalSyncManager, DEFAULT_SYNC_CONFIG, } from './sync.js';
|
|
331
|
+
export type { SyncConfig, SyncState, SyncStatus, SyncConflict, SyncResult, ChangeSet, SyncResponse, } from './sync.js';
|
|
298
332
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|