New Year, New Start — Hello, Apache ShardingSphere (Incubating) 3.1.0

Say goodbye to surges and falls in 2018, welcome the gleam and splendor in 2019

As the stable core version of 3.X tested by the business practice of large enterprises and supported by the community, official Apache ShardingSphere (Incubating) 3.1.0 version finally finishes its last touch and is able to meet everyone!

Introduction

ShardingSphere is an open-source ecosphere consisted of a set of distributed database middleware solution, including three individual products, Sharding-JDBC, Sharding-Proxy and Sharding-Sidecar (planning). They all provide functions of standard data sharding, distributed transaction and data orchestration, applicable in a variety of situations such as Java isomorphism, heterogeneous language, container and native cloud.

Since it entered the ASF Incubator in November 2018, Apache ShardingSphere (incubating) has not only improved and solidified core features, but also put more energy on community construction, outreach cooperation and other works to listen to voices from the community and deepen the international development path.

3.1.0 Core Features

API Adjustment

Adjust registry center structure in database orchestration module.

Adjust Sharding-JDBC configuration related API.

New Features

1. Available for XA transactions.

2. 100% SQL compatibility when it is routed to a single data node (only MySQL for now).

3. Available for DISTINCT syntax.

4. Available for the broadcast table.

5. Solve the problem that the use of default distributed auto-increment key can lead to data skew in low TPS situations.

In the 3.1.0 version released this time, we have polished and improved core functions, adjusted and fixed problems of 3.1.0.M1 version released not long before. In addition, we have also found a relatively big bug of it in massive practice.

P.S. Not to influence your normal use, we will decide whether to release Hot Fix version of 3.1.0.1 or fix it in 4.x version according to the actual feedback.

3.1.0 Bug Analysis

Bug Description:

The use of Sharding-JDBC in projects equipped with iBATIS+HikariCP will lead to exception in 30 minutes after the project starts:

com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: No operations allowed after connection closed.

Cause Analysis:

As initializing, Sharding-JDBC will save a reference of DatabaseMetaData reference through some connection in database connection pool. Since the default maxLifetime value of HikariCP is 1800000 milliseconds (30 minutes), the connection will be evicted by HikariCP after 30 minutes. Also, iBATIS checks DatabaseMetaData before each query, if it still acquires DatabaseMetaData reference through that connection, the above exception will appear.

Only appearing in the use of iBatis, the bug will not influence native JDBC, MyBatis, JPA, Hibernate and other ORM frameworks. Whereas iBatis has stopped to update since 2010, its influence is not wide.

Related Issue:

https://github.com/sharding-sphere/sharding-sphere/issues/1712

Though 3.1.0 is far from perfect, it has a significant meaning born from an incubation as long as 3 years and 35 release versions after all. Thanks a lot for open-source supporters’ focus and company in those 3 years. Considering that ShardingSphere has entered Apache Incubator now, we have to draw an end to its 3.X version at this time, despite the fact that distributed transactions just start and 100% SQL compatibility is still developing on its way. But if there is any big problem in 3.X version, we will fix it immediately or release 3.1.0.X version, maybe. In the same time, ShardingSphere will officially begin to develop 4.X version and start a new chapter. We will take the first Apache Release as our priority work and try to release that as soon as possible. Welcome open-source supporters to participate in the community construction together.

Roadmap

Access Methods

1. Sharding-JDBC

<groupId>io.shardingsphere</groupId>

<artifactId>sharding-jdbc-core</artifactId>
<version>3.1.0 </version>

2. Sharding-Porxy

docker pull shardingsphere/sharding-proxy

Community Development

1. Participate in the Collaboration

ShardingSphere is devoted to building a first-class open-source distributed database middleware ecosphere in the industry. As a podling of Apache Incubator, we also hope to construct an energetic community.

In order to bring more people to participate in the development of Apache projects, we will release some function development tasks as issues regularly. If you are interested in those tasks, or hope to study detailed codes of this excellent open-source product, welcome to take charge in the development of those tasks. From that, your participation will make more people benefit from your contribution and make Apache ShardingSphere stronger. Already released tasks are as follow, welcome to claim:

a. Use inline expressions to set rule configurations for Sharding-SpringBoot

https://github.com/sharding-sphere/sharding-sphere/issues/1686

b. Use SpringBoot placeholder to set rule configurations for Sharding-SpringBoot

https://github.com/sharding-sphere/sharding-sphere/issues/1687

2. Subscribe the Mail-List

Subscribing Apache ShardingSphere mail-list, you can get to know recent developments of ShardingSphere, function development plans, bug list and so on. In the same time, you can communicate directly with ShardingSphere developers to discuss your thought, recommendations and the problems you have come across, etc. We promise to response actively. For the detailed subscription method, please refer to our official website:

http://shardingsphere.io/community/en/contribute/subscribe/

Apache ShardingSphere (incubating) has been in progress continuously since 2016. And it has been recognized by more and more individuals and companies: we’ve got more than 6,000+ stars on GitHub and successful cases from more than 70 enterprises. Besides, more and more individuals and enterprises have joined open-source Apache ShardingSphere (incubating) project, contributing to its growth and development.

We have been working on gathering your suggestions and developing powerful features to make it more and more reliable and powerful!

Open source is a hard path to follow, on which we have been heading to the ultimate goal.

So if it is possible for you who have read thus far to give us a hand? Sharing, forwarding, using, communicating or joining us would all be a great encouragement to us!

We are looking forward to your attention and encouragement via sharing. Come on and join us!

The project address:

https://github.com/sharding-sphere/sharding-sphere/

For more information, please visit our official website:

http://shardingsphere.io/

--

--

--

Transform any DBMS in a distributed database system & enhance it with sharding, elastic scaling features & more. https://linktr.ee/ApacheShardingSphere

Love podcasts or audiobooks? Learn on the go with our new app.

Recommended from Medium

How to setup Google Drive on Ubuntu Linux

Writing a simple Sudoku application in Javascript

An image of the Sudoku application refered to in this article

Programmable Network — not a pipe dream

Connext, the interoperability protocol for Ethereum L2

HackTheBox: (“Tenet”) — Walkthrough

Using Macros in Oracle Content and Experience

Seals Academy | Learn, Achieve, Succeed

The Life of a Geeky Kid to Techno Developer

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Apache ShardingSphere

Apache ShardingSphere

Transform any DBMS in a distributed database system & enhance it with sharding, elastic scaling features & more. https://linktr.ee/ApacheShardingSphere

More from Medium

Difference between doOnNext and doOnSuccess in Mono

What is Request Mapping Annotation in Spring Boot

Constructors and garbage collection in Java

How to handle Constraint violation exception using ControllerAdvice in Spring boot