<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <meta name="description" content="ShardingSphere official website" />
  <meta name="Keywords"
    content="ShardingSphere,Sharding-JDBC,Sharding-Proxy,Sharding-Sidecar,ShardingSphere-JDBC,ShardingSphere-Proxy,Database,Middleware,Distribute" />
  <title>ShardingSphere</title>
  <script>
    if (
      /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(
        navigator.userAgent
      )
    ) {
      window.location = 'index_m.html'
    }
  </script>
  <link rel="icon" href="https://shardingsphere.apache.org/images/favicon.png" type="image/x-icon" />
  <link rel="stylesheet" type="text/css" href="https://shardingsphere.apache.org/css/index.css" />
  <!-- <link rel="stylesheet" type="text/css" href="/css/index.css" /> -->
  <!-- Effect of carousel -->
  <link rel="stylesheet" href="/css/swiper.min.css">
  <script src="/js/swiper.min.js"> </script>

  <!--[if IE]>
      <style>
        .sub-tile-ie {
          text-align: center;
          font-size: 46px;
          color: #ee9a32;
        }
      </style>
    <![endif]-->
</head>

<body>
  <div class="header">
    <div class="sub-header">
      <div class="nav clearfix">
        <div class="float-left">
          <div class="nav-logo">
            <a href="http://www.apache.org" target="_self">
              <img class="nav-img first" src="https://shardingsphere.apache.org/images/apache_logo1.png" alt="" />
              <img class="nav-img" src="https://shardingsphere.apache.org/images/apache_logo2.png" alt="" />
            </a>
          </div>
        </div>
        <div class="float-right clearfix nav-menu">
          <div class="nav-item">
            <a href="https://shardingsphere.apache.org/document/current/en/downloads/" target="_blank">Download</a>
          </div>
          <div class="nav-item">
            <div id="btn-document" class="i-drop-btn">
              Document<em class="i-d-caret"></em>
              <div class="i-drop-pop">
                <a class="i-drop-list" href="https://shardingsphere.apache.org/document/current/en/overview"
                  target="_blank">5.x(Current)</a>
                <a class="i-drop-list" href="https://shardingsphere.apache.org/document/legacy/4.x/document/en/overview"
                  target="_blank">4.x(Legacy)</a>
                <a class="i-drop-list" href="https://shardingsphere.apache.org/document/legacy/3.x/document/en/overview"
                  target="_blank">3.x(Legacy)</a>
                <em class="i-drop-line"></em>
                <a class="i-drop-list" href="https://shardingsphere.apache.org/document/legacy/2.x/en/"
                  target="_blank">2.x(Legacy)</a>
              </div>
            </div>
          </div>
          <div class="nav-item">
            <div id="btn-blog" class="i-drop-btn">
              Community<em class="i-d-caret"></em>
              <div class="i-drop-pop">
                <a class="i-drop-list" href="https://shardingsphere.apache.org/community/en/contribute/"
                  target="_blank">Contribution</a>
                <a class="i-drop-list" href="https://shardingsphere.apache.org/community/en/team/"
                  target="_blank">Team</a>
                <a class="i-drop-list" href="https://cwiki.apache.org/confluence/display/SHARDINGSPHERE"
                  target="_blank">Wiki</a>
                <em class="i-drop-line"></em>
                <a class="i-drop-list" href="https://github.com/apache/shardingsphere" target="_blank">GitHub</a>
                <a class="i-drop-list" href="https://github.com/apache/shardingsphere/issues" target="_blank">Issue
                  Tracker</a>
                <a class="i-drop-list" href="https://shardingsphere.apache.org/community/en/powered-by/"
                  target="_blank">Powered By</a>
              </div>
            </div>
          </div>
          <div class="nav-item">
            <div id="btn-subproject" class="i-drop-btn">
              Subproject<em class="i-d-caret"></em>
              <div class="i-drop-pop">
                <a class="i-drop-list" href="http://shardingsphere.apache.org/elasticjob/"
                  target="_blank">ElasticJob</a>
              </div>
            </div>
          </div>
          <div class="nav-item">
            <div id="btn-community" class="i-drop-btn">
              Blog<em class="i-d-caret"></em>
              <div class="i-drop-pop">
                <a class="i-drop-list" href="https://shardingsphere.apache.org/blog/en/material"
                  target="_blank">Selections</a>
                <em class="i-drop-line"></em>
                <a class="i-drop-list" href="https://github.com/apache/shardingsphere/issues/650"
                  target="_blank">Collections</a>
              </div>
            </div>
          </div>
          <div class="nav-item">
            <div id="btn-asf" class="i-drop-btn">
              ASF<em class="i-drop-caret"></em>
              <div class="i-drop-pop">
                <a class="i-drop-list" href="https://www.apache.org" target="_self">Foundation</a>
                <a class="i-drop-list" href="https://www.apache.org/licenses/" target="_self">License</a>
                <a class="i-drop-list" href="https://www.apache.org/events/current-event" target="_self">Events</a>
                <a class="i-drop-list" href="https://www.apache.org/security/" target="_self">Security</a>
                <a class="i-drop-list" href="https://www.apache.org/foundation/sponsorship.html"
                  target="_self">Sponsorship</a>
                <a class="i-drop-list" href="https://www.apache.org/foundation/thanks.html" target="_self">Thanks</a>
                <em class="i-drop-line"></em>
              </div>
            </div>
          </div>
          <div class="nav-item space">
            <a href="index_zh.html" target="_blank">中文</a>
          </div>
          <div class="nav-item" style="margin-right:120px">
            <a href="index.html" target="_blank">EN</a>
          </div>
        </div>
      </div>
      <div id="content" class="content">
        <div class="sub-title">
          <div class="sub-title-box">
            <div class="sub-title-ie">
              Apache ShardingSphere
            </div>
          </div>
          <div class="sub-title-extra">
            Flexible & Embeddable & Extensible
          </div>
        </div>
        <hr class="sub-hr" />
        <p class="sub-text">
          Apache ShardingSphere is an open-source ecosystem consisted of a set of distributed database solutions,
          including 3 independent products, JDBC, Proxy & Sidecar (Planning).
          They all provide functions of data scale out, distributed transaction and distributed governance,
          applicable in a variety of situations such as Java isomorphism, heterogeneous language and cloud native.
        </p>
        <p class="sub-text">
          Apache ShardingSphere aiming at reasonably making full use of the computation and storage capacity of existed database in distributed system, 
          rather than a totally new database.
          As the cornerstone of enterprises, relational database still takes a huge market share. 
          Therefore, we prefer to focus on its increment instead of a total overturn.
        </p>
        <p class="sub-text">
          Apache ShardingSphere begin to focus on pluggable architecture from version 5.x, features can be embedded into project flexibility.
          Currently, the features such as data sharding, replica query, data encrypt, shadow database,
          and SQL dialects / database protocols such as MySQL, PostgreSQL, SQLServer, Oracle supported are all weaved by plugins.
          Developers can customize their own ShardingSphere just like building lego blocks.
          There are lots of SPI extensions for Apache ShardingSphere now and increase continuously.
        </p>
        <p class="sub-text">
          ShardingSphere became an Apache Top Level Project on April 16, 2020.
        </p>
        <div class="sub-btn_box">
          <a class="sub-button download" href="https://shardingsphere.apache.org/document/current/en/downloads/"
            target="_blank">Download</a>
          <a class="sub-button" href="https://shardingsphere.apache.org/document/current/en/" target="_blank">Learn
            More</a>
        </div>
        <!-- <hr class="sub-btn-hr" />
          <div class="sub-point">
            <div class="sub-point-list">
              <div>
                <img src="https://shardingsphere.apache.org/images/sharding_jdbc.png" class="nl-img" alt="" />
              </div>
              <p>Sharding-JDBC</p>
            </div>
            <div class="sub-point-list">
              <div>
                <img src="https://shardingsphere.apache.org/images/sharding_proxy.png" class="nl-img" alt="" />
              </div>
              <p>Sharding-Proxy</p>
            </div>
            <div class="sub-point-list">
              <div>
                <img src="https://shardingsphere.apache.org/images/sharding_sidecar.png" class="nl-img" alt="" />
              </div>
              <p>Sharding-Sidecar</p>
            </div>
          </div> -->
      </div>
    </div>
  </div>
  <div class="swiper-container">
    <div class="swiper-wrapper">
      <div class="swiper-slide">
        <div class="con-shard">
          <div class="con-item">
            <div class="l-msg">
              <div class="l-m-tit">Scale Out</div>
              <hr class="l-m-tit-hr" />
              <div class="l-m-info">
                <p>Data storage is not limited by single disk capacity, it is possible for increase storage capacity by increasing database servers, 
                  system can migrate data dynamically in anytime and anywhere without shutdown. </p>
              </div>
            </div>
            <img src="https://shardingsphere.apache.org/images/db_sharding.png" class="point-img" alt="" />
          </div>
        </div>
      </div>
      <div class="swiper-slide">
        <div class="con-orch">
          <div class="con-item">
            <div class="l-msg">
              <div class="l-m-tit">Compute and Storage Split</div>
              <hr class="l-m-tit-hr" />
              <div class="l-m-info">
                <p>Computing nodes are stateless and can be increased by scale out, storage and computing nodes can be optimized independently.
                  it is possible for share the capacity by computing push down.</p>
              </div>
            </div>
            <img src="https://shardingsphere.apache.org/images/db_orchestration.png" class="point-img" alt="" />
          </div>
        </div>
      </div>
      <div class="swiper-slide">
        <div class="con-tran">
          <div class="con-item">
            <div class="l-msg">
              <div class="l-m-tit">Distributed Transaction</div>
              <hr class="l-m-tit-hr" />
              <div class="l-m-info">
                <p>Provide hybrid engine based on XA 2PC and BASE transaction.</p>
              </div>
            </div>
            <img src="https://shardingsphere.apache.org/images/db_transaction.png" class="point-img" alt="" />
          </div>
        </div>
      </div>
      <div class="swiper-slide">
        <div class="con-shard">
          <div class="con-item">
            <div class="l-msg">
              <div class="l-m-tit">HA & Consensus</div>
              <hr class="l-m-tit-hr" />
              <div class="l-m-info">
                <p>Integrated native database HA and consensus solution.</p>
              </div>
            </div>
            <img src="https://shardingsphere.apache.org/images/db_sharding.png" class="point-img" alt="" />
          </div>
        </div>
      </div>
      <div class="swiper-slide">
        <div class="con-tran">
          <div class="con-item">
            <div class="l-msg">
              <div class="l-m-tit">DistSQL</div>
              <hr class="l-m-tit-hr" />
              <div class="l-m-info">
                <p>Provide distribute SQL to operate resources and rules like native database.</p>
              </div>
            </div>
            <img src="https://shardingsphere.apache.org/images/db_transaction.png" class="point-img" alt="" />
          </div>
        </div>
      </div>
      <div class="swiper-slide">
        <div class="con-tran">
          <div class="con-item">
            <div class="l-msg">
              <div class="l-m-tit">Extensible</div>
              <hr class="l-m-tit-hr" />
              <div class="l-m-info">
                <p>Features can be embedded into project flexibility. Developers can customize their own ShardingSphere just like building lego blocks.</p>
              </div>
            </div>
            <img src="https://shardingsphere.apache.org/images/db_transaction.png" class="point-img" alt="" />
          </div>
        </div>
      </div>
    </div>
    <!-- if pagination is needed. -->
    <div class="swiper-pagination"></div>
    <!-- if the previous and next button are needed. -->
    <div class="swiper-button-prev"></div>
    <div class="swiper-button-next"></div>
    <!-- if the scrollbar is needed. -->
    <div class="swiper-scrollbar"></div>
  </div>
  <div class="con-bottom">
    <hr class="con-footer-hr" />
    <div class="con-item con-footer clearfix">
      <div class="float-left">
        <div class="footer-logo">
          <img src="https://shardingsphere.apache.org/images/logo_bottom.png" alt="logo" />
        </div>
      </div>
      <div class="float-right">
        <a href="http://www.apache.org" target="_self">
          <img src="https://shardingsphere.apache.org/images/asf_logo_wide.svg" alt="apache-logo"
            style="width: 260px;padding-top: 30px;" />
        </a>
      </div>
    </div>
  </div>
  <div class="footer">
    <p>
      Copyright © 2018-2020, Apache ShardingSphere, ShardingSphere, Apache,
      the Apache feather logo, and the Apache ShardingSphere project logo are
      either registered trademarks or trademarks of The Apache Software
      Foundation in the United States and other countries.
    </p>
  </div>
  <script>
    !(function () {
      var $btnDoc = document.getElementById('btn-document');
      var $btnSour = document.getElementById('btn-source');
      var $content = document.getElementById('content');
      $btnDoc.addEventListener('touchstart', function () {}, false);
      // $btnSour.addEventListener('touchstart', function () {}, false); // No error will be reported if this line is commented.
      $content.addEventListener('touchstart', function () {}, false);
    })()
  </script>

  <!-- Effect of carousel -->
  <script>
    var mySwiper = new Swiper('.swiper-container', {
      // direction: 'vertical', // vertical switch option
      speed: 1000,
      grabCursor: true, //prompt with palm
      autoHeight: true, //set auto height
      autoplay: {
        delay: 3000,
        disableOnInteraction: false,
      },
      loop: true, // allow loop mode
      touchRatio: 2, // touch ratio, the larger the faster
      effect: 'coverflow', // choose the switch effect
      slidesPerView: 1, // number of page show at the same time
      pagination: { //pagination
        el: '.swiper-pagination',
        bulletActiveClass: 'my-bullet-active',
        clickable: true,
      },
      mousewheel: { //allow mousewheel
        // releaseOnEdges: true, // control the page while mouse at the edge
        forceToAxis: true, // only activate on horizontal axis
      },
      // set arguements of scrollbar
      scrollbar: {
        el: '.swiper-scrollbar',
        draggable: true,
      },
      // set the previous and next button
      navigation: {
        nextEl: '.swiper-button-next',
        prevEl: '.swiper-button-prev',
      },
    });
  </script>
  <!-- chosen color of the pagination -->
  <style type="text/css">
    .my-bullet-active {
      background: #ff9f0e;
      opacity: 1;
    }
  </style>
</body>

</html>