【Amoeba for MySQL 】

Amoeba (Amoeba) project, the open source framework began to release an Amoeba forMysql software in 2008. This software is dedicated to the distributed database front-end proxy layer of MySQL. It mainly acts as the SQL routing function when the application layer accesses MySQL, and focuses on the development of the distributed database proxy layer (Database Proxy).

 

Amoeba for MySQL is dedicated to MySQL's distributed database front-end proxy layer. It mainly acts as a query routing function when the application layer accesses MySQL, focusing on distributed database proxy development. It is located between Client and DB Server(s). Transparent to the client. It has load balancing, high availability, query filtering, read-write separation, can route related queries to the target database, and can concurrently request multiple databases to merge results. On Amoeba, you can complete the functions of high availability, load balancing, and data slicing of multiple data sources.



 

Amoeba mainly solves:

• Reduce the complex multi-database structure caused by data segmentation

• Provide segmentation rules and reduce the impact of data segmentation rules on applications

• Reduce the number of db connections to clients

• Read-write separation

 

Sharding is not a function attached to a specific database product, but an abstraction on top of specific technical details. It is a Scale Out solution, the main purpose is to solve the capacity limitation of a single-node database server and the scalability of the entire application architecture.

 

There are two main ways to shard: Horizontal Sharding and Vertical Sharding. Horizontal segmentation refers to horizontally distributing data to different DBs or tables through a series of segmentation rules, and finding the specific DB or table that needs to be queried through the corresponding DB routing or table routing rules to perform Query operations. For example, the user table is divided into multiple databases according to the user ID. Vertical segmentation refers to segmenting according to business and product, and assigning different types of data to different servers, dredging the communication between programs and multiple databases through database agents, and reducing the complexity of applications.

 

Read-write separation simply means that the database read and write operations are separated to correspond to different database servers, which can effectively reduce database pressure and IO pressure. The master database provides write operations and the slave database provides read operations, which not only avoids the overload of the master database server (Master), but also effectively utilizes the resources of the slave database server (Slave).

 

 

Then Amoeba for mysql is a virtual mysql to the client program, and provides the mysql protocol to the outside world. The client connects to amoeba just like connecting to mysql. Related authentication properties need to be configured inside amoeba.

 

 

What can't Amoeba do?

• Transactions are not currently supported

• Temporarily does not support stored procedures (will be supported in the near future)

• It is not suitable for the scenario of importing data from amoeba or the query for large data volume query (such as the occasion where a request returns more than 10w or even more data)

• Temporarily does not support sub-database and sub-table, amoeba currently only sub-database instance, each segmented node needs to keep the database table structure consistent

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=326155136&siteId=291194637