mvcc

package
v2.0.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 9, 2021 License: Apache-2.0 Imports: 14 Imported by: 4

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrClose         = errx.New("Ошибка завершения транзакции")
	ErrSelect        = errx.New("Ошибка получения данных")
	ErrUpsert        = errx.New("Ошибка обновления данных")
	ErrDelete        = errx.New("Ошибка удаления данных")
	ErrSeqScan       = errx.New("Ошибка полной выборки данных")
	ErrNotFound      = errx.New("Отсутствует значение")
	ErrDuplicate     = errx.New("Дублирующее значение")
	ErrBLOBLoad      = errx.New("Ошибка загрузки BLOB")
	ErrBLOBDrop      = errx.New("Ошибка удаления BLOB")
	ErrBLOBSave      = errx.New("Ошибка сохранения BLOB")
	ErrSharedLock    = errx.New("Ошибка получения блокировки")
	ErrReleaseLock   = errx.New("Ошибка освобождения блокировки")
	ErrVacuum        = errx.New("Ошибка автоочистки значений")
	ErrAlreadyLocked = errx.New("Уже получена другая блокировка, нужно сначала освободить ее")
)

Ошибки модуля

View Source
var TxCacheSize = 8000000

TxCacheSize - размер глобального кеша статусов завершенных транзакций

Functions

func UnwrapKey

func UnwrapKey(key fdb.Key) fdb.Key

UnwrapKey - обертка ключа для получения пользовательского ключа из системного, при загрузке

func WithTx

func WithTx(dbc db.Connection, hdl TxHandler) (err error)

WithTx - выполнение метода в рамках транзакции

func WrapKey

func WrapKey(key fdb.Key) fdb.Key

WrapKey - обертка для получения системного ключа из пользовательского, при сохранении

func WrapLockKey

func WrapLockKey(key fdb.Key) fdb.Key

WrapLockKey - обертка для получения системного ключа из пользовательского, при сохранении

func WrapTxKey

func WrapTxKey(key fdb.Key) fdb.Key

WrapTxKey - обертка для получения системного ключа из пользовательского, при сохранении

func WrapWatchKey

func WrapWatchKey(key fdb.Key) fdb.Key

WrapWatchKey - обертка для получения системного ключа из пользовательского, при сохранении

Types

type CommitHandler

type CommitHandler func(db.Writer) error

CommitHandler - обработчик события завершения логической транзакции

type Option

type Option func(*options)

Option - дополнительный аргумент при выполнении команды

func Exclusive

func Exclusive(hdl RowHandler) Option

func From

func From(k fdb.Key) Option

func Last

func Last(k fdb.Key) Option

func Limit

func Limit(l int) Option

func Lock

func Lock() Option

func MaxRowMem

func MaxRowMem(size int) Option

func MaxRowSize

func MaxRowSize(size int) Option

func OnDelete

func OnDelete(hdl RowHandler) Option

func OnInsert

func OnInsert(hdl RowHandler) Option

func OnUpdate

func OnUpdate(hdl RowHandler) Option

func OnVacuum

func OnVacuum(hdl RowHandler) Option

func Physical added in v2.0.1

func Physical() Option

func Reverse

func Reverse() Option

func SelectPack added in v2.0.1

func SelectPack(size int) Option

func Writer

func Writer(w db.Writer) Option

type RowHandler

type RowHandler func(Tx, db.Writer, fdb.KeyValue) error

RowHandler - обработчик события операции с записью в рамках физической транзакции

type Tx

type Tx interface {
	// Ссылка на подключение к БД, на всякий случай
	Conn() db.Connection

	// Неудачное завершение (отклонение) транзакции
	// Поддерживает опции Writer
	Cancel(args ...Option)

	// Успешное завершение (принятие) транзакции
	// Перед завершением выполняет хуки OnCommit
	// Поддерживает опции Writer
	Commit(args ...Option) error

	// Выборка актуального значения для ключа
	Select(fdb.Key, ...Option) (fdb.KeyValue, error)

	// Выборка нескольких объектов, в результате использовано печатное представление ключа
	SelectMany(keys []fdb.Key, args ...Option) (res map[string]fdb.KeyValue, err error)

	// Удаление значения для ключа
	// Поддерживает опции Writer
	Delete([]fdb.Key, ...Option) error

	// Вставка или обновление значения для ключа
	// Поддерживает опции Writer
	Upsert([]fdb.KeyValue, ...Option) error

	// Последовательная выборка всех активных ключей в диапазоне
	// Поддерживает опции From, To, Reverse, Limit, PackSize, Exclusive, Writer
	ListAll(context.Context, ...Option) ([]fdb.KeyValue, error)

	// Последовательная выборка всех активных ключей в диапазоне
	// Поддерживает опции From, To, Reverse, Limit, PackSize, Exclusive, Writer
	SeqScan(context.Context, ...Option) (<-chan fdb.KeyValue, <-chan error)

	// Загрузка бинарных данных по ключу, указывается ожидаемый размер
	LoadBLOB(fdb.Key, ...Option) ([]byte, error)

	// Удаление бинарных данных по ключу
	// Поддерживает опции Writer
	DropBLOB(fdb.Key, ...Option) error

	// Сохранение бинарных данных по ключу
	SaveBLOB(fdb.Key, []byte, ...Option) error

	// Блокировка записи с доступом на чтение по сигнальному ключу
	SharedLock(...fdb.Key) error

	// Немедленно освобождает блокировку всех ключей, указанных в SharedLock
	ReleaseLocks()

	// Регистрация хука для выполнения при удачном завершении транзакции
	OnCommit(CommitHandler)

	// Запуск очистки устаревших записей ключей по указанному префиксу
	Vacuum(fdb.Key, ...Option) error

	// Изменение сигнального ключа, чтобы сработали Watch
	// По сути, выставляет хук OnCommit с правильным содержимым
	Touch(fdb.Key)

	// Ожидание изменения сигнального ключа в Touch
	Watch(fdb.Key) (db.Waiter, error)
}

Tx - объект "логической" транзакции MVCC поверх "физической" транзакции FDB

func Begin

func Begin(dbc db.Connection) Tx

Begin - создание и старт новой транзакции

type TxHandler

type TxHandler func(Tx) error

TxHandler - обработчик события операции с записью

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL