LogoRobo.js
Framework

ChunkManager

Class: ChunkManager

Chunk manager for a single model.

Handles loading, saving, and assigning chunks with:

  • LRU cache eviction
  • Size-aware chunk selection
  • Support for large record segmentation

Constructors

new ChunkManager()

new ChunkManager(options): ChunkManager

Parameters

ParameterType
optionsChunkManagerOptions

Returns

ChunkManager

Methods

buildSegmentKey()

buildSegmentKey(recordId, segmentIndex): string

Build the storage key for a record segment.

Parameters

ParameterType
recordIdstring
segmentIndexnumber

Returns

string


checkRecordSize()

checkRecordSize(record): SizeCheckResult

Check if a record needs to be stored as segments.

Parameters

ParameterTypeDescription
recordunknownRecord to check

Returns

SizeCheckResult

Size check result


clearCache()

clearCache(): void

Clear the chunk cache.

Returns

void


deleteChunk()

deleteChunk(chunkId): Promise<void>

Delete a chunk from storage.

Parameters

ParameterTypeDescription
chunkIdnumberChunk ID to delete

Returns

Promise<void>


deleteRecord()

deleteRecord(chunkId, recordId): Promise<boolean>

Delete a record from a chunk.

Parameters

ParameterTypeDescription
chunkIdnumberChunk ID
recordIdstringRecord ID

Returns

Promise<boolean>

True if record existed


deleteSegmentedRecord()

deleteSegmentedRecord(recordId, segmentIds): Promise<void>

Delete all segments for a record.

Parameters

ParameterTypeDescription
recordIdstringRecord ID
segmentIdsstring[]Array of segment IDs

Returns

Promise<void>


estimateRecordSize()

estimateRecordSize(record): number

Estimate the serialized size of a record.

Parameters

ParameterTypeDescription
recordunknownRecord to estimate

Returns

number

Estimated size in bytes


getCacheStats()

getCacheStats(): {
  entries: number[];
  maxSize: number;
  size: number;
}

Get cache statistics for debugging/metrics.

Returns

{
  entries: number[];
  maxSize: number;
  size: number;
}
NameType
entriesnumber[]
maxSizenumber
sizenumber

getMaxChunkSize()

getMaxChunkSize(): number

Get the max chunk size.

Returns

number


getMaxRecordsPerChunk()

getMaxRecordsPerChunk(): number

Get the max records per chunk.

Returns

number


getRecord()

getRecord(chunkId, recordId): Promise<unknown>

Get a record from a chunk.

Parameters

ParameterTypeDescription
chunkIdnumberChunk ID
recordIdstringRecord ID

Returns

Promise<unknown>

Record or undefined


invalidateChunk()

invalidateChunk(chunkId): void

Invalidate a specific chunk from cache.

Parameters

ParameterTypeDescription
chunkIdnumberChunk ID to invalidate

Returns

void


loadChunk()

loadChunk(chunkId): Promise<ChunkData>

Load a chunk from storage.

Parameters

ParameterTypeDescription
chunkIdnumberChunk ID to load

Returns

Promise<ChunkData>

Chunk data or empty object if not found


loadSegmentedRecord()

loadSegmentedRecord(recordId, segmentIds): Promise<unknown>

Load a segmented record.

Parameters

ParameterTypeDescription
recordIdstringRecord ID
segmentIdsstring[]Array of segment IDs

Returns

Promise<unknown>

Reconstructed record


saveChunk()

saveChunk(chunkId, data): Promise<void>

Save a chunk to storage.

Parameters

ParameterTypeDescription
chunkIdnumberChunk ID
dataChunkDataChunk data

Returns

Promise<void>


saveChunkWithCAS()

saveChunkWithCAS(
   chunkId, 
   data, 
expectedData?): Promise<void>

Save a chunk with CAS (compare-and-swap) if available. Falls back to regular save if CAS is not supported.

Parameters

ParameterTypeDescription
chunkIdnumberChunk ID
dataChunkDataChunk data
expectedData?ChunkDataExpected current data (for CAS)

Returns

Promise<void>

Throws

TransactionConflictError if CAS fails


saveSegmentedRecord()

saveSegmentedRecord(recordId, record): Promise<string[]>

Save a large record as segments.

Parameters

ParameterTypeDescription
recordIdstringRecord ID
recordunknownRecord data

Returns

Promise<string[]>

Array of segment IDs (as strings, "0", "1", ...)


selectChunkForInsert()

selectChunkForInsert(catalog, recordSize?): number

Select a chunk for inserting a new record.

Parameters

ParameterTypeDescription
catalogCatalogCurrent catalog
recordSize?numberEstimated size of the new record

Returns

number

Chunk ID to use, or -1 if record needs segmentation


setRecord()

setRecord(
   chunkId, 
   recordId, 
record): Promise<void>

Set a record in a chunk.

Parameters

ParameterTypeDescription
chunkIdnumberChunk ID
recordIdstringRecord ID
recordunknownRecord data

Returns

Promise<void>


updateSegmentedRecord()

updateSegmentedRecord(
   recordId, 
   oldSegmentIds, 
record): Promise<string[]>

Update a segmented record (delete old segments, write new ones).

Parameters

ParameterTypeDescription
recordIdstringRecord ID
oldSegmentIdsstring[]Old segment IDs to delete
recordunknownNew record data

Returns

Promise<string[]>

New segment IDs

On this page