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

福建省住房和城乡建设厅的网站电商运营推广是做什么的

福建省住房和城乡建设厅的网站,电商运营推广是做什么的,合肥市建设局,长春市建设信息网站随着互联网应用的不断发展和用户量的不断增加#xff0c;传统的数据库在应对高并发和大数据量的场景下面临着巨大的挑战。为了解决这一问题#xff0c;分库分表成为了一个非常流行的方案。分库分表主流的技术包括MyCat和Sharding JDBC。我们来通过一张图来了解这两者有什么区…随着互联网应用的不断发展和用户量的不断增加传统的数据库在应对高并发和大数据量的场景下面临着巨大的挑战。为了解决这一问题分库分表成为了一个非常流行的方案。分库分表主流的技术包括MyCat和Sharding JDBC。我们来通过一张图来了解这两者有什么区别 从上图可以看到MyCat是一个单独的中间件读者朋友们可以把它理解为一个数据库(不过它不是数据库哦只是对于应用端来说连接使用MyCat和数据库是一样的对应用程序来说不需要关心具体是数据库还是MyCat而Sharding JDBC则是整合到应用端的它运行在应用端和代码的耦合性相对MyCat来说要更高。本文笔者将深入探索Sharding JDBC介绍其核心概念、工作原理以及使用方法并通过一个示例帮助读者更好地理解和应用Sharding JDBC。 1. 什么是Sharding JDBC Sharding JDBC是一款基于Java的开源中间件用于简化分库分表的操作和管理。它提供了一套统一的接口和封装屏蔽了底层数据库的细节让开发者可以像使用单一数据库一样操作分布式数据库。 2. Sharding JDBC的核心概念 2.1 数据库切片Sharding 数据库切片是指将一个大型数据库按照某种规则拆分成多个较小的数据库实例每个数据库实例称为一个切片。切片可以根据不同的规则进行拆分如按照用户ID、地域等进行划分。 2.2 分布式表Sharding Table 分布式表是指将一个表按照某种规则拆分成多个子表每个子表存储了相同表结构的不同数据。通常分布式表的拆分规则与数据库切片的规则相一致。 2.3 数据库路由Database Sharding 数据库路由是指根据某种规则将数据库的操作路由到对应的数据库切片上。Sharding JDBC提供了路由策略的配置可以根据业务需求进行灵活的配置。 2.4 表路由Table Sharding 表路由是指根据某种规则将数据操作路由到对应的分布式表上。Sharding JDBC同样提供了灵活的表路由策略配置支持多种分表策略。 3. Sharding JDBC的工作原理 简单来说Sharding JDBC的工作原理可以概括为以下几个步骤 客户端发起数据库操作请求。Sharding JDBC根据路由策略解析请求确定对应的数据库切片和分布式表。Sharding JDBC将请求转发给对应的数据库切片和分布式表。数据库切片和分布式表执行具体的数据库操作。结果返回给Sharding JDBC再由Sharding JDBC返回给客户端。 Sharding JDBC通过对数据库操作的解析和转发实现了透明的分库分表功能对上层应用透明使得应用无需关心分布式数据库的复杂性。 4. 如何使用Sharding JDBC 接下来我们一起来看下如何使用。使用Sharding JDBC可以分为以下几个步骤 4.1 引入Sharding JDBC依赖 在项目的pom.xml文件中引入Sharding JDBC的相关依赖以及对应的数据库驱动依赖。 4.2 配置数据源和数据库规则 在配置文件中配置数据源和数据库规则包括数据库连接信息、数据库切片和分布式表的规则等。 4.3 编写业务代码 编写业务代码时使用Sharding JDBC提供的API进行数据库操作无需关心具体的数据库切片和分布式表。 下面笔者根据上述步骤以一个例子来详细展示具体的使用方法 我们以用户表和订单表为例对其分库分表。 A.引入Sharding JDBC依赖可以通过Maven来管理项目依赖。 dependencygroupIdio.shardingsphere/groupIdartifactIdsharding-jdbc-spring-boot-starter/artifactIdversionxxx/version /dependency B.配置数据源和数据库规则在application.yaml中进行配置。 spring:shardingsphere:datasource:# 数据源配置定义两个数据源names: ds0 ds1ds0:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/database0username: rootpassword: rootds1:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/database1username: rootpassword: rootsharding:tables:# 订单表的配置order:actualDataNodes: ds${0..1}.order_${0..3}# 表路由策略根据用户ID进行分表tableStrategy:standard:shardingColumn: user_idpreciseAlgorithmClassName: com.example.algorithm.PreciseModuloTableShardingAlgorithm# 数据库路由策略根据用户ID进行分库databaseStrategy:standard:shardingColumn: user_idpreciseAlgorithmClassName: com.example.algorithm.PreciseModuloDatabaseShardingAlgorithm C.编写自定义的分表策略和分库策略。例如我们自定义了 PreciseModuloTableShardingAlgorithm和PreciseModuloDatabaseShardingAlgorithm两个算法类根据用户ID进行分表和分库的计算。 public class PreciseModuloTableShardingAlgorithm implements PreciseShardingAlgorithmLong {Overridepublic String doSharding(CollectionString tableNames PreciseShardingValueLong shardingValue) {for (String tableName : tableNames) {if (tableName.endsWith(String.valueOf(shardingValue.getValue() % 4))) {return tableName;}}throw new IllegalArgumentException(Unsupported table name: shardingValue.getLogicTableName());} }public class PreciseModuloDatabaseShardingAlgorithm implements PreciseShardingAlgorithmLong {Overridepublic String doSharding(CollectionString databaseNames PreciseShardingValueLong shardingValue) {for (String databaseName : databaseNames) {if (databaseName.endsWith(String.valueOf(shardingValue.getValue() % 2))) {return databaseName;}}throw new IllegalArgumentException(Unsupported database name: shardingValue.getLogicTableName());} } D. 编写业务代码使用Sharding JDBC进行数据库操作。 Repository public class OrderRepository {Autowiredprivate JdbcTemplate jdbcTemplate;public ListOrder findOrdersByUserId(Long userId) {String sql SELECT * FROM order WHERE user_id ?;return jdbcTemplate.query(sql new Object[]{userId} new BeanPropertyRowMapper(Order.class));}public void saveOrder(Order order) {String sql INSERT INTO order (id user_id amount) VALUES (? ? ?);jdbcTemplate.update(sql order.getId() order.getUserId() order.getAmount());} }Service public class OrderService {Autowiredprivate OrderRepository orderRepository;public ListOrder getOrdersByUserId(Long userId) {return orderRepository.findOrdersByUserId(userId);}public void saveOrder(Order order) {orderRepository.saveOrder(order);} } 在上述示例中我们配置了两个数据源ds0和ds1每个数据源对应一个数据库实例。订单表根据用户ID进行分表共分为4张表order_0、order_1、order_2、order_3并根据用户ID进行分库共分为2个数据库实例。在业务代码中我们通过Sharding JDBC的API来进行数据库操作无需关心具体的数据库切片和分布式表。 本文深入探索了Sharding JDBC的核心概念、工作原理和使用方法并通过一个用户订单分库分表的示例加以完善。通过使用Sharding JDBC开发者可以轻松应对高并发和大数据量的场景提升系统的性能和可扩展性。希望本文对读者理解和应用Sharding JDBC有所帮助。 相关内容拓展技术前沿 开发语言作为软件搭建的底层长久以来一直使用英文编程Java、C 等语言对于专业程序员来说并不难然而许多非 IT 专业的人希望搭建出适合自己使用的软件却被晦涩难懂的英文编程阻拦在外。 所幸的是自 2000 年以来低代码领域虽然在夹缝中艰难生存但是经历 20 年风雨如今却已柳木成荫相关领域企业超过百家近年如火如荼的“JNPF 平台”更是低代码界的一匹黑马。 JNPF 平台由具备 10 多年系统开发经验和企业项目交付经验的技术团队倾力打造而成的企业级低代码平台。支持多国语言切换搭建界面业务流程只需要“拖拉拽”方式、少量或完全不需要编写代码即可搭建操作起来就像搭积木一样简单会玩电脑就可以开发软件。 核心功能表单引擎、可视化引擎、BI引擎、流程引擎、权限引擎、门户引擎、大屏引擎、接口中心、物联平台 如果那你未曾尝试过这个领域你或许可以试试看官网https://www.jnpfsoft.com/?csdn
http://www.zqtcl.cn/news/69522/

相关文章:

  • 网站开发企划书如何给wordpress文章排版
  • 做网站赚钱的QQ群佛山小学网站建设
  • 微信网站建设方案友汇网站建设
  • 江苏华悦建设集团网站陕西建设执业注册中心网站
  • 石家庄市住房城乡建设局网站保健品网站怎么做的
  • 无为县建设局网站采购
  • 网站制作中山怎样做模板网站
  • 免费开设网站网站源码爬取
  • 知科网站怎样建设手机网站
  • 浙江常规网站建设校园网站开发方案
  • 领英定制通网站建设登封seo公司
  • 网站建设暨检务公开自查报告化妆品应如何网站建设定位
  • 宜春建设网站公司搜索引擎优化包括哪些方面
  • 溧阳网站建设哪家好国外超酷网站
  • 珠宝网站dedecms模版网站应该怎么做
  • 南通网站公司网站建游戏网站
  • 企业网站备案需要什么资料浅谈高校门户网站建设的规范标准
  • 在网站上做承诺php网站开发环境的设置
  • 自己做的网站如何联网wordpress 不用登录
  • 网站做扫一扫做电影网站能不能赚钱
  • 如何查询网站域名备案信息购物网站设计图
  • htm5网站建设惠州企业网站建设
  • 公司网站的搭建方案建立个人博客网站wordpress
  • 建设网站 后期的提成方案广告公司现状
  • 南昌网站开发多少钱室内装饰设计师证书含金量
  • 注册公司制作网站久久建筑网平台
  • 做网站必须要购买空间吗wordpress视频模块
  • 工程网站模板百度关键词搜索排行榜
  • 泰安哪家做网站好百度的合作网站有哪些
  • flask做的网站如何上传文件网站建设的主要职责