MariaDB MaxScale
The world's most advanced database proxy
MaxScale 是 MariaDB 开发的一个数据库智能代理服务,允许根据数据库 SQL 语句将请求转向目标一个到多个服务器,可设定各种复杂程度的转向规则。
MaxScale 设计用于透明的提供数据库的负载均衡和高可用性,同时提供高度可伸缩和灵活的架构,支持不同的协议和路由决策。MaxScale 使用 C 语言开发,利用 Linux 下的异步 I/O 功能。使用 epoll 作为事件驱动框架。
The MariaDB Corporation MaxScale is an intelligent proxy that allows forwarding of database statements to one or more database servers using complex rules, a semantic understanding of the database statements and the roles of the various servers within the backend cluster of databases.
MaxScale is designed to provide load balancing and high availability functionality transparently to the applications. In addition it provides a highly scalable and flexible architecture, with plugin components to support different protocols and routing decisions.
MaxScale is implemented in C and makes extensive use of the asynchronous I/O capabilities of the Linux operating system. The epoll system is used to provide the event driven framework for the input and output via sockets.
MariaDB MaxScale is a database proxy that extends the high availability, scalability, and security of MariaDB Server while at the same time simplifying application development by decoupling it from underlying database infrastructure.
MariaDB MaxScale is engineered with an extensible architecture to support plugins, extending its functionality beyond transparent load balancing to become, for example, a database firewall. With built-in plugins for multiple routers, filters and protocols, MariaDB MaxScale can be configured to forward database requests and modify database responses based on business and technical requirements — for example, to mask sensitive data or scale reads.
Firewall--数据库防火墙
MariaDB MaxScale includes a database firewall filter to block queries based on the rules configured — for example, based on the statement type, the functions used, the columns selected or the frequency of queries. MariaDB MaxScale 2.1 extends filtering to prepared statements.
数据库防火墙的 Prepared statement 过滤:数据库防火墙过滤器现在也将过滤规则应用于 Prepared statement。
数据库防火墙的功能过滤:现在,数据库防火墙过滤器会根据存在的功能添加一个规则来对查询进行白名单或黑名单。
Denial of service protection--DoS是Denial of Service的简称,即拒绝服务
MariaDB MaxScale 2.1 introduces a result set limiting plugin to prevent queries, prepared statements and stored procedures from causing a denial of service, intentional or not, by returning too much data. The maximum result set size can be configured in rows or bytes.
Read-write splitting--读写拆分
MariaDB MaxScale includes a router to split reads and writes when multi-master clustering or master/slave replication is configured, while writes are executed a single master node and reads are executed on multiple slave modes — and it can be done without modifying the application.
Change-data-capture--变化数据捕获
MariaDB MaxScale includes a change-data-capture protocol that, when combined with the Avro router, reads binary log events and streams them to clients where the data can be consumed as Avro objects or JSON documents — for example, with the included CDC client and Kafka producer.
Data masking--数据屏蔽
MariaDB MaxScale 2.1 introduces a data masking filter to protect sensitive data by inspecting query results and obfuscating the data in specific columns based on the rules configured. When combined with the database firewall filter, access to sensitive data can be restricted.
Bulk insert streaming--Streaming insert 插件
MariaDB MaxScale 2.1 introduces a filter for bulk insert streaming, converting all of the inserts within an explicit transaction into a single CSV data stream for direct loading with greater efficiency, improving performance and reducing network traffic.
Schema-based sharding
MariaDB MaxScale includes a schema router to support multitenant environments, where every tenant has its own schema and schemas may be on different databases, or to create a single logical database from multiple physical databases — all transparent to the application.
Querying caching--查询缓存
MariaDB MaxScale 2.1 introducing a query caching filter, improving the performance of repeat queries while reducing the workload on the underlying database depending on the rules configured — time to live, maximum result set rows/size, maximum entry count and more.