Uploaded image for project: 'MariaDB MaxScale'
  1. MariaDB MaxScale
  2. MXS-3286

Smart Engine-aware routing in MaxScale (e.g. Xpand, Columnstore)

Details

    • New Feature
    • Status: Closed (View Workflow)
    • Minor
    • Resolution: Won't Do
    • None
    • N/A
    • N/A
    • None

    Description

      If MaxScale is routing a write to an Xpand table (and only an Xpand table), there should be an options to bypass Server and write directly to the Xpand backend. This assumes there are server definitions for both MariaDB and backend Xpand instances.

      Perhaps it can be thought of as a service comprised of two services. While the MariaDB service may use a read/write splitter to funnel writes to the primary, the Xpand service can load balance writes across all backend Xpand instances.

      The top level services simply evaluates the query to determine whether or not it can route a write to the Xpand services. If not, it routes it to the MariaDB services.

      This assumes MaxScale can get tables definitions and maintain metadata about the storage engine used by all tables.

      The goal is to optimized write performance (throughput and latency) when writing data to Xpand tables (and only to Xpand tables).

      Attachments

        Issue Links

          Activity

            johan.wikman Johan Wikman added a comment -

            This should be doable, but basically it could only be applied when transactions are not used.

            If most transactions would be known to target only xpand tables, then an optimistic approach could be used. When a transaction is started, MaxScale would always start it on xpand. If the transaction stays xpand "pure", then all is fine. If it does not, then MaxScale would abort the transaction on xpand, replay it on Server and provided the result of the replayed statements would be identical, MaxScale would send the non-xpand pure statement to Server and thereafter continue using it. Basically https://mariadb.com/kb/en/mariadb-maxscale-23-readwritesplit/#optimistic_trx would be reused for this purpose.

            johan.wikman Johan Wikman added a comment - This should be doable, but basically it could only be applied when transactions are not used. If most transactions would be known to target only xpand tables, then an optimistic approach could be used. When a transaction is started, MaxScale would always start it on xpand. If the transaction stays xpand "pure", then all is fine. If it does not, then MaxScale would abort the transaction on xpand, replay it on Server and provided the result of the replayed statements would be identical, MaxScale would send the non-xpand pure statement to Server and thereafter continue using it. Basically https://mariadb.com/kb/en/mariadb-maxscale-23-readwritesplit/#optimistic_trx would be reused for this purpose.

            maxmether can work with you on the requirements.

            clieu Christine Lieu (Inactive) added a comment - maxmether can work with you on the requirements.

            There is no more Xpand plugin (was taken down officially). This is not moot and should be closed.

            gdorman Gregory Dorman (Inactive) added a comment - There is no more Xpand plugin (was taken down officially). This is not moot and should be closed.

            People

              toddstoffel Todd Stoffel (Inactive)
              shane.johnson@mariadb.com Shane Johnson (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              6 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Git Integration

                  Error rendering 'com.xiplink.jira.git.jira_git_plugin:git-issue-webpanel'. Please contact your Jira administrators.