<!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.html'
    }
  </script>
  <script>
    var idealViewWidth = window.screen.width;
    var basicValue = 750;
    document.documentElement.style.fontSize = (idealViewWidth / basicValue) * 100 + 'px';
  </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_m.css" />
  <!-- <link rel="stylesheet" type="text/css" href="/css/index_m.css" /> -->
  <!-- Effect of carousel -->
  <link rel="stylesheet" href="/css/swiper.min.css">
  <script src="/js/swiper.min.js"> </script>
</head>

<body>
  <header>
    <div class="bg-left">
      <div class="bg-right">
        <nav class="display-flex space-between">
          <div class="nav-logo">
            <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="" />
          </div>
          <div class="nav-btn" id="nav-btn"></div>
        </nav>
        <div class="nav-menu" id="nav-menu">
          <div class="nav-item space">
            <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</div>
          </div>
          <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>
            <a class="i-drop-list" href="https://shardingsphere.apache.org/document/legacy/2.x/cn/"
              target="_blank">2.x(Legacy)</a>
          </div>
          <div class="nav-item">
            <div id="btn-subproject" class="i-drop-btn">Subproject</div>
          </div>
          <div class="i-drop-pop">
            <a class="i-drop-list" href="http://shardingsphere.apache.org/elasticjob/" target="_blank">ElasticJob</a>
          </div>
          <div class="nav-item">
            <div id="btn-community" class="i-drop-btn">Community</div>
          </div>
          <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>
            <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 class="nav-item">
            <div id="btn-blog" class="i-drop-btn">Blog</div>
          </div>
          <div class="i-drop-pop">
            <a class="i-drop-list" href="https://shardingsphere.apache.org/blog/en/material"
              target="_blank">Selections</a>
            <a class="i-drop-list" href="https://github.com/apache/shardingsphere/issues/650"
              target="_blank">Collections</a>
          </div>
          <div class="nav-item">
            <div id="btn-asf" class="i-drop-btn">ASF</div>
          </div>
          <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 class="nav-item">
            <a href="index_m_zh.html" target="_blank">中文</a>
          </div>
          <div class="nav-item" style="margin-right:0">
            <a href="index_m.html" target="_blank">EN</a>
          </div>
        </div>
        <div id="content" class="content">
          <img src="https://shardingsphere.apache.org/images/background_logo.png" class="sub-img" />
          <div class="sub-title">
            <span>Apache ShardingSphere</span>
            <span class="small">Plus & Link & Pluggable</span>
          </div>
          <hr class="sub-hr" />
          <div class="sub-content">
            <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>
          <div class="sub-btn_box">
            <a class="sub-button" 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/overview"
              target="_blank">Learn More</a>
          </div>
          <hr class="sub-btn-hr" />
          <!--<div class="sub-point">-->
          <!--<div class="sub-point-list">-->
          <!--<img src="https://shardingsphere.apache.org/images/sharding_jdbc@2.png" class="nl-img" alt="" />-->
          <!--<p>Sharding-JDBC</p>-->
          <!--</div>-->
          <!--<div class="sub-point-list">-->
          <!--<img src="https://shardingsphere.apache.org/images/sharding_proxy@2.png" class="nl-img" alt="" />-->
          <!--<p>Sharding-Proxy</p>-->
          <!--</div>-->
          <!--<div class="sub-point-list">-->
          <!--<img src="https://shardingsphere.apache.org/images/sharding_sidecar@2.png" class="nl-img" alt="" />-->
          <!--<p>Sharding-Sidecar</p>-->
          <!--</div>-->
          <!--</div>-->
        </div>
      </div>
    </div>
  </header>
  <section>
    <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>
                <img src="https://shardingsphere.apache.org/images/db_sharding@2.png" class="point-img-shard" alt="" />
              </div>
            </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>
                <img src="https://shardingsphere.apache.org/images/db_orchestration@2.png" class="point-img-orch" alt="" />
              </div>
            </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>
                <img src="https://shardingsphere.apache.org/images/db_transaction@2.png" class="point-img-tran" alt="" />
              </div>
            </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>
                <img src="https://shardingsphere.apache.org/images/db_sharding@2.png" class="point-img-shard" alt="" />
              </div>
            </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>
                <img src="https://shardingsphere.apache.org/images/db_transaction@2.png" class="point-img-tran" alt="" />
              </div>
            </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>
                <img src="https://shardingsphere.apache.org/images/db_transaction@2.png" class="point-img-tran" alt="" />
              </div>
            </div>
          </div>
        </div>
      </div>
      <!-- if pagination is needed. -->
      <div class="swiper-pagination"></div>
    </div>
    <div class="con-footer">
      <hr class="con-footer-hr" />
      <div class="con-item">
        <div class="footer-img">
          <img src="https://shardingsphere.apache.org/images/logo_bottom@2.png" class="footer-logo" alt="logo" />
        </div>
        <div class="footer-icon">
          <a href="http://www.apache.org" target="_self">
            <img src="https://shardingsphere.apache.org/images/asf_logo_wide.svg" alt="apache-logo" style="width: 5rem;" />
          </a>
        </div>
      </div>
    </div>
  </section>
  <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 $navMenu = document.getElementById('nav-menu');
      var $navBtn = document.getElementById('nav-btn');
      $navBtn.addEventListener(
        'touchstart',
        function () {
          if ($navMenu.clientHeight) {
            $navMenu.style.height = '0'
          } else {
            $navMenu.style.height = 'auto'
          }
        },
        false
      )
    })()
  </script>

  <!-- Effect of carousel -->
  <script>
    var mySwiper = new Swiper('.swiper-container', {
      // direction: 'vertical', // vertical switch option
      zoom: false, // unable to zoom
      passiveListeners: false,
      simulateTouch: true, // allow simulate click on phone
      speed: 700,
      autoHeight: true, //set auto height
      autoplay: {
        delay: 4000,
        disableOnInteraction: false,
      },
      loop: true, // allow loop mode
      touchRatio: 2.5, // touch ratio, the larger the faster
      effect: 'coverflow', // choose the switch effect
      coverflowEffect: {
        rotate: 50, // y axis rotate angle
        stretch: 1,
        depth: 1500,
        modifier: 2,
        slideShadows: true,
      },
      slidesPerView: 1, // number of page show at the same time
      pagination: { //pagination
        el: '.swiper-pagination',
        bulletActiveClass: 'my-bullet-active',
        clickable: true,
      },
    });
  </script>
  <!-- chosen color of the pagination -->
  <style type="text/css">
    .my-bullet-active {
      background: #ff9f0e;
      opacity: 1;
    }
  </style>
</body>

</html>