GithubHelp home page GithubHelp logo

shadow-chang / sharding-sphere Goto Github PK

View Code? Open in Web Editor NEW

This project forked from apache/shardingsphere

0.0 1.0 0.0 18.62 MB

Distributed database middleware

License: Apache License 2.0

Java 99.89% Shell 0.09% Batchfile 0.02%

sharding-sphere's Introduction

License Gitter GitHub release

Build Status Coverage Status OpenTracing-1.0 Badge Skywalking Tracing

Document

EN doc Roadmap

CN doc

Overview

Sharding-Sphere is an open-sourced distributed database middleware solution suite, which is composite by Sharding-JDBC, Sharding-Proxy and Sharding-Sidecar. Those 3 projects provide consistent features which include data sharding, read-write splitting, orchestration and B.A.S.E transaction. They can suitable for various scenario.

Sharding-Sphere is a Relational Database Middleware which reuse capacity of original databases (such as: compute, storage), but make best simplicity and efficiency on distribute environment. Sharding-Sphere do not want implement a new database. It can cooperate with NoSQL and NewSQL. NoSQL and NewSQL are good exploration for technology, they are care about what’s going to change. There is another theory which is care about what’s not going to change. Relational Database still is the biggest percentage of market share, it is difficult to estimate trendy in future. So we are focus about how to enhance with Relational Database now.

Sharding-Sphere Score

Sharding-JDBC

Maven Status

Use JDBC connect databases without redirect cost for java application, best performance for production.

  • ORM compatible. JPA, Hibernate, Mybatis, Spring JDBC Template or JDBC supported.
  • Connection-pool compatible. DBCP, C3P0, BoneCP, Druid supported.
  • Multi SQL-based databases compatible. Any Database supported theoretically. Support MySQL, Oracle, SQLServer and PostgreSQL right now.

Sharding-JDBC Architecture

Sharding-Proxy

Download Docker Pulls

It is a database proxy. Deploy as a stateless server, support MySQL protocol for now.

  • Use standard MySQL protocol, application do not care about whether proxy or real MySQL.
  • Any MySQL command line and UI workbench supported in theoretically. MySQL Workbench are fully compatible right now.

Sharding-Proxy Architecture

Sharding-Sidecar(TBD)

It can mesh interactions between applications and databases, must run in Kubernetes or Mesos environment. It is a centre-less solution, can support any languages, we call it as Database Mesh.

Database Mesh is focused on how to connect the distributed data-access-layer and databases together. It pays more attention on interaction, which means the messy interaction among the applications and databases will be effectively orchestrate. By using Database Mesh, applications and databases will form a large grid system, and they just need to be put into the right position on grid system accordingly.

Sharding-Sidecar Architecture

Sharding-JDBC Sharding-Proxy Sharding-Sidecar
Database Any MySQL MySQL
Connections Cost More Less More
Heterogeneous Language Java Only Any Any
Performance Low loss High loss Low loss
Centre-less Yes No No
Static Entry No Yes No

Features

Data sharding

  • Both databases and tables sharding.
  • Aggregation functions, GROUP BY, ORDER BY, LIMIT, OR, and JOIN DQL supported.
  • DML, DDL, TCL and database administrator command supported.
  • Sharding operator =, BETWEEN and IN supported.
  • Sharding algorithm customization and inline expression supported.
  • Force route by hint.
  • Distributed sequence.

Read-write splitting

  • Multiple slaves replica.
  • Data consistency guarantee in same thread.
  • Mix read-write splitting and data sharding.
  • Force route by hint.

BASE Transaction

  • Best efforts delivery transaction.
  • Try confirm cancel transaction (TBD).

Orchestration

  • Configuration center, can refresh dynamically.
  • Circuit breaker.
  • Open tracing supported.

sharding-sphere's People

Contributors

beckhampu avatar bohrqiu avatar cherrylzhao avatar chidaodezhongsheng avatar dogfc avatar ericj100 avatar guangyun1013 avatar hanahmily avatar haocao avatar hqq2023623 avatar jinfei21 avatar junxiong avatar maxiaoguang64 avatar mty2015 avatar oracle219 avatar qiankunshe avatar saaavsaaa avatar terrymanu avatar timvdlippe avatar tristazero avatar tuohai666 avatar wu-sheng avatar xydonne avatar yangfuhai avatar yue530tom avatar yunaiv avatar

Watchers

 avatar

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.