Documentation ¶
Overview ¶
Package writecache implements write-cache for objects.
It contains in-memory cache of fixed size and underlying database (usually on SSD) for storing small objects. There are 3 places where object can be: 1. In-memory cache. 2. On-disk cache DB. 3. Main storage (blobstor).
There are 2 types of background jobs:
- Persisting objects from in-memory cache to database.
- Flushing objects from database to blobstor. On flushing object address is put in in-memory LRU cache. The actual deletion from the DB is done when object is evicted from this cache.
Putting objects to the main storage is done by multiple workers. Some of them prioritize flushing items, others prioritize putting new objects. The current ration is 50/50. This helps to make some progress even under load.
Index ¶
- Variables
- type Cache
- type Option
- func WithBlobstor(bs *blobstor.BlobStor) Option
- func WithFlushWorkersCount(c int) Option
- func WithLogger(log *zap.Logger) Option
- func WithMaxDBSize(sz uint64) Option
- func WithMaxMemSize(sz uint64) Option
- func WithMaxObjectSize(sz uint64) Option
- func WithMetabase(db *meta.DB) Option
- func WithPath(path string) Option
- func WithSmallObjectSize(sz uint64) Option
Constants ¶
This section is empty.
Variables ¶
var ErrBigObject = errors.New("too big object")
ErrBigObject is returned when object is too big to be placed in cache.
Functions ¶
This section is empty.
Types ¶
type Cache ¶
type Cache interface { Get(*objectSDK.Address) (*object.Object, error) Delete(*objectSDK.Address) error Put(*object.Object) error Init() error Open() error Close() error }
Cache represents write-cache for objects.
type Option ¶
type Option func(*options)
Option represents write-cache configuration option.
func WithBlobstor ¶
WithBlobstor sets main object storage.
func WithFlushWorkersCount ¶
func WithMaxDBSize ¶
WithMaxDBSize sets maximum size for on-disk DB.
func WithMaxMemSize ¶
WithMaxMemSize sets maximum size for in-memory DB.
func WithMaxObjectSize ¶
WithMaxObjectSize sets maximum object size to be stored in write-cache.
func WithSmallObjectSize ¶
WithSmallObjectSize sets maximum object size to be stored in write-cache.