<!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">Flexible & Embeddable & Extensible</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 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>
          <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">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>
                <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">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>
                </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-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>
                <img src="https://shardingsphere.apache.org/images/db_orchestration@2.png" class="point-img-orch"
                  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>