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

北京建网站找哪个公司东营伟浩建设集团网站

北京建网站找哪个公司,东营伟浩建设集团网站,外贸网站设计,合肥建设局网站首页ShardingSphere是一套开源的分布式数据库中间件解决方案组成的生态圈#xff0c;它由Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar#xff08;计划中#xff09;这3款相互独立的产品组成。 他们均提供标准化的数据分片、分布式事务和数据库治理功能#xff0c;可适用于…ShardingSphere是一套开源的分布式数据库中间件解决方案组成的生态圈它由Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar计划中这3款相互独立的产品组成。 他们均提供标准化的数据分片、分布式事务和数据库治理功能可适用于如Java同构、异构语言、容器、云原生等各种多样化的应用场景。ShardingSphere定位为关系型数据库中间件旨在充分合理地在分布式的场景下利用关系型数据库的计算和存储能力而并非实现一个全新的关系型数据库。 它与NoSQL和NewSQL是并存而非互斥的关系。NoSQL和NewSQL作为新技术探索的前沿放眼未来拥抱变化是非常值得推荐的。反之也可以用另一种思路看待问题放眼未来关注不变的东西进而抓住事物本质。 关系型数据库当今依然占有巨大市场是各个公司核心业务的基石未来也难于撼动我们目前阶段更加关注在原有基础上的增量而非颠覆  sharding-jdbc 定位为轻量级Java框架在Java的JDBC层提供的额外服务。 它使用客户端直连数据库以jar包形式提供服务无需额外部署和依赖可理解为增强版的JDBC驱动完全兼容JDBC和各种ORM框架。适用于任何基于Java的ORM框架如JPA, Hibernate, Mybatis, Spring JDBC Template或直接使用JDBC。 基于任何第三方的数据库连接池如DBCP, C3P0, BoneCP, Druid, HikariCP等。 支持任意实现JDBC规范的数据库。目前支持MySQLOracleSQLServer和PostgreSQL  三. 项目实战 本项目基于 Spring Boot 2.1.5 使用sharding-sphere Mybatis-Plus 实现分库分表 1. pom.xml引入依赖 ?xml version1.0 encodingUTF-8?project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersionparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.1.5.RELEASE/versionrelativePath//parentgroupIdcom.xd/groupIdartifactIdspring-boot-sharding-table/artifactIdversion0.0.1-SNAPSHOT/versionnamespring-boot-sharding-table/namedescription基于 Spring Boot 2.1.5 使用sharding-sphere Mybatis-Plus 实现分库分表/descriptionpropertiesjava.version1.8/java.version/propertiesdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependency!--mysql--dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdscoperuntime/scope/dependency!--Mybatis-Plus--dependencygroupIdcom.baomidou/groupIdartifactIdmybatis-plus-boot-starter/artifactIdversion3.1.1/version/dependency!--shardingsphere start--!-- for spring boot --dependencygroupIdio.shardingsphere/groupIdartifactIdsharding-jdbc-spring-boot-starter/artifactIdversion3.1.0/version/dependency!-- for spring namespace --dependencygroupIdio.shardingsphere/groupIdartifactIdsharding-jdbc-spring-namespace/artifactIdversion3.1.0/version/dependency!--shardingsphere end--!--lombok--dependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdversion1.18.8/version/dependency/dependenciesbuildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactId/plugin/plugins/build/project 2. 创建数据库和表 ds0├── user_0└── user_1ds1├── user_0└── user_1 既然是分库分表 库结构与表结构一定是一致的 数据库: ds0 CREATE DATABASE IF NOT EXISTS ds0 /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci */;USE ds0; SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS 0;-- ------------------------------ Table structure for user_0 ------------------------------DROP TABLE IF EXISTS user_0;CREATE TABLE user_0 ( id int(11) NOT NULL, name varchar(255) DEFAULT NULL, age int(11) DEFAULT NULL, PRIMARY KEY (id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4;-- ------------------------------ Table structure for user_1 ------------------------------DROP TABLE IF EXISTS user_1;CREATE TABLE user_1 ( id int(11) NOT NULL, name varchar(255) DEFAULT NULL, age int(11) DEFAULT NULL, PRIMARY KEY (id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4;SET FOREIGN_KEY_CHECKS 1;   数据库: ds1 CREATE DATABASE IF NOT EXISTS ds1 /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci */;USE ds1; SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS 0;-- ------------------------------ Table structure for user_0 ------------------------------DROP TABLE IF EXISTS user_0;CREATE TABLE user_0 ( id int(11) NOT NULL, name varchar(255) DEFAULT NULL, age int(11) DEFAULT NULL, PRIMARY KEY (id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4;-- ------------------------------ Table structure for user_1 ------------------------------DROP TABLE IF EXISTS user_1;CREATE TABLE user_1 ( id int(11) NOT NULL, name varchar(255) DEFAULT NULL, age int(11) DEFAULT NULL, PRIMARY KEY (id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4;SET FOREIGN_KEY_CHECKS 1;   3. application.properties (重点)基本是在这个文件配置的 # 数据源 ds0,ds1sharding.jdbc.datasource.namesds0,ds1# 第一个数据库sharding.jdbc.datasource.ds0.typecom.zaxxer.hikari.HikariDataSourcesharding.jdbc.datasource.ds0.driver-class-namecom.mysql.cj.jdbc.Driversharding.jdbc.datasource.ds0.jdbc-urljdbc:mysql://localhost:3306/ds0?characterEncodingutf-8serverTimezoneGMT%2B8sharding.jdbc.datasource.ds0.usernamerootsharding.jdbc.datasource.ds0.passwordroot# 第二个数据库sharding.jdbc.datasource.ds1.typecom.zaxxer.hikari.HikariDataSourcesharding.jdbc.datasource.ds1.driver-class-namecom.mysql.cj.jdbc.Driversharding.jdbc.datasource.ds1.jdbc-urljdbc:mysql://localhost:3306/ds1?characterEncodingutf-8serverTimezoneGMT%2B8sharding.jdbc.datasource.ds1.usernamerootsharding.jdbc.datasource.ds1.passwordroot# 水平拆分的数据库表 配置分库 分表策略 行表达式分片策略# 分库策略sharding.jdbc.config.sharding.default-database-strategy.inline.sharding-columnidsharding.jdbc.config.sharding.default-database-strategy.inline.algorithm-expressionds$-{id % 2}# 分表策略 其中user为逻辑表 分表主要取决于age行sharding.jdbc.config.sharding.tables.user.actual-data-nodesds$-{0..1}.user_$-{0..1}sharding.jdbc.config.sharding.tables.user.table-strategy.inline.sharding-columnage# 分片算法表达式sharding.jdbc.config.sharding.tables.user.table-strategy.inline.algorithm-expressionuser_$-{age % 2}# 主键 UUID 18位数 如果是分布式还要进行一个设置 防止主键重复#sharding.jdbc.config.sharding.tables.user.key-generator-column-nameid# 打印执行的数据库以及语句sharding.jdbc.config.props..sql.showtruespring.main.allow-bean-definition-overridingtrue     我这次使用配置文件方式实现分库以及分表 以上配置说明: 逻辑表 user 水平拆分的数据库表的相同逻辑和数据结构表的总称。例用户数据根据主键尾数拆分为2张表分别是user0到user1他们的逻辑表名为user。 真实表 在分片的数据库中真实存在的物理表。即上个示例中的user0到user1 分片算法: Hint分片算法     对应HintShardingAlgorithm用于处理使用Hint行分片的场景。需要配合HintShardingStrategy使用。 分片策略: 行表达式分片策略 对应InlineShardingStrategy。使用Groovy的表达式提供对SQL语句中的和IN的分片操作支持只支持单分片键。对于简单的分片算法可以通过简单的配置使用从而避免繁琐的Java代码开发如: user$-{id % 2} 表示user表根据id模2而分成2张表表名称为user0到user_1。 自增主键生成策略 通过在客户端生成自增主键替换以数据库原生自增主键的方式做到分布式主键无重复。 采用UUID.randomUUID()的方式产生分布式主键。或者 SNOWFLAKE 4. 实体类 package com.zhang.shardingtable.entity;import com.baomidou.mybatisplus.annotation.TableName;import com.baomidou.mybatisplus.extension.activerecord.Model;import groovy.transform.EqualsAndHashCode;import lombok.Data;import lombok.experimental.Accessors;/*** Classname User* Description 用户实体类* Author 章国文 13120739083163.com* Date 2019-06-28 17:24* Version 1.0*/DataEqualsAndHashCode(callSuper true)Accessors(chain true)TableName(user)public class User extends ModelUser {/*** 主键Id*/private int id;/*** 名称*/private String name;/*** 年龄*/private int age;}   5. dao层 package com.zhang.shardingtable.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper;import com.zhang.shardingtable.entity.User;/*** user dao层* author lihaodong*/public interface UserMapper extends BaseMapperUser {}   6. service层以及实现类 UserService package com.zhang.shardingtable.service;import com.baomidou.mybatisplus.extension.service.IService;import com.zhang.shardingtable.entity.User;import java.util.List;/*** Classname UserService* Description 用户服务类* Author 章国文 13120739083163.com* Date 2019-06-28 17:31* Version 1.0*/public interface UserService extends IServiceUser {/*** 保存用户信息* param entity* return*/Overrideboolean save(User entity);/*** 查询全部用户信息* return*/ListUser getUserList();} UserServiceImpl package com.zhang.shardingtable.service.Impl;import com.baomidou.mybatisplus.core.toolkit.Wrappers;import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;import com.zhang.shardingtable.entity.User;import com.zhang.shardingtable.mapper.UserMapper;import com.zhang.shardingtable.service.UserService;import org.springframework.stereotype.Service;import java.util.List;/*** Classname UserServiceImpl* Description 用户服务实现类* Author 章国文 13120739083163.com* Date 2019-06-28 17:32* Version 1.0*/Servicepublic class UserServiceImpl extends ServiceImplUserMapper, User implements UserService {Overridepublic boolean save(User entity) {return super.save(entity);}Overridepublic ListUser getUserList() {return baseMapper.selectList(Wrappers.UserlambdaQuery());}}     7. 控制类 package com.zhang.shardingtable.controller;import com.zhang.shardingtable.entity.User;import com.zhang.shardingtable.service.UserService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RestController;import java.util.List;/*** Classname UserController* Description 用户测试控制类* Author 章国文 13120739083163.com* Date 2019-06-28 17:36* Version 1.0*/RestControllerpublic class UserController {Autowiredprivate UserService userService;GetMapping(/select)public ListUser select() {return userService.getUserList();}GetMapping(/insert)public Boolean insert(User user) {return userService.save(user);}}     四. 测试 启动项目 打开浏览器 分别访问: http://localhost:8080/insert?id1namelhdage12     http://localhost:8080/insert?id2namelhdage13     http://localhost:8080/insert?id3namelhdage14     http://localhost:8080/insert?id4namelhdage15 可以在控制台看到如下展示表示插入成功了 根据分片算法和分片策略 不同的id以及age取模落入不同的库表 达到了分库分表的结果 有的人说 查询的话 该怎么做呢 其实也帮我们做好了 打开浏览器 访问: http://localhost:8080/select 分别从ds0数据库两张表和ds1两张表查询结果 然后汇总结果返回 之前有朋友问我单表数据量达千万,想做水平分割,不分库,也可以的吧?     是完全可以的 只要修改配置文件的配置即可 非常灵活
http://www.zqtcl.cn/news/26260/

相关文章:

  • 武功县住房和城乡建设局网站如何申请企业邮箱免费
  • 国外摄影网站提供常州网站优化
  • 上海英文网站建设电脑在哪里制作网站
  • 专门做游轮的网站网站验证码原理
  • 文登区城乡建设局网站如何创立个人网站
  • 一个网站开发怎么建微信公众号
  • 常州模板建站代理wordpress 离线发布
  • 方维网站建设wordpress子网站
  • 成都网站建设服务网站建设盐城
  • 上海高端网站设计公司网站内部资源推广的基本方法
  • 商水县建设局网站一般的企业网站开发价格
  • 高度重视机关门户网站建设肇庆企业免费建站
  • 沈阳网站改版网站建设各部门职责策划
  • 个人秀网站wordpress类与函数的差别
  • 电子商务网站免费模板soho建设外贸网站
  • 专业做尼泊尔的旅行网站loft办公室装修设计方案
  • html5移动网站开发实例2022最火的新零售模式
  • 电子商务网站建设任务分解wordpress 迁移
  • 嘉兴网站开发公司电话大连学网站制作
  • 小程序需要写网站建设方案书哪些网站布局设计做的比较好的
  • 招聘门户网站开发人员赣州人才网最新招聘
  • 购物网站英语我有一个网站怎么做外贸
  • 在IIs下建设一个网站wordpress维护页面插件
  • 建站推广网站排名德国网站建设
  • 网站设计工作室公司wordpress 博客统计
  • 网站建设申报方案自己做的网站验证码出不来怎么
  • 桐乡建设局网站微信公众号优惠和网站绑定怎么做
  • 南宁seo外包服务南宁快速优化排名
  • 主机屋怎么做网站做网站怎样实现网上支付
  • 贵阳网站建设外包东莞网站推广渠道