Giter Club home page Giter Club logo

mariadb-connector-j's Introduction

MariaDB Java Connector For Azure MySQL/MariaDB

For general introduction for MariaDB java connector, please check on https://github.com/MariaDB/mariadb-connector-j. The source code here is in the latest version same with the related branch on https://github.com/MariaDB/mariadb-connector-j with redirection feature support. Take advantage of this client to improve the connection latency between application front end and Azure Database for MySQL/MariaDB. Following is a brief guide of how to install and test the driver.

Available versions

Maven repository version

This driver is now available from Maven central repository search from https://mvnrepository.com/artifact/com.microsoft.azure/azure-mariadb-connector-java. The version number is same with related branch on https://github.com/MariaDB/mariadb-connector-j with redirection feature support. You may use following sample pom definition to include the driver in your project:

<dependency>
    <groupId>com.microsoft.azure</groupId>
    <artifactId>azure-mariadb-connector-java</artifactId>
    <version>2.7.0</version>
</dependency>

Source code version

The source code here is in the latest status same with the realted branch on https://github.com/MariaDB/mariadb-connector-j with redirection feature support(2020-06-03). Valid branches:

  • master: based on MariaDB/mariadb-connector-j branch master with redirection support.
  • 2.7.0-with-redirection: based on MariaDB/mariadb-connector-j tag 2.7.0 with redirection support.
  • 2.6.0-with-redirection: based on MariaDB/mariadb-connector-j tag 2.6.0 with redirection support.
  • 2.5.1-with-redirection: based on MariaDB/mariadb-connector-j tag 2.5.1 with redirection support.

Notice There is an issue traced for MariaDB/mariadb-connector-j 2.5.2+ on https://jira.mariadb.org/browse/CONJ-807. The problem has been fixed on 2.7.0. The recommended branch is 2.7.0-with-redirection or 2.5.1-with-redirection.

Redirection option Usage

A new connection option is introduced for redirection and the option name is enableRedirect, default value: off.

The detailed usage of the option enableRedirect is as follows:

off(0) - Redirection will not be used.
on(1) Will enforce redirection.
- If redirection is not supported on the server, the connection will be aborted and the following error is returned: "Connection aborted because redirection is not enabled on the MySQL server or the network package doesn't meet redirection protocol."
- If the MySQL server supports redirection, but the redirected connection failed for any reason, also abort the first proxy connection. Return the error of the redirected connection.
preferred(2) - It will use redirection if possible.
- If the connection does not use SSL on the driver side, the server does not support redirection, or the redirected connection fails to connect for any non-fatal reason while the proxy connection is still a valid one, it will fall back to the first proxy connection.

Step to build and install from source

Tools prerequisite to build the drivers

  • Java 1.8+
  • Maven

Build

mvn package

The default test database names is testj which need to be created ahead, user is root, and without password. You can also specify the connection string as follows for test:

mvn -DdbUrl=jdbc:mariadb://localhost:3306/testj?user=root&password=xxx -DlogLevel=FINEST package

Please notice that the unit test sets is not designed fully compatibitale with Azure MySQL server, so don't run this test against Azure MySQL server and expect a full pass.

If you want to build without running unit tests and document check, use:

mvn -Dmaven.javadoc.skip=true -Dmaven.test.skip=true package

Install

After build, you should have JDBC jar mariadb-java-client-x.y.z.jar in the 'target' subdirectory, e.g. mariadb-java-client-2.5.1.jar. Replace this jar with the mariadb-java-client jar package you currently used in your environemnt. Following are two use examples in different scenario:

After install, specify the connection string setting with enableRedirect option, e.g.

jdbc:mysql://xxx.mysql.database.azure.com/testj/?user=xx&password=xx&useSSL=true&serverSslCert=xx/BaltimoreCyberTrustRoot.crt.pem&enableRedirect=on"

Notice: Please notice that there is a limitation for Azure DB for MySQL where redirection is only possible when the connection is configured with SSL and only works with TLS 1.2 with a FIPS approved cipher for redirection.

Test

    // Load the JDBC driver
    Class.forName("org.mariadb.jdbc.Driver");
    System.out.println("Driver loaded");

    int count = 10;
    String query = "SELECT 1";
    int i=0;
    // Try to connect
    String url = "jdbc:mysql://xxx.mysql.database.azure.com"+
            "?verifyServerCertificate=false"+
            "&useSSL=true"+
            "&requireSSL=true" +
			"&enableRedirect=on";

    Connection connection = DriverManager.getConnection (url, "username", "password");
    double t1 = System.nanoTime();
    Statement s1 = connection.createStatement();
    for(i=0;i<count;i++)
    {
        s1.executeQuery(query);
    }
    double t2 = System.nanoTime();
    System.out.println (" time = " + (t2 - t1)/count/1000000);
    connection.close();

mariadb-connector-j's People

Contributors

9e0r9 avatar 9eor9 avatar arthurvl avatar dependabot[bot] avatar guubu avatar harawata avatar hzhang87 avatar ingramj avatar jentfoo avatar krisiye avatar krummas avatar massimosiani avatar matsuzayaws avatar microsoft-github-policy-service[bot] avatar mikecelis avatar mtykhenko avatar nitincchauhan avatar pavelcibulka avatar rasmushoj avatar rbhawsar avatar roidelapluie avatar rusher avatar sehrope avatar stephg38 avatar thegounet avatar timr avatar vaintroub avatar yrodiere avatar zhanhb avatar zkxs avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

mariadb-connector-j's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.