Sharding-JDBC v1.2.1 发布, 增强版JDBC驱动

jopen 8年前
   <p style="text-align: center;"><img alt="" src="https://simg.open-open.com/show/d365dfc2001f48ad885d07ad19bd4384.png" /></p>    <p><code>Sharding-JDBC</code>直接封装<code>JDBC API</code>,可以理解为增强版的<code>JDBC</code>驱动,旧代码迁移成本几乎为零:</p>    <ul>     <li>可适用于任何基于<code>java</code>的<code>ORM</code>框架,如:<code>JPA</code>, <code>Hibernate</code>, <code>Mybatis</code>, <code>Spring JDBC Template</code>或直接使用<code>JDBC</code>。</li>     <li>可基于任何第三方的数据库连接池,如:<code>DBCP</code>, <code>C3P0</code>, <code>BoneCP</code>, <code>Druid</code>等。</li>     <li>理论上可支持任意实现<code>JDBC</code>规范的数据库。虽然目前仅支持<code>MySQL</code>,但已有支持<code>Oracle</code>,<code>SQLServer</code>,<code>DB2</code>等数据库的计划。</li>    </ul>    <p><code>Sharding-JDBC</code>定位为轻量级<code>java</code>框架,使用客户端直连数据库,以<code>jar</code>包形式提供服务,未使用中间层,无需额外部署,无其他依赖,<code>DBA</code>也无需改变原有的运维方式。<code>SQL</code>解析使用<code>Druid</code>解析器,是目前性能最高的<code>SQL</code>解析器。</p>    <p><code>Sharding-JDBC</code>功能灵活且全面:</p>    <ul>     <li>分片策略灵活,可支持<code>=</code>,<code>BETWEEN</code>,<code>IN</code>等多维度分片,也可支持多分片键共用。</li>     <li><code>SQL</code>解析功能完善,支持聚合,分组,排序,<code>Limit</code>,<code>OR</code>等查询,并且支持<code>Binding Table</code>以及笛卡尔积的表查询。</li>    </ul>    <p><code>Sharding-JDBC</code>配置多样:</p>    <ul>     <li>可支持YAML和Spring命名空间配置</li>     <li>灵活多样的<code>inline</code>方式</li>    </ul>    <p>以下是常见的分库分表产品和<code>Sharding-JDBC</code>的对比:</p>    <table>     <thead>      <tr>       <th>功能</th>       <th>Cobar</th>       <th>Cobar-client</th>       <th>TDDL</th>       <th>Sharding-JDBC</th>      </tr>     </thead>     <tbody>      <tr>       <td>分库</td>       <td>有</td>       <td>有</td>       <td>未开源</td>       <td>有</td>      </tr>      <tr>       <td>分表</td>       <td>无</td>       <td>无</td>       <td>未开源</td>       <td>有</td>      </tr>      <tr>       <td>中间层</td>       <td>是</td>       <td>否</td>       <td>否</td>       <td>否</td>      </tr>      <tr>       <td>ORM支持</td>       <td>任意</td>       <td>仅MyBatis</td>       <td>任意</td>       <td>任意</td>      </tr>      <tr>       <td>数据库支持</td>       <td>仅MySQL</td>       <td>任意</td>       <td>任意</td>       <td>任意</td>      </tr>      <tr>       <td>异构语言</td>       <td>可</td>       <td>仅Java</td>       <td>仅Java</td>       <td>仅Java</td>      </tr>      <tr>       <td>外部依赖</td>       <td>无</td>       <td>无</td>       <td>Diamond</td>       <td>无</td>      </tr>     </tbody>    </table>    <p>整体架构图</p>    <p><a href="/misc/goto?guid=4958990802163545513"><img alt="整体架构图" src="https://simg.open-open.com/show/e33f64a136c1cf27797f13bd44ee931f.png" /></a></p>    <p><a href="/misc/goto?guid=4958990802273521367"><img alt="柔性事务-最大努力送达型" src="https://simg.open-open.com/show/dd8cb29ecc68433f8277d7f667c3b56d.png" /></a></p>    <h2>更新日志</h2>    <h3>结构调整</h3>    <ol>     <li><a href="/misc/goto?guid=4958990802365194191">ISSUE #60</a> API调整,抽离ShardingDataSource,使用工厂代替</li>     <li><a href="/misc/goto?guid=4958990802458517629">ISSUE #76</a> ShardingRule和TableRule调整为Builder模式</li>     <li><a href="/misc/goto?guid=4958990802548633951">ISSUE #77</a> ShardingRule和TableRule调整为Builder模式</li>    </ol>    <h3>功能提升</h3>    <ol>     <li><a href="/misc/goto?guid=4958990802635615249">ISSUE #61</a> 在ShardingValue类中加入逻辑表名</li>     <li><a href="/misc/goto?guid=4958990802731741998">ISSUE #66</a> 在JDBC层的Statement增加对get/set MaxFieldSize,MaxRows和QueryTimeout的支持</li>     <li><a href="/misc/goto?guid=4958990802822786450">ISSUE #72</a> 对于select union all形式的批量插入支持</li>     <li><a href="/misc/goto?guid=4958990802919362245">ISSUE #78</a> 简化只分库配置,无需配置逻辑表和真实表对应关系</li>     <li><a href="/misc/goto?guid=4958990803011709107">ISSUE #80</a> 简化包含不分片库表的配置,可指定默认数据源,不分片无需配置TableRule</li>    </ol>    <h3>缺陷修正</h3>    <ol>     <li><a href="/misc/goto?guid=4958990803102549425">ISSUE #63</a> ORDER BY与GROUP BY衍生列未添加表名或表别名</li>     <li><a href="/misc/goto?guid=4958990803192952627">ISSUE #65</a> 解析条件上下文性能提升</li>     <li><a href="/misc/goto?guid=4958990803290711243">ISSUE #67</a> 分片路由到多表时柔性事务日志无法删除</li>     <li><a href="/misc/goto?guid=4958990803391413423">ISSUE #71</a> 路由单分片LIMIT的OFFSET计算错误</li>     <li><a href="/misc/goto?guid=4958990803485157678">ISSUE #75</a> MemoryTransactionLogStorage重试次数更新并发问题</li>    </ol>    <h2>下载</h2>    <ul>     <li><a href="/misc/goto?guid=4958990803586953802" rel="nofollow"><strong>Source code</strong> (zip)</a></li>     <li><a href="/misc/goto?guid=4958990803687865603" rel="nofollow"><strong>Source code</strong> (tar.gz)</a></li>    </ul>