router

package
v1.0.1 Latest Latest
Warning

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

Go to latest
Published: Sep 17, 2018 License: GPL-3.0 Imports: 18 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// MockDefaultConfig config.
	MockDefaultConfig = []*config.PartitionConfig{
		&config.PartitionConfig{
			Table:   "A2",
			Segment: "2-4",
			Backend: "backend2",
		},
		&config.PartitionConfig{
			Table:   "A4",
			Segment: "4-8",
			Backend: "backend4",
		},
	}
)

Functions

func MockTable64Config

func MockTable64Config() *config.TableConfig

MockTable64Config config.

func MockTableAConfig

func MockTableAConfig() *config.TableConfig

MockTableAConfig config.

func MockTableBConfig

func MockTableBConfig() *config.TableConfig

MockTableBConfig config.

func MockTableE1Config

func MockTableE1Config() *config.TableConfig

MockTableE1Config config, unsupport shardtype.

func MockTableGreaterThanConfig

func MockTableGreaterThanConfig() *config.TableConfig

MockTableGreaterThanConfig config.

func MockTableInvalidConfig

func MockTableInvalidConfig() *config.TableConfig

MockTableInvalidConfig config.

func MockTableMConfig

func MockTableMConfig() *config.TableConfig

MockTableMConfig config.

func MockTableNULLConfig

func MockTableNULLConfig() *config.TableConfig

MockTableNULLConfig config.

func MockTableOverlapConfig

func MockTableOverlapConfig() *config.TableConfig

MockTableOverlapConfig config.

func MockTableSegmentEndErrConfig

func MockTableSegmentEndErrConfig() *config.TableConfig

MockTableSegmentEndErrConfig config.

func MockTableSegmentErr1Config

func MockTableSegmentErr1Config() *config.TableConfig

MockTableSegmentErr1Config config.

func MockTableSegmentStartErrConfig

func MockTableSegmentStartErrConfig() *config.TableConfig

MockTableSegmentStartErrConfig config.

Types

type DatabaseACL

type DatabaseACL struct {
	// contains filtered or unexported fields
}

DatabaseACL tuple.

func NewDatabaseACL

func NewDatabaseACL() *DatabaseACL

NewDatabaseACL creates new database acl.

func (*DatabaseACL) Allow

func (acl *DatabaseACL) Allow(db string) bool

Allow used to check to see if the db is system database.

type Hash

type Hash struct {
	Segments []Segment `json:",omitempty"`
	// contains filtered or unexported fields
}

Hash tuple.

func NewHash

func NewHash(log *xlog.Log, slots int, conf *config.TableConfig) *Hash

NewHash creates new hash.

func (*Hash) Build

func (h *Hash) Build() error

Build used to build hash bitmap from schema config

func (*Hash) Clear

func (h *Hash) Clear() error

Clear used to clean hash partitions

func (*Hash) Lookup

func (h *Hash) Lookup(start *sqlparser.SQLVal, end *sqlparser.SQLVal) ([]Segment, error)

Lookup used to lookup partition(s) through the sharding-key range Hash.Lookup only supports the type uint64/string

func (*Hash) Type

func (h *Hash) Type() MethodType

Type returns the hash type.

type HashRange

type HashRange struct {
	Start int
	End   int
}

HashRange tuple. [Start, End)

func (*HashRange) Less

func (r *HashRange) Less(b KeyRange) bool

Less impl.

func (*HashRange) String

func (r *HashRange) String() string

String returns start-end info.

type KeyRange

type KeyRange interface {
	String() string
	Less(KeyRange) bool
}

KeyRange tuple.

type MethodType

type MethodType string

MethodType type.

type Partition

type Partition interface {
	Build() error
	Lookup(start *sqlparser.SQLVal, end *sqlparser.SQLVal) ([]Segment, error)
}

Partition interface.

type RDatabase

type RDatabase struct {
	DB     string
	Tables []*Table
}

RDatabase tuple.

type Router

type Router struct {

	// schemas map, key is database name
	Schemas map[string]*Schema `json:",omitempty"`
	// contains filtered or unexported fields
}

Router tuple.

func MockNewRouter

func MockNewRouter(log *xlog.Log) (*Router, func())

MockNewRouter mocks router.

func NewRouter

func NewRouter(log *xlog.Log, metadir string, conf *config.RouterConfig) *Router

NewRouter creates the new router.

func (*Router) AddForTest

func (r *Router) AddForTest(db string, confs ...*config.TableConfig) error

AddForTest used to add table config for test.

func (*Router) CreateTable

func (r *Router) CreateTable(db, table, shardKey string, backends []string) error

CreateTable used to add a table to router and flush the schema to disk. Lock.

func (*Router) DatabaseACL

func (r *Router) DatabaseACL(database string) error

DatabaseACL used to check wheather the database is a system database.

func (*Router) DropDatabase

func (r *Router) DropDatabase(db string) error

DropDatabase used to remove a database-schema from the schemas and remove all the table-schema files who belongs to this database.

func (*Router) DropTable

func (r *Router) DropTable(db, table string) error

DropTable used to remove a table from router and remove the schema file from disk.

func (*Router) HashUniform

func (r *Router) HashUniform(table, shardkey string, backends []string) (*config.TableConfig, error)

HashUniform used to uniform the hash slots to backends.

func (*Router) JSON

func (r *Router) JSON() string

JSON returns the info of router.

func (*Router) LoadConfig

func (r *Router) LoadConfig() error

LoadConfig used to load all schemas stored in metadir. When an IO error occurs during the file reading, panic me.

func (*Router) Lookup

func (r *Router) Lookup(database string, tableName string, startKey *sqlparser.SQLVal, endKey *sqlparser.SQLVal) ([]Segment, error)

Lookup used to lookup a router(partition table name and backend) through db&table

func (*Router) PartitionRuleShift

func (r *Router) PartitionRuleShift(fromBackend string, toBackend string, database string, partitionTable string) error

PartitionRuleShift used to shift a rule from backend to another. The processes as: 1. change the backend in memory. 2. flush the table config to disk. 3. reload the config to memory. Note: If the reload fails, panic it since the config is in chaos.

func (*Router) ReLoad

func (r *Router) ReLoad() error

ReLoad used to re-load the config files from disk to cache.

func (*Router) RefreshTable

func (r *Router) RefreshTable(db, table string) error

RefreshTable used to re-update the table from file. Lock.

func (*Router) Rules

func (r *Router) Rules() *Rule

Rules returns router's schemas.

func (*Router) ShardKey

func (r *Router) ShardKey(database string, tableName string) (string, error)

ShardKey used to lookup shardkey from given database and table name

func (*Router) TableConfig

func (r *Router) TableConfig(database string, tableName string) (*config.TableConfig, error)

TableConfig returns the config by database and tableName.

func (*Router) Tables

func (r *Router) Tables() map[string][]string

Tables returns all the tables.

type Rule

type Rule struct {
	Schemas []RDatabase
}

Rule tuple.

type Schema

type Schema struct {
	// database name
	DB string `json:",omitempty"`
	// tables map, key is table name
	Tables map[string]*Table `json:",omitempty"`
}

Schema tuple.

type Segment

type Segment struct {
	// Segment table name.
	Table string `json:",omitempty"`
	// Segment backend name.
	Backend string `json:",omitempty"`
	// key range of this segment.
	Range KeyRange `json:",omitempty"`
}

Segment tuple.

type Segments

type Segments []Segment

Segments slice.

func (Segments) Len

func (q Segments) Len() int

Len impl.

func (Segments) Less

func (q Segments) Less(i, j int) bool

Less impl.

func (Segments) Swap

func (q Segments) Swap(i, j int)

Segments impl.

type Table

type Table struct {
	// Table name
	Name string `json:",omitempty"`
	// Shard key
	ShardKey string `json:",omitempty"`
	// partition method
	Partition Partition `json:",omitempty"`
	// table config.
	TableConfig *config.TableConfig `json:"-"`
}

Table tuple.

Jump to

Keyboard shortcuts

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