shardingsphere
Empowering Data Intelligence with Distributed SQL for Sharding, Scalability, and Security Across All Databases.
Apache ShardingSphere adds a smart layer on top of your existing databases so they can scale out, shard data across machines, and gain enterprise features like encryption and traffic control, without replacing the databases you already use.
Apache ShardingSphere is an enterprise tool that sits on top of existing databases to make them act, together, like one big distributed database. The README describes it as a Database Plus standard and ecosystem: instead of inventing a new database, it adds a layer above the databases you already use so you can shard data, scale out, control traffic, and apply security policies without changing your underlying systems. The project is licensed under Apache, became an Apache Top-Level Project on April 16, 2020, and the README notes it has been adopted by 19,000+ projects worldwide. The README organizes the product around three pillars: Connect, Enhance, and Pluggable. Connect means it understands different database protocols, SQL dialects, and storage formats so applications can talk to a mix of heterogeneous databases through one consistent interface. Enhance means it adds enterprise features on top of those databases, including data sharding (splitting tables across machines), readwrite-splitting, SQL federation, encryption, masking, audit, circuit breakers, rate limiting, and observability tools like monitoring and tracing. Pluggable means the architecture is a micro-kernel with three pluggable layers, so teams can mix and match the features they want, like LEGO blocks. A core idea in the README is the dual-access architecture. ShardingSphere-JDBC is a lightweight Java library that plugs in as an enhanced JDBC driver, compatible with ORM frameworks such as MyBatis, JPA, and Hibernate, and deploys as just a JAR. There is also a Proxy access end (described in the truncated portion of the README) that runs as a separate service. The two can be used alone or together. You would reach for ShardingSphere if your company has outgrown a single database, wants to keep using familiar databases instead of migrating to a brand-new distributed one, and needs sharding, encryption, or unified governance. Primary language is Java.
Where it fits
- Shard a large database table across multiple machines to handle more data and queries without migrating to a new database system.
- Split reads and writes across primary and replica database nodes to handle higher traffic without changing your application SQL.
- Add column-level encryption and data masking to an existing database through ShardingSphere without rewriting application code.
- Apply circuit breakers and rate limiting to database traffic to protect your backend during traffic spikes.