Documentation ¶
Index ¶
- Constants
- type BackupState
- type Config
- type DB
- func (db *DB) AbortReplication(class, shard, requestID string) interface{}
- func (db *DB) AddBatchReferences(ctx context.Context, references objects.BatchReferences, ...) (objects.BatchReferences, error)
- func (db *DB) AddReference(ctx context.Context, source *crossref.RefSource, target *crossref.Ref, ...) error
- func (db *DB) Aggregate(ctx context.Context, params aggregation.Params) (*aggregation.Result, error)
- func (db *DB) AggregateNeighbors(ctx context.Context, vector []float32, class string, properties []string, ...) ([]classification.NeighborRef, error)
- func (db *DB) BackupDescriptors(ctx context.Context, bakid string, classes []string) <-chan backup.ClassDescriptor
- func (db *DB) Backupable(ctx context.Context, classes []string) error
- func (db *DB) BatchDeleteObjects(ctx context.Context, params objects.BatchDeleteParams, ...) (objects.BatchDeleteResult, error)
- func (db *DB) BatchPutObjects(ctx context.Context, objs objects.BatchObjects, ...) (objects.BatchObjects, error)
- func (db *DB) ClassExists(name string) bool
- func (db *DB) CommitReplication(class, shard, requestID string) interface{}
- func (db *DB) CrossClassVectorSearch(ctx context.Context, vector []float32, offset, limit int, ...) ([]search.Result, error)
- func (db *DB) DeleteIndex(className schema.ClassName) error
- func (db *DB) DeleteObject(ctx context.Context, class string, id strfmt.UUID, ...) error
- func (db *DB) DenseObjectSearch(ctx context.Context, class string, vector []float32, offset int, limit int, ...) ([]*storobj.Object, []float32, error)
- func (db *DB) DigestObjects(ctx context.Context, class, shardName string, ids []strfmt.UUID) (result []replica.RepairResponse, err error)
- func (db *DB) Exists(ctx context.Context, class string, id strfmt.UUID, ...) (bool, error)
- func (db *DB) FetchObject(ctx context.Context, class, shardName string, id strfmt.UUID) (objects.Replica, error)
- func (db *DB) FetchObjects(ctx context.Context, class, shardName string, ids []strfmt.UUID) ([]objects.Replica, error)
- func (db *DB) GetIndex(className schema.ClassName) *Index
- func (db *DB) GetIndexForIncoming(className schema.ClassName) sharding.RemoteIndexIncomingRepo
- func (db *DB) GetNodeStatus(ctx context.Context, className string) ([]*models.NodeStatus, error)
- func (db *DB) GetQueryMaximumResults() int
- func (db *DB) GetUnclassified(ctx context.Context, class string, properties []string, ...) ([]search.Result, error)
- func (db *DB) IncomingGetNodeStatus(ctx context.Context, className string) (*models.NodeStatus, error)
- func (d *DB) IndexExists(className schema.ClassName) bool
- func (db *DB) ListBackupable() []string
- func (db *DB) ListClasses(ctx context.Context) []string
- func (db *DB) Merge(ctx context.Context, merge objects.MergeDocument, ...) error
- func (db *DB) MultiGet(ctx context.Context, query []multi.Identifier, ...) ([]search.Result, error)
- func (db *DB) Object(ctx context.Context, class string, id strfmt.UUID, ...) (*search.Result, error)
- func (db *DB) ObjectByID(ctx context.Context, id strfmt.UUID, props search.SelectProperties, ...) (*search.Result, error)
- func (db *DB) ObjectSearch(ctx context.Context, offset, limit int, filters *filters.LocalFilter, ...) (search.Results, error)
- func (db *DB) ObjectsByID(ctx context.Context, id strfmt.UUID, props search.SelectProperties, ...) (search.Results, error)
- func (db *DB) OverwriteObjects(ctx context.Context, class, shardName string, vobjects []*objects.VObject) ([]replica.RepairResponse, error)
- func (db *DB) PutObject(ctx context.Context, obj *models.Object, vector []float32, ...) error
- func (db *DB) Query(ctx context.Context, q *objects.QueryInput) (search.Results, *objects.Error)
- func (db *DB) ReleaseBackup(ctx context.Context, bakID, class string) (err error)
- func (db *DB) ReplicateDeletion(ctx context.Context, class, shard, requestID string, uuid strfmt.UUID) replica.SimpleResponse
- func (db *DB) ReplicateDeletions(ctx context.Context, class, shard, requestID string, docIDs []uint64, ...) replica.SimpleResponse
- func (db *DB) ReplicateObject(ctx context.Context, class, shard, requestID string, object *storobj.Object) replica.SimpleResponse
- func (db *DB) ReplicateObjects(ctx context.Context, class, shard, requestID string, objects []*storobj.Object) replica.SimpleResponse
- func (db *DB) ReplicateReferences(ctx context.Context, class, shard, requestID string, ...) replica.SimpleResponse
- func (db *DB) ReplicateUpdate(ctx context.Context, class, shard, requestID string, ...) replica.SimpleResponse
- func (db *DB) ResolveReferences(ctx context.Context, objs search.Results, props search.SelectProperties, ...) (search.Results, error)
- func (db *DB) Search(ctx context.Context, params dto.GetParams) ([]search.Result, error)
- func (db *DB) SetSchemaGetter(sg schemaUC.SchemaGetter)
- func (db *DB) Shards(ctx context.Context, class string) ([]string, error)
- func (db *DB) ShardsBackup(ctx context.Context, bakID, class string, shards []string) (_ backup.ClassDescriptor, err error)
- func (db *DB) Shutdown(ctx context.Context) error
- func (db *DB) SparseObjectSearch(ctx context.Context, params dto.GetParams) ([]*storobj.Object, []float32, error)
- func (db *DB) StartupComplete() bool
- func (db *DB) VectorSearch(ctx context.Context, params dto.GetParams) ([]search.Result, error)
- func (db *DB) WaitForStartup(ctx context.Context) error
- func (db *DB) ZeroShotSearch(ctx context.Context, vector []float32, class string, properties []string, ...) ([]search.Result, error)
- type Index
- func (i *Index) AbortReplication(shard, requestID string) interface{}
- func (i *Index) CommitReplication(shard, requestID string) interface{}
- func (i *Index) ForEachShard(f func(name string, shard *Shard) error) error
- func (i *Index) ForEachShardConcurrently(f func(name string, shard *Shard) error) error
- func (i *Index) ID() string
- func (i *Index) IncomingAggregate(ctx context.Context, shardName string, params aggregation.Params) (*aggregation.Result, error)
- func (i *Index) IncomingBatchAddReferences(ctx context.Context, shardName string, refs objects.BatchReferences) []error
- func (i *Index) IncomingBatchPutObjects(ctx context.Context, shardName string, objects []*storobj.Object) []error
- func (i *Index) IncomingCreateShard(ctx context.Context, shardName string) error
- func (i *Index) IncomingDeleteObject(ctx context.Context, shardName string, id strfmt.UUID) error
- func (i *Index) IncomingDeleteObjectBatch(ctx context.Context, shardName string, docIDs []uint64, dryRun bool) objects.BatchSimpleObjects
- func (i *Index) IncomingDigestObjects(ctx context.Context, shardName string, ids []strfmt.UUID) (result []replica.RepairResponse, err error)
- func (i *Index) IncomingExists(ctx context.Context, shardName string, id strfmt.UUID) (bool, error)
- func (i *Index) IncomingFilePutter(ctx context.Context, shardName, filePath string) (io.WriteCloser, error)
- func (i *Index) IncomingFindDocIDs(ctx context.Context, shardName string, filters *filters.LocalFilter) ([]uint64, error)
- func (i *Index) IncomingGetObject(ctx context.Context, shardName string, id strfmt.UUID, ...) (*storobj.Object, error)
- func (i *Index) IncomingGetShardStatus(ctx context.Context, shardName string) (string, error)
- func (i *Index) IncomingMergeObject(ctx context.Context, shardName string, mergeDoc objects.MergeDocument) error
- func (i *Index) IncomingMultiGetObjects(ctx context.Context, shardName string, ids []strfmt.UUID) ([]*storobj.Object, error)
- func (i *Index) IncomingOverwriteObjects(ctx context.Context, shardName string, vobjects []*objects.VObject) ([]replica.RepairResponse, error)
- func (i *Index) IncomingPutObject(ctx context.Context, shardName string, object *storobj.Object) error
- func (i *Index) IncomingReinitShard(ctx context.Context, shardName string) error
- func (i *Index) IncomingSearch(ctx context.Context, shardName string, searchVector []float32, ...) ([]*storobj.Object, []float32, error)
- func (i *Index) IncomingUpdateShardStatus(ctx context.Context, shardName, targetStatus string) error
- func (i *Index) IterateObjects(ctx context.Context, ...) (err error)
- func (i *Index) IterateShards(ctx context.Context, cb func(index *Index, shard *Shard) error) (err error)
- func (i *Index) ReleaseBackup(ctx context.Context, id string) error
- func (i *Index) ReplicateDeletion(ctx context.Context, shard, requestID string, uuid strfmt.UUID) replica.SimpleResponse
- func (i *Index) ReplicateDeletions(ctx context.Context, shard, requestID string, docIDs []uint64, dryRun bool) replica.SimpleResponse
- func (i *Index) ReplicateObject(ctx context.Context, shard, requestID string, object *storobj.Object) replica.SimpleResponse
- func (i *Index) ReplicateObjects(ctx context.Context, shard, requestID string, objects []*storobj.Object) replica.SimpleResponse
- func (i *Index) ReplicateReferences(ctx context.Context, shard, requestID string, refs []objects.BatchReference) replica.SimpleResponse
- func (i *Index) ReplicateUpdate(ctx context.Context, shard, requestID string, doc *objects.MergeDocument) replica.SimpleResponse
- func (i *Index) Shutdown(ctx context.Context) error
- type IndexConfig
- type KnnAggregator
- type Metrics
- func (m *Metrics) BatchDelete(start time.Time, op string)
- func (m *Metrics) BatchObject(start time.Time, size int)
- func (m *Metrics) DeleteShardLabels(class, shard string)
- func (m *Metrics) FilteredVectorFilter(dur time.Duration)
- func (m *Metrics) FilteredVectorObjects(dur time.Duration)
- func (m *Metrics) FilteredVectorSort(dur time.Duration)
- func (m *Metrics) FilteredVectorVector(dur time.Duration)
- func (m *Metrics) InvertedDeleteDelta(start time.Time)
- func (m *Metrics) InvertedDeleteOld(start time.Time)
- func (m *Metrics) InvertedExtend(start time.Time, propCount int)
- func (m *Metrics) ObjectStore(start time.Time)
- func (m *Metrics) PutObject(start time.Time)
- func (m *Metrics) PutObjectDetermineStatus(start time.Time)
- func (m *Metrics) PutObjectUpdateInverted(start time.Time)
- func (m *Metrics) PutObjectUpsertObject(start time.Time)
- func (m *Metrics) ShardStartup(start time.Time)
- func (m *Metrics) VectorIndex(start time.Time)
- type Migrator
- func (m *Migrator) AddClass(ctx context.Context, class *models.Class, shardState *sharding.State) error
- func (m *Migrator) AddProperty(ctx context.Context, className string, prop *models.Property) error
- func (m *Migrator) AdjustFilterablePropSettings(ctx context.Context) error
- func (m *Migrator) DeleteTenants(ctx context.Context, class *models.Class, tenants []string) (commit func(success bool), err error)
- func (m *Migrator) DropClass(ctx context.Context, className string) error
- func (m *Migrator) DropProperty(ctx context.Context, className string, propertyName string) error
- func (m *Migrator) GetShardsStatus(ctx context.Context, className string) (map[string]string, error)
- func (m *Migrator) InvertedReindex(ctx context.Context, taskNames ...string) error
- func (m *Migrator) NewTenants(ctx context.Context, class *models.Class, ...) (commit func(success bool), err error)
- func (m *Migrator) RecalculateVectorDimensions(ctx context.Context) error
- func (m *Migrator) RecountProperties(ctx context.Context) error
- func (m *Migrator) UpdateClass(ctx context.Context, className string, newClassName *string) error
- func (m *Migrator) UpdateInvertedIndexConfig(ctx context.Context, className string, updated *models.InvertedIndexConfig) error
- func (m *Migrator) UpdateProperty(ctx context.Context, className string, propName string, newName *string) error
- func (m *Migrator) UpdateShardStatus(ctx context.Context, className, shardName, targetStatus string) error
- func (m *Migrator) UpdateTenants(ctx context.Context, class *models.Class, ...) (commit func(success bool), err error)
- func (m *Migrator) UpdateVectorIndexConfig(ctx context.Context, className string, updated schema.VectorIndexConfig) error
- func (m *Migrator) ValidateInvertedIndexConfigUpdate(ctx context.Context, old, updated *models.InvertedIndexConfig) error
- func (m *Migrator) ValidateVectorIndexConfigUpdate(ctx context.Context, old, updated schema.VectorIndexConfig) error
- type PropertyIndexType
- type ReindexableProperty
- type Replicator
- type Shard
- type ShardInvertedReindexTask
- type ShardInvertedReindexTaskSetToRoaringSet
- type ShardInvertedReindexer
- type VectorIndex
Constants ¶
const ( ShardCodeBaseVersion = uint16(2) ShardCodeBaseMinimumVersionForStartup = uint16(1) )
ShardCodeBaseVersion must be increased whenever there are breaking changes - including those that we can handle in a non-breaking way the version checker can then decide on init if it should prevent startup completely. If it does not prevent startup, but there is still a version mismatch, the version can be used to make specific decisions
CHANGELOG
- Version 1 - Everything up until Weaviate v1.10.1 inclusive
- Version 2 - Inverted Index is now stored in an always sorted fashion and doc ids are stored as BigEndian. To make this backward-compatible with v1, doc ids need to be read and written as Little Endian. In addition, an additional sort step is required in three places: during a MapList call, during a Map Cursor and during Map Compactions. BM25 is entirely disabled prior to this version
const IdLockPoolSize = 128
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type BackupState ¶
type Config ¶
type Config struct { RootPath string QueryLimit int64 QueryMaximumResults int64 QueryNestedRefLimit int64 ResourceUsage config.ResourceUsage MaxImportGoroutinesFactor float64 MemtablesFlushIdleAfter int MemtablesInitialSizeMB int MemtablesMaxSizeMB int MemtablesMinActiveSeconds int MemtablesMaxActiveSeconds int TrackVectorDimensions bool ServerVersion string GitHash string AvoidMMap bool Replication replication.GlobalConfig }
type DB ¶
type DB struct {
// contains filtered or unexported fields
}
func New ¶
func New(logger logrus.FieldLogger, config Config, remoteIndex sharding.RemoteIndexClient, nodeResolver nodeResolver, remoteNodesClient sharding.RemoteNodeClient, replicaClient replica.Client, promMetrics *monitoring.PrometheusMetrics, ) (*DB, error)
func (*DB) AbortReplication ¶
func (*DB) AddBatchReferences ¶
func (db *DB) AddBatchReferences(ctx context.Context, references objects.BatchReferences, repl *additional.ReplicationProperties, ) (objects.BatchReferences, error)
func (*DB) AddReference ¶
func (*DB) Aggregate ¶
func (db *DB) Aggregate(ctx context.Context, params aggregation.Params, ) (*aggregation.Result, error)
func (*DB) AggregateNeighbors ¶
func (db *DB) AggregateNeighbors(ctx context.Context, vector []float32, class string, properties []string, k int, filter *libfilters.LocalFilter, ) ([]classification.NeighborRef, error)
TODO: why is this logic in the persistence package? This is business-logic, move out of here!
func (*DB) BackupDescriptors ¶
func (db *DB) BackupDescriptors(ctx context.Context, bakid string, classes []string, ) <-chan backup.ClassDescriptor
BackupDescriptors returns a channel of class descriptors. Class descriptor records everything needed to restore a class If an error happens a descriptor with an error will be written to the channel just before closing it.
func (*DB) Backupable ¶
Backupable returns whether all given class can be backed up.
func (*DB) BatchDeleteObjects ¶
func (db *DB) BatchDeleteObjects(ctx context.Context, params objects.BatchDeleteParams, repl *additional.ReplicationProperties, tenant string, ) (objects.BatchDeleteResult, error)
func (*DB) BatchPutObjects ¶
func (db *DB) BatchPutObjects(ctx context.Context, objs objects.BatchObjects, repl *additional.ReplicationProperties, ) (objects.BatchObjects, error)
func (*DB) ClassExists ¶
func (*DB) CommitReplication ¶
func (*DB) CrossClassVectorSearch ¶ added in v1.20.0
func (*DB) DeleteIndex ¶
DeleteIndex deletes the index
func (*DB) DeleteObject ¶
func (db *DB) DeleteObject(ctx context.Context, class string, id strfmt.UUID, repl *additional.ReplicationProperties, tenant string, ) error
DeleteObject from of a specific class giving its ID
func (*DB) DenseObjectSearch ¶ added in v1.20.0
func (db *DB) DenseObjectSearch(ctx context.Context, class string, vector []float32, offset int, limit int, filters *filters.LocalFilter, addl additional.Properties, tenant string, ) ([]*storobj.Object, []float32, error)
DenseObjectSearch is used to perform a vector search on the db
Earlier use cases required only []search.Result as a return value from the db, and the Class VectorSearch method fit this need. Later on, other use cases presented the need for the raw storage objects, such as hybrid search.
func (*DB) DigestObjects ¶ added in v1.18.0
func (*DB) FetchObject ¶ added in v1.18.0
func (*DB) FetchObjects ¶ added in v1.18.0
func (*DB) GetIndexForIncoming ¶
func (db *DB) GetIndexForIncoming(className schema.ClassName) sharding.RemoteIndexIncomingRepo
GetIndexForIncoming returns the index if it exists or nil if it doesn't
func (*DB) GetNodeStatus ¶ added in v1.20.0
GetNodeStatus returns the status of all Weaviate nodes.
func (*DB) GetQueryMaximumResults ¶
func (*DB) GetUnclassified ¶
func (db *DB) GetUnclassified(ctx context.Context, class string, properties []string, filter *libfilters.LocalFilter, ) ([]search.Result, error)
TODO: why is this logic in the persistence package? This is business-logic, move out of here!
func (*DB) IncomingGetNodeStatus ¶
func (db *DB) IncomingGetNodeStatus(ctx context.Context, className string) (*models.NodeStatus, error)
IncomingGetNodeStatus returns the index if it exists or nil if it doesn't
func (*DB) IndexExists ¶ added in v1.18.5
IndexExists returns if an index exists
func (*DB) ListBackupable ¶
ListBackupable returns a list of all classes which can be backed up.
func (*DB) Merge ¶
func (db *DB) Merge(ctx context.Context, merge objects.MergeDocument, repl *additional.ReplicationProperties, tenant string, ) error
func (*DB) MultiGet ¶
func (db *DB) MultiGet(ctx context.Context, query []multi.Identifier, additional additional.Properties, tenant string, ) ([]search.Result, error)
func (*DB) Object ¶
func (db *DB) Object(ctx context.Context, class string, id strfmt.UUID, props search.SelectProperties, addl additional.Properties, repl *additional.ReplicationProperties, tenant string, ) (*search.Result, error)
Object gets object with id from index of specified class.
func (*DB) ObjectByID ¶
func (db *DB) ObjectByID(ctx context.Context, id strfmt.UUID, props search.SelectProperties, additional additional.Properties, tenant string, ) (*search.Result, error)
ObjectByID checks every index of the particular kind for the ID
@warning: this function is deprecated by Object()
func (*DB) ObjectSearch ¶
func (db *DB) ObjectSearch(ctx context.Context, offset, limit int, filters *filters.LocalFilter, sort []filters.Sort, additional additional.Properties, tenant string, ) (search.Results, error)
ObjectSearch search each index. Deprecated by Query which searches a specific index
func (*DB) ObjectsByID ¶
func (db *DB) ObjectsByID(ctx context.Context, id strfmt.UUID, props search.SelectProperties, additional additional.Properties, tenant string, ) (search.Results, error)
ObjectsByID checks every index of the particular kind for the ID this method is only used for Explore queries where we don't have a class context
func (*DB) OverwriteObjects ¶ added in v1.18.0
func (*DB) PutObject ¶
func (db *DB) PutObject(ctx context.Context, obj *models.Object, vector []float32, repl *additional.ReplicationProperties, ) error
func (*DB) ReleaseBackup ¶
ReleaseBackup release resources acquired by the index during backup
func (*DB) ReplicateDeletion ¶
func (*DB) ReplicateDeletions ¶
func (*DB) ReplicateObject ¶
func (*DB) ReplicateObjects ¶
func (*DB) ReplicateReferences ¶
func (db *DB) ReplicateReferences(ctx context.Context, class, shard, requestID string, refs []objects.BatchReference, ) replica.SimpleResponse
func (*DB) ReplicateUpdate ¶
func (db *DB) ReplicateUpdate(ctx context.Context, class, shard, requestID string, mergeDoc *objects.MergeDocument, ) replica.SimpleResponse
func (*DB) ResolveReferences ¶
func (db *DB) ResolveReferences(ctx context.Context, objs search.Results, props search.SelectProperties, groupBy *searchparams.GroupBy, addl additional.Properties, tenant string, ) (search.Results, error)
ResolveReferences takes a list of search results and enriches them with any referenced objects
func (*DB) SetSchemaGetter ¶
func (db *DB) SetSchemaGetter(sg schemaUC.SchemaGetter)
func (*DB) Shards ¶
Returns the list of nodes where shards of class are contained. If there are no shards for the class, returns an empty list If there are shards for the class but no nodes are found, return an error
func (*DB) ShardsBackup ¶
func (*DB) SparseObjectSearch ¶ added in v1.20.0
func (db *DB) SparseObjectSearch(ctx context.Context, params dto.GetParams) ([]*storobj.Object, []float32, error)
SparseObjectSearch is used to perform an inverted index search on the db
Earlier use cases required only []search.Result as a return value from the db, and the Class ClassSearch method fit this need. Later on, other use cases presented the need for the raw storage objects, such as hybrid search.
func (*DB) StartupComplete ¶
func (*DB) VectorSearch ¶
func (*DB) ZeroShotSearch ¶
func (db *DB) ZeroShotSearch(ctx context.Context, vector []float32, class string, properties []string, filter *libfilters.LocalFilter, ) ([]search.Result, error)
TODO: why is this logic in the persistence package? This is business-logic, move out of here!
type Index ¶
type Index struct { Config IndexConfig // contains filtered or unexported fields }
Index is the logical unit which contains all the data for one particular class. An index can be further broken up into self-contained units, called Shards, to allow for easy distribution across Nodes
func NewIndex ¶
func NewIndex(ctx context.Context, cfg IndexConfig, shardState *sharding.State, invertedIndexConfig schema.InvertedIndexConfig, vectorIndexUserConfig schema.VectorIndexConfig, sg schemaUC.SchemaGetter, cs inverted.ClassSearcher, logger logrus.FieldLogger, nodeResolver nodeResolver, remoteClient sharding.RemoteIndexClient, replicaClient replica.Client, promMetrics *monitoring.PrometheusMetrics, class *models.Class, jobQueueCh chan job, ) (*Index, error)
NewIndex creates an index with the specified amount of shards, using only the shards that are local to a node
func (*Index) AbortReplication ¶
func (*Index) CommitReplication ¶
func (*Index) ForEachShard ¶ added in v1.19.6
func (*Index) ForEachShardConcurrently ¶ added in v1.21.8
func (*Index) IncomingAggregate ¶
func (i *Index) IncomingAggregate(ctx context.Context, shardName string, params aggregation.Params, ) (*aggregation.Result, error)
func (*Index) IncomingBatchAddReferences ¶
func (*Index) IncomingBatchPutObjects ¶
func (*Index) IncomingCreateShard ¶
func (*Index) IncomingDeleteObject ¶
func (*Index) IncomingDeleteObjectBatch ¶
func (*Index) IncomingDigestObjects ¶ added in v1.18.0
func (*Index) IncomingExists ¶
func (*Index) IncomingFilePutter ¶
func (*Index) IncomingFindDocIDs ¶
func (*Index) IncomingGetObject ¶
func (i *Index) IncomingGetObject(ctx context.Context, shardName string, id strfmt.UUID, props search.SelectProperties, additional additional.Properties, ) (*storobj.Object, error)
func (*Index) IncomingGetShardStatus ¶
func (*Index) IncomingMergeObject ¶
func (*Index) IncomingMultiGetObjects ¶
func (*Index) IncomingOverwriteObjects ¶ added in v1.18.0
func (*Index) IncomingPutObject ¶
func (*Index) IncomingReinitShard ¶
func (*Index) IncomingSearch ¶
func (i *Index) IncomingSearch(ctx context.Context, shardName string, searchVector []float32, distance float32, limit int, filters *filters.LocalFilter, keywordRanking *searchparams.KeywordRanking, sort []filters.Sort, cursor *filters.Cursor, groupBy *searchparams.GroupBy, additional additional.Properties, ) ([]*storobj.Object, []float32, error)
func (*Index) IncomingUpdateShardStatus ¶
func (*Index) IterateObjects ¶
func (i *Index) IterateObjects(ctx context.Context, cb func(index *Index, shard *Shard, object *storobj.Object) error) (err error)
Iterate over all objects in the index, applying the callback function to each one. Adding or removing objects during iteration is not supported.
func (*Index) IterateShards ¶ added in v1.19.0
func (i *Index) IterateShards(ctx context.Context, cb func(index *Index, shard *Shard) error) (err error)
Iterate over all objects in the shard, applying the callback function to each one. Adding or removing objects during iteration is not supported.
func (*Index) ReleaseBackup ¶
ReleaseBackup marks the specified backup as inactive and restarts all async background and maintenance processes. It errors if the backup does not exist or is already inactive.
func (*Index) ReplicateDeletion ¶
func (*Index) ReplicateDeletions ¶
func (*Index) ReplicateObject ¶
func (*Index) ReplicateObjects ¶
func (*Index) ReplicateReferences ¶
func (i *Index) ReplicateReferences(ctx context.Context, shard, requestID string, refs []objects.BatchReference) replica.SimpleResponse
func (*Index) ReplicateUpdate ¶
func (i *Index) ReplicateUpdate(ctx context.Context, shard, requestID string, doc *objects.MergeDocument) replica.SimpleResponse
type IndexConfig ¶
type IndexConfig struct { RootPath string ClassName schema.ClassName QueryMaximumResults int64 QueryNestedRefLimit int64 ResourceUsage config.ResourceUsage MemtablesFlushIdleAfter int MemtablesInitialSizeMB int MemtablesMaxSizeMB int MemtablesMinActiveSeconds int MemtablesMaxActiveSeconds int ReplicationFactor int64 AvoidMMap bool TrackVectorDimensions bool }
type KnnAggregator ¶
type KnnAggregator struct {
// contains filtered or unexported fields
}
TODO: this is business logic, move out of here
func NewKnnAggregator ¶
func NewKnnAggregator(input search.Results, sourceVector []float32) *KnnAggregator
func (*KnnAggregator) Aggregate ¶
func (a *KnnAggregator) Aggregate(k int, properties []string) ([]classification.NeighborRef, error)
type Metrics ¶
type Metrics struct {
// contains filtered or unexported fields
}
func NewMetrics ¶
func NewMetrics( logger logrus.FieldLogger, prom *monitoring.PrometheusMetrics, className, shardName string, ) *Metrics
func (*Metrics) DeleteShardLabels ¶ added in v1.21.7
func (*Metrics) FilteredVectorFilter ¶ added in v1.18.0
func (*Metrics) FilteredVectorObjects ¶ added in v1.18.0
func (*Metrics) FilteredVectorSort ¶ added in v1.18.0
func (*Metrics) FilteredVectorVector ¶ added in v1.18.0
func (*Metrics) InvertedDeleteDelta ¶
func (*Metrics) InvertedDeleteOld ¶
func (*Metrics) ObjectStore ¶
func (*Metrics) PutObjectDetermineStatus ¶
func (*Metrics) PutObjectUpdateInverted ¶
func (*Metrics) PutObjectUpsertObject ¶
func (*Metrics) ShardStartup ¶
func (*Metrics) VectorIndex ¶
type Migrator ¶
type Migrator struct {
// contains filtered or unexported fields
}
func NewMigrator ¶
func NewMigrator(db *DB, logger logrus.FieldLogger) *Migrator
func (*Migrator) AddProperty ¶
func (*Migrator) AdjustFilterablePropSettings ¶ added in v1.19.0
As of v1.19 property's IndexInverted setting is replaced with IndexFilterable and IndexSearchable Filterable buckets use roaring set strategy and searchable ones use map strategy (therefore are applicabe just for text/text[]) Since both type of buckets can coexist for text/text[] props they need to be distinguished by their name: searchable bucket has "searchable" suffix. Up until v1.19 default text/text[]/string/string[] (string/string[] deprecated since v1.19) strategy for buckets was map, migrating from pre v1.19 to v1.19 needs to properly handle existing text/text[] buckets of map strategy having filterable bucket name.
Enabled InvertedIndex translates in v1.19 to both InvertedFilterable and InvertedSearchable enabled, but since only searchable bucket exist (with filterable name), it has to be renamed to searchable bucket. Though IndexFilterable setting is enabled filterable index does not exists, therefore shards are switched into fallback mode, to use searchable buckets instead of filterable ones whenever filtered are expected. Fallback mode efectivelly sets IndexFilterable to false, although it stays enabled according to schema.
If filterable indexes will be created (that is up to user to decide whether missing indexes should be created later on), shards will not be working in fallback mode, and actual filterable index will be used when needed.
func (*Migrator) DeleteTenants ¶ added in v1.20.0
func (m *Migrator) DeleteTenants(ctx context.Context, class *models.Class, tenants []string) (commit func(success bool), err error)
DeleteTenants deletes tenants and returns a commit func that can be used to either commit or rollback deletion
func (*Migrator) DropProperty ¶
DropProperty is ignored, API compliant change
func (*Migrator) GetShardsStatus ¶
func (*Migrator) InvertedReindex ¶ added in v1.18.0
func (*Migrator) NewTenants ¶ added in v1.20.0
func (m *Migrator) NewTenants(ctx context.Context, class *models.Class, creates []*migrate.CreateTenantPayload) (commit func(success bool), err error)
NewTenants creates new partitions and returns a commit func that can be used to either commit or rollback the partitions
func (*Migrator) RecalculateVectorDimensions ¶
func (*Migrator) RecountProperties ¶ added in v1.19.0
func (*Migrator) UpdateClass ¶
func (*Migrator) UpdateInvertedIndexConfig ¶
func (*Migrator) UpdateProperty ¶
func (*Migrator) UpdateShardStatus ¶
func (*Migrator) UpdateTenants ¶ added in v1.21.0
func (m *Migrator) UpdateTenants(ctx context.Context, class *models.Class, updates []*migrate.UpdateTenantPayload) (commit func(success bool), err error)
UpdateTenans activates or deactivates tenant partitions and returns a commit func that can be used to either commit or rollback the changes
func (*Migrator) UpdateVectorIndexConfig ¶
func (*Migrator) ValidateInvertedIndexConfigUpdate ¶
func (*Migrator) ValidateVectorIndexConfigUpdate ¶
type PropertyIndexType ¶ added in v1.18.0
type PropertyIndexType uint8
const ( IndexTypePropValue PropertyIndexType = iota + 1 IndexTypePropLength IndexTypePropNull IndexTypePropSearchableValue )
func GetPropNameAndIndexTypeFromBucketName ¶ added in v1.18.0
func GetPropNameAndIndexTypeFromBucketName(bucketName string) (string, PropertyIndexType)
type ReindexableProperty ¶ added in v1.18.0
type ReindexableProperty struct { PropertyName string IndexType PropertyIndexType NewIndex bool // is new index, there is no bucket to replace with DesiredStrategy string BucketOptions []lsmkv.BucketOption }
type Replicator ¶
type Replicator interface { ReplicateObject(ctx context.Context, shardName, requestID string, object *storobj.Object) replica.SimpleResponse ReplicateObjects(ctx context.Context, shardName, requestID string, objects []*storobj.Object) replica.SimpleResponse ReplicateUpdate(ctx context.Context, shard, requestID string, doc *objects.MergeDocument) replica.SimpleResponse ReplicateDeletion(ctx context.Context, shardName, requestID string, uuid strfmt.UUID) replica.SimpleResponse ReplicateDeletions(ctx context.Context, shardName, requestID string, docIDs []uint64, dryRun bool) replica.SimpleResponse ReplicateReferences(ctx context.Context, shard, requestID string, refs []objects.BatchReference) replica.SimpleResponse CommitReplication(shard, requestID string) interface{} AbortReplication(shardName, requestID string) interface{} }
type Shard ¶
type Shard struct {
// contains filtered or unexported fields
}
Shard is the smallest completely-contained index unit. A shard manages database files for all the objects it owns. How a shard is determined for a target object (e.g. Murmur hash, etc.) is still open at this point
func NewShard ¶
func NewShard(ctx context.Context, promMetrics *monitoring.PrometheusMetrics, shardName string, index *Index, class *models.Class, jobQueueCh chan job, ) (*Shard, error)
func (*Shard) Dimensions ¶
type ShardInvertedReindexTask ¶ added in v1.18.0
type ShardInvertedReindexTask interface { GetPropertiesToReindex(ctx context.Context, shard *Shard, ) ([]ReindexableProperty, error) // right now only OnResume is needed, but in the future more // callbacks could be added // (like OnPrePauseStore, OnPostPauseStore, OnPreResumeStore, etc) OnPostResumeStore(ctx context.Context, shard *Shard) error }
type ShardInvertedReindexTaskSetToRoaringSet ¶ added in v1.18.0
type ShardInvertedReindexTaskSetToRoaringSet struct{}
func (*ShardInvertedReindexTaskSetToRoaringSet) GetPropertiesToReindex ¶ added in v1.18.0
func (t *ShardInvertedReindexTaskSetToRoaringSet) GetPropertiesToReindex(ctx context.Context, shard *Shard, ) ([]ReindexableProperty, error)
func (*ShardInvertedReindexTaskSetToRoaringSet) OnPostResumeStore ¶ added in v1.19.0
func (t *ShardInvertedReindexTaskSetToRoaringSet) OnPostResumeStore(ctx context.Context, shard *Shard) error
type ShardInvertedReindexer ¶ added in v1.18.0
type ShardInvertedReindexer struct {
// contains filtered or unexported fields
}
func NewShardInvertedReindexer ¶ added in v1.18.0
func NewShardInvertedReindexer(shard *Shard, logger logrus.FieldLogger) *ShardInvertedReindexer
func (*ShardInvertedReindexer) AddTask ¶ added in v1.18.0
func (r *ShardInvertedReindexer) AddTask(task ShardInvertedReindexTask)
type VectorIndex ¶
type VectorIndex interface { Dump(labels ...string) Add(id uint64, vector []float32) error Delete(id ...uint64) error SearchByVector(vector []float32, k int, allow helpers.AllowList) ([]uint64, []float32, error) SearchByVectorDistance(vector []float32, dist float32, maxLimit int64, allow helpers.AllowList) ([]uint64, []float32, error) UpdateUserConfig(updated schema.VectorIndexConfig, callback func()) error Drop(ctx context.Context) error Shutdown(ctx context.Context) error Flush() error SwitchCommitLogs(ctx context.Context) error ListFiles(ctx context.Context) ([]string, error) PostStartup() ValidateBeforeInsert(vector []float32) error }
VectorIndex is anything that indexes vectors efficiently. For an example look at ./vector/hnsw/index.go
Source Files ¶
- backup.go
- batch.go
- classification.go
- crud.go
- disk_use_unix.go
- group_merger.go
- index.go
- index_cyclecallbacks.go
- index_sharding_backward_compatibility.go
- init.go
- inverted_migrator_filter_to_search.go
- inverted_reindexer.go
- inverted_reindexer_index_types.go
- inverted_reindexer_missing_text_filterable.go
- inverted_reindexer_set_to_roaringset.go
- inverted_reindexer_utils.go
- metrics.go
- migrator.go
- nodes.go
- replication.go
- repo.go
- resource_use.go
- search.go
- shard.go
- shard_aggregate.go
- shard_backup.go
- shard_cyclecallbacks.go
- shard_dimension_tracking.go
- shard_geo_props.go
- shard_group_by.go
- shard_init_properties.go
- shard_read.go
- shard_replication.go
- shard_status.go
- shard_version.go
- shard_write_batch_delete.go
- shard_write_batch_objects.go
- shard_write_batch_references.go
- shard_write_delete.go
- shard_write_inverted.go
- shard_write_inverted_lsm.go
- shard_write_inverted_lsm_delete.go
- shard_write_merge.go
- shard_write_put.go
- sortby_distances.go
- sortby_id.go
- sortby_scores.go
- vector_index.go
Directories ¶
Path | Synopsis |
---|---|
clusterintegrationtest acts as a test package to provide a compoenent test spanning multiple parts of the application, including everything that's required for a distributed setup.
|
clusterintegrationtest acts as a test package to provide a compoenent test spanning multiple parts of the application, including everything that's required for a distributed setup. |
entities
ent contains common types used throughout various lsmkv (sub-)packages
|
ent contains common types used throughout various lsmkv (sub-)packages |
roaringset
The "roaringset" package contains all the LSM business logic that is unique to the "RoaringSet" strategy
|
The "roaringset" package contains all the LSM business logic that is unique to the "RoaringSet" strategy |
vector
|
|
hnsw/distancer/asm
asm only has amd64 specific implementations at the moment
|
asm only has amd64 specific implementations at the moment |