Timo originates from [Cobar]. Timo is a distributed MySQL database middleware that supports horizontal and vertical splitting of data, sub-database and sub-table, read-write separation, result set merging, and automatic failover.
https://github.com/gaojingsong/Timo
Terminology in Timo
Here are some terms that may be used in Timo's code or documentation:
Logical database: a collection of tables in the eyes of Timo users
Logical data table: a table in the eyes of Timo users
Physical database: A database on MySQL, uniquely identified by IP, port, and database name
Physical data table: a table in a MySQL database
MySQL instance: MySQL service, uniquely identified by IP and port
Configuration Repository: The physical database that holds Timo configuration information
Data splitting: Disperse the data stored in the same database into multiple databases
Horizontal split: The data of the same table is scattered and stored in multiple databases, and the table structures in these databases are exactly the same
Vertical splitting: Disperse multiple tables in one library into multiple databases, and the table structures in these databases are not exactly the same
Data node: The data splitting unit in Timo, which represents a part of data decentralized storage, also known as data sharding
Data source: The physical storage location of data node data, usually consisting of a physical database in Timo
Sharded table: The logical table is stored in multiple data nodes, and the data of all these data nodes together form a complete table data
Global table: The data of the logical table in multiple data nodes is the same, which is a kind of redundancy
Single database: refers to the operation involving only a single data node
Cross-database: refers to the operation involving multiple data nodes
Routing: A mapping of data content to data nodes
Split field: Timo will route based on the value of the field
Split function: a mapping of specific values to data nodes
Splitting rule: an association between the splitting field and the splitting function, and the sharding table routes data according to it
Service port: The port that Timo provides data services, usually 8066
Management port: Timo provides the port for management and monitoring services, usually 9066
Front-end connections: front-end users' connections to Timo
Backend connections: Timo's connections to backend MySQL
Heartbeat detection: Timo confirms the availability of back-end data sources by executing SQL regularly
Downtime switch: When Timo finds that the back-end data source is unavailable, switch the data node to other available data sources
HINT: A way to bypass the Timo parser to execute SQL, opaque to front-end applications
Todo List
Backend NIO Retrofit
Thread pool transformation
Connection pool transformation
Configuration file transformation
Routing transformation
result set processing
Heartbeat Makeover
Management side transformation
High availability
read-write separation
Complete documentation
affairs
XA Transactions
serial number
JOIN
cluster
function extension