Documentation
¶
Index ¶
- func EstimateCompressionRatio(data []byte) map[string]float64
- func OptimizeJSONKeys(data []byte) ([]byte, map[string]string, error)
- type CompressedData
- type CompressionLevel
- type CompressionType
- type Compressor
- type OptimizerConfig
- type StorageOptimizer
- func (so *StorageOptimizer) GetCompressionStats(ctx context.Context) (map[string]interface{}, error)
- func (so *StorageOptimizer) OptimizedMongoBatchInsert(ctx context.Context, collection string, documents []interface{}) error
- func (so *StorageOptimizer) OptimizedRedisGet(ctx context.Context, key string, value interface{}) error
- func (so *StorageOptimizer) OptimizedRedisSet(ctx context.Context, key string, value interface{}, ttl time.Duration) error
- func (so *StorageOptimizer) RestoreDocument(doc map[string]interface{}) (map[string]interface{}, error)
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func EstimateCompressionRatio ¶
EstimateCompressionRatio estimates the compression ratio for different types
Types ¶
type CompressedData ¶
type CompressedData struct { Type CompressionType `msgpack:"t"` OriginalSize uint32 `msgpack:"os"` Compressed []byte `msgpack:"c"` Checksum uint32 `msgpack:"cs,omitempty"` }
CompressedData represents compressed data with metadata
func WrapCompressed ¶
func WrapCompressed(data []byte, cType CompressionType, originalSize int) *CompressedData
WrapCompressed wraps compressed data with metadata
type CompressionLevel ¶
type CompressionLevel int
CompressionLevel defines compression level
const ( CompressionFastest CompressionLevel = 1 CompressionDefault CompressionLevel = 5 CompressionBest CompressionLevel = 9 )
type CompressionType ¶
type CompressionType uint8
CompressionType defines the type of compression
const ( CompressionNone CompressionType = iota CompressionGzip CompressionZlib CompressionZstd CompressionMsgpack CompressionMsgpackZstd // MsgPack + Zstd for best compression )
type Compressor ¶
type Compressor struct {
// contains filtered or unexported fields
}
Compressor handles data compression
func NewCompressor ¶
func NewCompressor(cType CompressionType, level CompressionLevel) (*Compressor, error)
NewCompressor creates a new compressor
func (*Compressor) Compress ¶
func (c *Compressor) Compress(data []byte) ([]byte, error)
Compress compresses data based on the compression type
func (*Compressor) CompressJSON ¶
func (c *Compressor) CompressJSON(v interface{}) ([]byte, error)
CompressJSON compresses JSON data with optimization
func (*Compressor) Decompress ¶
func (c *Compressor) Decompress(data []byte) ([]byte, error)
Decompress decompresses data
func (*Compressor) DecompressJSON ¶
func (c *Compressor) DecompressJSON(data []byte, v interface{}) error
DecompressJSON decompresses and unmarshals JSON data
type OptimizerConfig ¶
type OptimizerConfig struct { // Compression settings CompressionType CompressionType CompressionLevel CompressionLevel MinSizeForCompression int // Minimum size in bytes to trigger compression // Redis optimization EnableRedisCompression bool RedisKeyPrefix string // MongoDB optimization EnableMongoCompression bool MongoCompactKeys bool // Use short keys for MongoDB documents // Automatic optimization AutoSelectCompression bool // Automatically select best compression based on data }
OptimizerConfig contains optimizer configuration
type StorageOptimizer ¶
type StorageOptimizer struct {
// contains filtered or unexported fields
}
StorageOptimizer optimizes storage for Redis and MongoDB
func NewStorageOptimizer ¶
func NewStorageOptimizer(config *OptimizerConfig, redis *redis.Client, mongodb *mongo.Database) (*StorageOptimizer, error)
NewStorageOptimizer creates a new storage optimizer
func (*StorageOptimizer) GetCompressionStats ¶
func (so *StorageOptimizer) GetCompressionStats(ctx context.Context) (map[string]interface{}, error)
GetCompressionStats returns compression statistics
func (*StorageOptimizer) OptimizedMongoBatchInsert ¶
func (so *StorageOptimizer) OptimizedMongoBatchInsert(ctx context.Context, collection string, documents []interface{}) error
OptimizedMongoBatchInsert performs optimized batch insert to MongoDB
func (*StorageOptimizer) OptimizedRedisGet ¶
func (so *StorageOptimizer) OptimizedRedisGet(ctx context.Context, key string, value interface{}) error
OptimizedRedisGet retrieves and decompresses data from Redis
func (*StorageOptimizer) OptimizedRedisSet ¶
func (so *StorageOptimizer) OptimizedRedisSet(ctx context.Context, key string, value interface{}, ttl time.Duration) error
OptimizedRedisSet stores compressed data in Redis
func (*StorageOptimizer) RestoreDocument ¶
func (so *StorageOptimizer) RestoreDocument(doc map[string]interface{}) (map[string]interface{}, error)
RestoreDocument restores a compacted/compressed document