当前位置: 首页 > news >正文

乡镇中心小学校园网站建设指南重庆九度设计

乡镇中心小学校园网站建设指南,重庆九度设计,东营企业网站seo,成都企业展厅设计公司引用 在现代互联网业务高速扩张的背景下#xff0c;单机数据库的性能瓶颈与扩展性缺陷日益凸显。分库分表方案虽能有效解决数据存储压力#xff0c;但手动实现分片路由、跨节点查询及分布式事务管理等复杂逻辑#xff0c;往往导致开发成本剧增且难以维护。Apache ShardingS…引用 在现代互联网业务高速扩张的背景下单机数据库的性能瓶颈与扩展性缺陷日益凸显。分库分表方案虽能有效解决数据存储压力但手动实现分片路由、跨节点查询及分布式事务管理等复杂逻辑往往导致开发成本剧增且难以维护。Apache ShardingSphere作为一款轻量级的分布式数据库中间件通过透明化数据分片、读写分离和分布式事务支持为开发者提供了开箱即用的企业级解决方案。 ShardingSphere以“可插拔架构”为核心设计理念提供Sharding-JDBC嵌入式SDK与Sharding-Proxy独立数据库代理两种接入形态兼顾高性能与多语言兼容性。其标准分片、行表达式、复合分片及Hint强制路由等策略支持从简单取模分片到多字段联合分片的复杂场景。针对分布式事务难题ShardingSphere整合XA强一致性事务与Seata AT柔性事务模型覆盖金融级一致性需求与高吞吐量业务场景。然而嵌套子查询、跨库关联等复杂SQL的解析限制仍需开发者在表结构设计阶段规避。 ShardingSphere分布式数据库组件 ShardingSphere并非分布式数据库只是一个分布式数据库组件已代理的形式帮助单体数据库支持分片、分布式事务、跨节点查询。 Sharding-JDBC和Sharding-Proxy对比 Sharding-JDBC适用场景 应用程序是 Java 编写的。需要高性能没有额外的网络开销。希望有更多的灵活性和自定义能力。需要一个轻量级的嵌入式解决方案。消耗数据库连接数更多。 Sharding-Proxy适用场景 应用程序使用多种编程语言。不希望修改现有的应用程序代码。需要集中管理分片和读写分离策略。希望独立部署和维护数据库代理层。消耗数据库连接数更少。 数据库消耗连接数对比 Sharding-JDBC消耗数据库连接数 应用实例数 * 分片数据库数。 Sharding-Proxy消耗数据库连接数 分片数据库数。 分布式事务 本地事务默认 完全支持非跨库事务。例如仅分表或分库但是路由的结果在单库中。 完全支持因逻辑异常导致的跨库事务。例如同一事务中跨两个库更新。更新完毕后抛出空指针则两个库的内容都能回滚。 不支持因网络、硬件异常导致的跨库事务。例如同一事务中跨两个库更新更新完毕后、未提交之前第一个库宕机则只有第二个库数据提交。 XA事务 ShardingSphere整合Atomikos对XA分布式事务的支持。执行的过程中需要对所需资源进行锁定它更加适用于执行时间确定的短事务。对于长事务来说整个事务进行期间对数据的独占将会对并发场景下的性能产生一定的影响。 Base事务柔性事务 BASE事务属于柔性事务数据最终一致性。ShardingSphere是基于Seata的AT模式进行二阶段提交来实现事务管理的。 分片策略 标准分片策略 标准分片策略standard适用于具有单一分片键的标准分片场景。该策略支持精确分片即在SQL中包含、in操作符以及范围分片包括BETWEEN AND、、、、等范围操作符。 通过实现PreciseShardingAlgorithm设置精准分片策略实现RangeShardingAlgorithm设置范围分片策略。 spring:shardingsphere:sharding:#唯一库数据当某些查询没有明确的分片规则#或在某些情况下无法确定数据应该存储在哪个分片中的时候 #ShardingSphere会将这些操作路由到默认的数据源default-data-source-name: db0#分库default-database-strategy:standard:# 添加数据分库字段(根据字段插入数据到那个表)sharding-column: id#精确分片precise-algorithm-class-name: com.example.sharding_test.strategy.database.DatabasePreciseAlgorithm#范围分片range-algorithm-class-name: com.example.sharding_test.strategy.database.DatabaseRangeAlgorithm #分表tables:#表名db_user:actual-data-nodes: db$-{0..1}.db_user_$-{0..2}key-generator:column: id # 主键IDtype: SNOWFLAKE # 生成策略雪花idtable-strategy:standard:sharding-column: id#精确分片precise-algorithm-class-name: com.example.sharding_test.strategy.table.TablePreciseAlgorithm#范围分片range-algorithm-class-name: com.example.sharding_test.strategy.table.TableRangeAlgorithm行表达式分片策略 行表达式分片策略inline适用于具有单一分片键的简单分片场景支持SQL语句中和in操作符。它的配置相当简洁该分片策略支持在配置属性algorithm-expression中书写Groovy表达式用来定义对分片健的运算逻辑无需单独定义分片算法了。 spring:shardingsphere:sharding:#唯一库数据default-data-source-name: db0#分库default-database-strategy:inline:# 添加数据分表字段(根据字段插入数据到那个表)sharding-column: id# 分片算法表达式 通过id取余algorithm-expression: db$-{id % 2}#分表tables:#表名db_user:actual-data-nodes: db$-{0..1}.db_user_$-{0..2}key-generator:column: id # 主键IDtype: SNOWFLAKE # 生成策略雪花idinline:# 添加数据分表字段(根据字段插入数据到那个表)sharding-column: id# 分片算法表达式 通过id取余algorithm-expression: db_user_$-{id % 3} 复合分片策略 复合分片策略complex适用于多个分片键的复杂分片场景属性sharding-columns中多个分片键以逗号分隔。支持 SQL 语句中有、、、、、IN 和 BETWEEN AND 等操作符。 比如我们希望通过user_id和order_id等多个字段共同运算得出数据路由到具体哪个分片中就可以应用该策略。 通过实现ComplexKeysShardingAlgorithm自定义分库、分表策略。 spring:shardingsphere:sharding:#唯一库数据default-data-source-name: db0#分库default-database-strategy:#复合分片complex:sharding-columns: id,agealgorithm-class-name: com.example.sharding_test.strategy.database.DatabaseComplexAlgorithm#分表tables:#表名db_user:actual-data-nodes: db$-{0..1}.db_user_$-{0..2}key-generator:column: id # 主键IDtype: SNOWFLAKE # 生成策略雪花idtable-strategy:#复合分片complex:sharding-columns: id,agealgorithm-class-name: com.example.sharding_test.strategy.table.TableComplexAlgorithm Hint分片策略 该策略无需配置分片健由外部指定分库和分表的信息可以让SQL在指定的分库、分表中执行。 通过实现HintShardingAlgorithm自定义分片策略。 spring:shardingsphere:sharding:#唯一库数据default-data-source-name: db0#分库default-database-strategy:#行分片inline:# 添加数据分表字段(根据字段插入数据到那个表)sharding-column: id# 分片算法表达式 通过id取余algorithm-expression: db$-{id % 2}#分表tables:#表名db_user:actual-data-nodes: db$-{0..1}.db_user_$-{0..2}key-generator:column: id # 主键IDtype: SNOWFLAKE # 生成策略雪花idtable-strategy:#强制分片hint:algorithm-class-name: com.example.sharding_test.strategy.table.TableHintAlgorithm package com.example.sharding_test.strategy.table;import org.apache.shardingsphere.api.sharding.hint.HintShardingAlgorithm; import org.apache.shardingsphere.api.sharding.hint.HintShardingValue; import java.util.Arrays; import java.util.Collection;public class TableHintAlgorithm implements HintShardingAlgorithmInteger {Overridepublic CollectionString doSharding(CollectionString collection, HintShardingValueInteger hintShardingValue) {String logicTableName hintShardingValue.getLogicTableName();// 取代码中通过addTableShardingValue设置表序号String dbName logicTableName _ hintShardingValue.getValues().toArray()[0];return Arrays.asList(dbName);} }// 测试用例代码中通过addTableShardingValue设置表序号 Test void selectHintData(){HintManager manager HintManager.getInstance();manager.addTableShardingValue(db_user,2);LambdaQueryWrapperDbUser wrapper Wrappers.lambdaQuery();wrapper.eq(DbUser::getAge,34);ListDbUser dbUsers dbUserMapper.selectList(wrapper);dbUsers.forEach(System.out::println); } 不支持语句 VALUES语句不支持运算表达式 INSERT INTO tbl_name (col1, col2, …) VALUES(12, ?, …) INSERT … SELECT INSERT INTO tbl_name (col1, col2, …) SELECT col1, col2, … FROM tbl_name WHERE col3 ? HAVING SELECT COUNT(col1) as count_alias FROM tbl_name GROUP BY col1 HAVING count_alias ? UNION SELECT * FROM tbl_name1 UNION SELECT * FROM tbl_name2 UNION ALL SELECT * FROM tbl_name1 UNION ALL SELECT * FROM tbl_name2 包含schema SELECT * FROM ds.tbl_name1 同时使用普通聚合函数和DISTINCT聚合函数 SELECT SUM(DISTINCT col1), SUM(col1) FROM tbl_name 只支持解析一层子查询不支持多层嵌套的子查询 SELECT COUNT(*) FROM (SELECT * FROM t_order o WHERE o.id IN (SELECT id FROM t_order WHERE status ?)) 跨库关联查询不被支持 感谢您的阅读如果文章中有任何问题或不足之处欢迎及时指出您的反馈将帮助我不断改进与完善。期待与您共同探讨技术共同进步
http://www.hkea.cn/news/14353877/

相关文章:

  • 怎样用自己的电脑 做网站任丘做网站
  • 建设网站价钱网页翻译网站
  • 广东省建设信息网网站软件开发自学入门教程
  • 如何看到网站的制作公司怎么制作钓鱼网站链接
  • 中山网站建设工作室网站维护很难吗
  • 为企业做一个网站多少钱网站做网站广告
  • 创联互动建设网站网站制作难不难
  • 网站建设费用多少wordpress后台样式修改
  • 网站设计不包括宿迁网站建设排名
  • 淮安建设企业网站html写的网页怎么在手机上看
  • 房地产行业网站建设报价方案企业官网招聘
  • 怎么给自己做个网站吗二级网站建设检查评比方案
  • 河池市住房和城乡建设局网站天津做宠物饲料的网站
  • 上海市网站seo公司房产网网站
  • 宁化网站建设互联网公司中国排名
  • 个人网站有什么外国广告做网站建设公司人员配备
  • 网站建站ddp宝安高端网站建设
  • 河北省建设执业注册中心网站wordpress 多的模板
  • wordpress 导航站模板百度指数搜索指数的数据来源
  • 外贸网站免费推广wordpress 慢途网
  • 手机软件制作网站网站源码下载免费
  • 购物网站的排版石家庄新钥匙网站建设
  • 哪个网站可以做logo如何创建一个公司
  • 如何网站开发语言企业网站设计html
  • 电影采集网站流量微信朋友圈的广告怎么投放
  • 求人做网站怎么才能申请自己的网站
  • 如果建网站手机端怎样做网站建设
  • 重庆自助企业建站模板豫建市2021 42号
  • 万城建设网站seo短视频网页入口引流方法
  • 三亚网站建设美工wordpress文章幻灯片代码