<!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(Coming)</a>
            <a class="i-drop-list" href="https://shardingsphere.apache.org/document/legacy/4.x/document/en/overview"
              target="_blank">4.x(Current)</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, read-write splitting, multi replica, data encrypt, shadow
              test,
              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>Read-write splitting</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 Orchestration</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>