<!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 middleware solutions,
          including 3 independent products, JDBC, Proxy & Sidecar (Planning).
          They all provide functions of data sharding, distributed transaction and database orchestration,
          applicable in a variety of situations such as Java isomorphism,
          heterogeneous language and cloud native.
        </p>
        <p class="sub-text">
          Aiming at reasonably making full use of the computation and storage
          capacity of database in distributed system, ShardingSphere defines
          itself as a middleware, rather than a totally new type of database.
          As the cornerstone of many enterprises, relational database still
          takes a huge market share. Therefore, at current stage, 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, query from replica, 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">Data Sharding</div>
              <hr class="l-m-tit-hr" />
              <div class="l-m-info">
                <p>Database sharding & Table sharding</p>
                <p>Query from Replica</p>
                <p>Sharding strategy customization</p>
                <p>Centre-less distributed primary key</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">Distributed Transaction</div>
              <hr class="l-m-tit-hr" />
              <div class="l-m-info">
                <p>Unified Transaction API</p>
                <p>XA transaction</p>
                <p>BASE transaction</p>
                <p>&nbsp;</p> <!-- placeholder -->
              </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-orch">
          <div class="con-item">
            <div class="l-msg">
              <div class="l-m-tit">Database Governance</div>
              <hr class="l-m-tit-hr" />
              <div class="l-m-info">
                <p>Distributed Governance</p>
                <p>Data migration & Scale out</p>
                <p>Tracing & Observability Supported</p>
                <p>Data Encryption</p>
              </div>
            </div>
            <img src="https://shardingsphere.apache.org/images/db_orchestration.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>