ShardingSphere 概览

【ShardingSphere专题】SpringBoot整合ShardingSphere(一、数据分片入门及实验) 最近线上的项目部分数据表增量速度比较快,可以预见的是,个把月后数据量会急剧增长至千万级,所以只是简单的使用索引等已经无法满足业务需求了,分库分表势在必行!于是着手研究如何整合ShardingSphere到现有项目中,顺带记录一下实验过程吧。特别声明:这边是实验配置阶段,还没有完成整合到项目、以及测试联调阶段,所以不敢保证实验过程是否正确。而且,在我的业务中,还涉及到【普通单表】与【分片表】之间的联表查询,所以需要后期比较严谨的测试才能知道最终效果。不过我自己对比了站内其他大佬的教程,大体是没问题的。 阅读详情

📕我是廖志伟,一名Java开发工程师、《Java项目实战——深入理解大型互联网企业通用技术》(基础篇)、(进阶篇)、(架构篇)清华大学出版社签约作家、Java领域优质创作者、优快云博客专家、阿里云专家博主、51CTO专家博主、产品软文专业写手、技术文章评审老师、技术类问卷调查设计师、幕后大佬社区创始人、开源项目贡献者。

📘拥有多年一线研发和团队管理经验,研究过主流框架的底层源码(Spring、SpringBoot、SpringMVC、SpringCloud、Mybatis、Dubbo、Zookeeper),消息中间件底层架构原理(RabbitMQ、RocketMQ、Kafka)、Redis缓存、MySQL关系型数据库、 ElasticSearch全文搜索、MongoDB非关系型数据库、Apache ShardingSphere分库分表读写分离、设计模式、领域驱动DDD、Kubernetes容器编排等。不定期分享高并发、高可用、高性能、微服务、分布式、海量数据、性能调优、云原生、项目管理、产品思维、技术选型、架构设计、求职面试、副业思维、个人成长等内容。

Java程序员廖志伟

🌾阅读前,快速浏览目录和章节概览可帮助了解文章结构、内容和作者的重点。了解自己希望从中获得什么样的知识或经验是非常重要的。建议在阅读时做笔记、思考问题、自我提问,以加深理解和吸收知识。阅读结束后,反思和总结所学内容,并尝试应用到现实中,有助于深化理解和应用知识。与朋友或同事分享所读内容,讨论细节并获得反馈,也有助于加深对知识的理解和吸收。💡在这个美好的时刻,笔者不再啰嗦废话,现在毫不拖延地进入文章所要讨论的主题。接下来,我将为大家呈现正文内容。

优快云

一、核心分片机制

在分布式数据库系统中,ShardingSphere的核心分片机制是其实现数据库水平扩展和分布式架构的关键。以下是该机制的技术实现细节:

分片策略

分片策略是数据分配的基础,ShardingSphere支持以下几种分片策略:

  • 精确分片算法:通过哈希函数将键值映射到具体的分片。例如,可以使用Java的hashCode()方法结合模运算来实现。这种策略适用于键值范围较小,且键值分布均匀的场景。

  • 范围分片算法:根据键值的范围将数据分配到不同的分片。例如,可以使用数据库的内置函数BETWEEN来实现。这种策略适用于数据量较大,且键值范围分布均匀的场景。

  • 复合分片算法:结合多种分片策略,如先按某个键值范围分片,再按另一个键值进行精确分片。这种策略可以更灵活地满足复杂的分片需求。

强制路由策略

强制路由策略确保查询操作能够直接路由到正确的分片。ShardingSphere通过以下技术实现:

  • SQL解析:在解析SQL语句时,根据分片策略确定目标分片。
  • 路由规则:定义路由规则,将SQL语句路由到正确的分片。

分布式事务

分布式事务的跨分片操作复杂,ShardingSphere支持以下事务模型:

  • XA事务实现:基于XA协议的分布式事务,通过两阶段提交协议保证事务一致性。在数据库层面,需要支持XA事务的数据库引擎,如MySQL的InnoDB引擎。

  • SeGA事务模型:ShardingSphere自有的分布式事务模型,通过两阶段提交协议实现事务一致性。在ShardingSphere内部,通过分布式协调器来管理事务状态。

  • 柔性事务补偿:当分布式事务失败时,通过补偿机制来恢复数据一致性。这种策略适用于对数据一致性要求不高的场景。

二、读写分离体系

读写分离是提高数据库性能和可用性的重要手段,ShardingSphere提供了以下读写分离解决方案:

负载均衡

负载均衡策略决定了读操作的请求如何分配到不同的从库上:

  • 权重分配策略:根据从库的负载情况动态调整权重。可以使用轮询、最少连接数、响应时间等策略。

  • 故障自动剔除:当从库出现故障时,自动将其从负载均衡策略中剔除。可以使用心跳检测、故障检测机制来实现。

连接池管理

连接池管理负责管理数据库连接,提高连接复用率:

  • 连接池配置:配置连接池大小、最大等待时间、连接超时时间等参数。

  • 连接池监控:监控连接池状态,如活跃连接数、空闲连接数等。

数据一致性

数据一致性是读写分离的关键问题,ShardingSphere通过以下机制保证数据一致性:

  • 主从延迟检测:通过比较主从数据库的时间戳或序列号,检测主从数据库之间的延迟。

  • 强制主库路由:确保写操作直接路由到主库,保证数据一致性。

读写分离+分片组合

ShardingSphere支持将读写分离与分片机制结合使用,实现更复杂的分布式数据库架构。这种组合通过以下技术实现:

  • 分片路由:根据分片策略确定读写分离的目标从库。

  • 事务管理:在分布式事务中,确保读操作从从库读取数据,写操作写入主库。

三、分布式治理

分布式治理是确保分布式数据库系统稳定运行的关键,ShardingSphere提供了以下分布式治理解决方案:

弹性伸缩

弹性伸缩策略允许根据系统负载自动调整资源:

  • 在线分片变更:在不停机的情况下,动态调整分片配置。通过修改配置文件或使用API来实现。

  • 数据再平衡:根据数据访问模式动态调整数据分布。通过重新分配数据到不同的分片来实现。

资源隔离策略

资源隔离策略确保不同应用或用户之间的资源不会被互相干扰:

  • 资源分配:根据应用或用户的需求,分配相应的资源。

  • 资源监控:监控资源使用情况,确保资源合理分配。

集群管控

集群管控负责监控和管理整个分布式数据库集群:

  • 配置中心集成:集中管理配置信息,如分片策略、读写分离配置等。

  • 分布式锁实现:保证配置变更的一致性。

  • 节点状态探活:检测集群中节点的状态,确保系统健康。

四、数据迁移方案

数据迁移是数据库升级或迁移过程中的重要环节,ShardingSphere提供了以下数据迁移方案:

全量迁移

全量迁移是指将整个数据库的数据迁移到新的数据库中:

  • 一致性校验:确保迁移过程中数据的一致性。通过比对源数据库和目标数据库的数据来验证。

  • 断点续传:支持在迁移过程中出现故障时,从断点继续迁移。通过记录迁移进度来实现。

  • 存量数据切割:将存量数据切割成小批次进行迁移。通过分批处理数据来实现。

增量同步

增量同步是指只同步数据库中的新增或变更数据:

  • Binlog解析:解析数据库的Binlog,提取新增或变更的数据。通过监听Binlog事件来实现。

  • 双写一致性:在迁移过程中,确保主库和从库的数据一致性。通过同步主库的写操作到从库来实现。

  • 灰度切换验证:在迁移完成后,进行灰度切换验证,确保系统稳定运行。通过逐步切换用户来实现。

五、生态扩展组件

ShardingSphere提供了一系列生态扩展组件,增强了其功能和应用场景:

ShardingSphere-Proxy

ShardingSphere-Proxy是一个高性能的数据库代理,支持多种数据库协议:

  • 协议适配层:支持多种数据库协议,如MySQL、PostgreSQL等。通过封装数据库协议实现。

  • 流量治理:通过流量控制,优化数据库访问。通过限流、熔断等策略实现。

  • 多租户支持:支持多租户数据库,满足不同用户的需求。通过租户隔离、权限控制等策略实现。

ShardingSphere-JDBC

ShardingSphere-JDBC是一个JDBC驱动,提供透明的数据库分片功能:

  • 连接模式优化:优化连接模式,提高性能。通过连接池、连接复用等策略实现。

  • 多数据源聚合:支持连接多个数据源,实现数据聚合。通过数据源路由、数据源合并等策略实现。

  • Hint管理器:通过SQL提示,控制分片策略和读写分离。通过解析SQL中的Hint来实现。

优快云

📥博主的人生感悟和目标

Java程序员廖志伟

希望各位读者大大多多支持用心写文章的博主,现在时代变了,信息爆炸,酒香也怕巷子深,博主真的需要大家的帮助才能在这片海洋中继续发光发热,所以,赶紧动动你的小手,点波关注❤️,点波赞👍,点波收藏⭐,甚至点波评论✍️,都是对博主最好的支持和鼓励!

- 💂 博客主页: Java程序员廖志伟
- 👉 开源项目: Java程序员廖志伟
- 🌥 哔哩哔哩: Java程序员廖志伟
- 🎏 个人社区: Java程序员廖志伟
- 🔖 个人微信号: SeniorRD

Java程序员廖志伟

📙经过多年在优快云创作上千篇文章的经验积累,我已经拥有了不错的写作技巧。同时,我还与清华大学出版社签下了四本书籍的合约,并将陆续出版。这些书籍包括了基础篇、进阶篇、架构篇的📌《Java项目实战—深入理解大型互联网企业通用技术》📌,以及📚《解密程序员的思维密码--沟通、演讲、思考的实践》📚。具体出版计划会根据实际情况进行调整,希望各位读者朋友能够多多支持!

🔔如果您需要转载或者搬运这篇文章的话,非常欢迎您私信我哦~

吉林大学软件工程章节测验 第九章 答案+解析 4.【判断题】估算软件规模有代码行技术和功能点技术两种方法,其中代码行方法估计实现一个功能所需要的源程序行数,其不依赖项目所使用的开发语言,并且具有较好的直观性。3.【单选题】软件项目估算时,若计划人员对每个功能分别按最佳的、可能的、悲观的三种情况给出功能点估计值,记作a, m, b,则估算的期望值E的公式为( )。8.【判断题】在工程网络图中,如果在由起始事件至终止事件所构成的一条路径上,所有事件的最早时刻都和最迟时刻都相同,那么这条路径就是关键路径。4.【单选题】配置管理贯穿软件开发的整个过程。 阅读详情

相关推荐

C# 读取图片和扫描PDF中的文本

本博客将探讨如何使用C#和OCR库实现从图片和扫描的 PDF 中提取文本。Spire.OCR for .NET 是一个OCR文字识别库,专为在 .NET 应用程序中识别图片的文本而设计。首先,使用 Spire.PDF 将扫描的 PDF 转换为图片,然后利用 Spire.OCR 从这些图片中提取文本。由于该OCR库并不支持直接处理PDF,因此要从扫描的 PDF 中提取文本,我们首先需要将 PDF 文档转换为图片。转换完成后,再利用 Spire.OCR 从生成的图片中提取文本。方法来识别图片中的文本。

nuclear2011的博客 5403

【八】spring boot集成数据库连接池druid

最近在进行程序优化的过程中发现程序瓶颈在数据库连接这块,于是开始研究怎么对数据库连接池参数进行调优,在这个过程中发现很多人使用druid很不规范,经常会出现导入的包和配置参数不对应的情况,这些都是因为对集成druid一知半解导致的,因此决心写一篇关于spring boot集成数据库连接池druid的博客来彻底理解清楚其中的原理。二、springboot集成druid-spring-boot-starter。可见starter包依赖,简单了许多,这些归功于spring boot的约定大于配置的特性。

作者:大头兵(kit) 2400

铭飞MCMS源码部署

文章目录前言一、下载铭飞源码二、部署源码1.使用IDEA打开源码2.配置tomcat环境2.1下载tomcat并测试是否可以成功启动(此处不赘述)2.2在IDEA中安装tomcat环境并配置3.添加数据库,并配置3.1新建数据库3.2 导入sql配置三、启动测试 前言 铭飞MCMS基于IDEA、tomcat和mysql的环境搭建。 提示:以下是本篇文章正文内容,下面案例可供参考 一、下载铭飞源码 gitee:https://gitee.com/mingSoft/MCMS/releases(各种版本按需下

MARS_ZORO的博客 4068

Sharding-Sphere系列-主从配置和分库分表

主从配置数据源(主库写、从库读)。即readwrite_ds(这个是在spring.shardingsphere.rules.readwrite-splitting.data-sources下自定义的名称) 分库分表的的数据源要从前面的主从配置数据源获取即readwrite_ds ,actual-data-nodes: readwrite_ds.brand_info_$->{0..1},这里的$->{0..1}是为了防止和spring的配置文件占位符{0..1}起冲突.

Toker.Zhou的博客 6723

U8采购入库单CO接口开发实战:加载、新增与删除操作详解

本文详细解析了用友U8采购入库单CO接口的开发实战,重点介绍了加载、新增与删除三大核心操作的实现方法。通过C#代码示例和实际项目经验,帮助开发者高效处理采购入库单,提升企业供应链管理效率。文章还涵盖了环境配置、异常处理、性能优化等关键技巧,适合U8二次开发人员参考。

weixin_33462927的博客 377

时间卷积网络(TCN):结构+pytorch代码

文章目录TCNTCN结构1-D FCN的结构因果卷积(Causal Convolutions)膨胀因果卷积(Dilated Causal Convolutions)膨胀非因果卷积(Dilated Non-Causal Convolutions)残差块结构pytorch代码讲解 TCN   TCN(Temporal Convolutional Network)是由Shaojie Bai et al....

Leon_winter的博客 11万+

ShardingJDBC

ShardingJDBC个人学习笔记

kkoyy459的博客 1329

【QGIS入门实战精品教程】1.2:QGIS与ArcGIS的区别和联系

以下是GISGeography官方给出的两者之间的27点比较(译): 官方网址:https://gisgeography.com/qgis-arcgis-differences/ 1.QGIS容纳更多的数据格式 ArcGIS没有支持所有的数据格式,毫无疑问,QGIS在处理各种类型的数据时非常顺手,QGIS在数据格式方面是个多面手,在使用数据方面是它的长处。 QGIS使用GDAL/OGR库来读取和写入地理信息数据格式,支持超过70种矢量格式。QGIS一开始就是为了与PostGIS协作而诞生的,而支持的名单.

智慧空间实验室 2043

ShardingSphere系列02:ShardingJdbc+Mybatis实现多数据源

ShardingJdbc+Mybatis实现多数据源

Think_and_work的博客 3319

反光柱定位算法实战05:Cartographer Landmark融合定位——从原理到实战

本文介绍了CartographerLandmark融合定位方案,该方案将反光柱作为Landmark节点直接融入Cartographer后端优化框架,避免了传统双系统切换导致的位姿跳变问题。文章详细阐述了Landmark的核心原理、数据发布格式(包括ID、坐标、权重等关键字段)以及两种工作模式(建图模式和导航模式)。特别指出组合反光柱作为Landmark可提供方向参考,有效解决镜像歧义问题。该方案通过统一优化框架实现稳定定位,尤其适用于缺乏自然特征的环境,但存在ID匹配不稳定等局限性。整体而言,Cartogr

Studying…… 424

3.4 ISIS和OSPF之间路由引入

通过以上输出可以看到OSPF的路由引入到了IS-IS中。通过以上输出可以看到ISIS的路由没有传递给OSPF。通过以上输出可以看到OSPF的路由没有传递给ISIS。通过以上输出可以看到ISIS的路由被引入进了OSPF。掌握在IS-IS中引入OSPF路由的方法。掌握在OSPF中引入IS-IS路由的方法。图3-3:ISIS和OSPF之间路由引入。在R3上把ISIS的路由引入到OSPF。OSPF引入外部路由的缺省度量值为1。在R3上把OSPF的路由引入到ISIS。引入的外部路由类型为Type2。

lwljh134的博客 1803

ShardingSphere简单实现

在mybatis配置项下,设置自动化配置 MyBatis 需要的参数。在配置项下,设置自动化配置 Sharding-JDBC 需要的参数。比较复杂,我们一个一个来看。配置项,我们配置了和两个数据源,分别对应和两个数据库。配置项,我们配置了orders和逻辑表。逻辑表:水平拆分的数据库(表)的相同逻辑和数据结构表的总称。例:订单数据根据主键尾数拆分为 10 张表,分别是t_order_0到t_order_9,他们的逻辑表名为t_order。真实表:在分片的数据库中真实存在的物理表。即上个示例中的。

m0_37808678的博客 822

STM32+ESP8266+MQTT协议连接阿里云物联网平台

一、环境介绍 单片机采用:STM32F103C8T6 上网方式:采用ESP8266,也可以使用其他设备代替,只要支持TCP协议即可。比如:GSM模块、有线网卡等。 开发软件:keil5 二、实现功能 通过阿里云物联网服务器实现设备数据远程上传、下发,实现数据交互。 在当前使用的开发板上有4盏LED灯、一个蜂鸣器、4个按键。 三、阿里云物联网服务器创建步骤 说明:如果没有账号的话,先点击网页右上角,注册一个账号,并完成实名认证再继续下一步。 产品名称根据自己情况填...

6万+

【ShardingSphere】ShardingSphere概览

该文章摘抄自:https://shardingsphere.apache.org/document/current/cn/overview/。不支持转载 简介 Apache ShardingSphere 是一套开源的分布式数据库解决方案组成的生态圈,主要有三部分组成(这里以) ShardingSphere-JDBC ShardingSphere-Proxy ShardingSphere-Sidecar(TODO) 能够独立部署,又支持混合部署配合使用的产品组成。 它们均提供标准化的数据水平扩展、分布.

xlecho的博客 8024

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Apache ShardingSphere 概览

文章转自 Apache ShardingSphere官方文档 官方文档写的很详尽,细节请移步到官方文档查阅。 Apache ShardingSphere 是一套开源的分布式数据库解决方案组成的生态圈,它由 JDBC、Proxy 和 Sidecar(规划中)这 3 款既能够独立部署,又支持混合部署配合使用的产品组成。 它们均提供标准化的数据水平扩展、分布式事务和分布式治理等功能,可适用于如 Java 同构、异构语言、云原生等各种多样化的应用场景。 Apache ShardingSphere 旨在充分合理地.

weixin_42177302的博客 481

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Apache ShardingSphere项目概览

注意:项目结构会进行调整,此结构整理会进行更新,目前基于5.0 beta版本 shardingsphere-agent Java探针设计、bytebuddy使用、可观察性实战 shardingsphere-db-protocol 数据库协议实现 shardingsphere-distribution

zzz 539

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

第一章:ShardingSphere 概览

test

Shair911的博客 292

ShardingSphere初探1 -- 概览

知道这个框架是通过一期QQ课堂 https://shardingsphere.apache.org官网 https://github.com/apache/incubator-shardingspheregithub库 https://shardingsphere.apache.org/document/current/cn/overview/中文文档 htt...

weixin_30505751的博客 153

快讯!Apache ShardingSphere进入CNCF全景图

快讯! Apache ShardingSphere进入云原生计算基金会(CNCF)全景图。CNCFCNCF(Cloud Native Computing Foundati...

ShardingSphere官微 776

分库分表:ShardingSphere

文章目录1.ShardingSphere概念2.功能列表3.项目状态4.分库分表_结果归并 1.ShardingSphere概念 ShardingSphere是一套开源的分布式数据库中间件解决方案组成的生态圈,它由Sharding-JDBC、Sharding-Proxy 和 Sharding-Sidecar这3款相互独立的产品组成。 他们均提供标准化的数据分片、分布式事务 和 数据库治理功能,可适用于如Java同构、异构语言、云原生等各种多样化的应用场景。 Apache ShardingSphere 旨在充

959 1211

ShardingSphere快速入门

可以使用命令行客户端(ShardingSphere-Proxy 的定位为透明化的数据库代理,理论上支持任何使用 MySQL、PostgreSQL、openGauss 协议的客户端操作数据,对异构语言、运维场景更友好。参数强制启动 Proxy,该参数会忽略启动期间异常的数据源,强行启动 Proxy,用户可以在 Proxy 启动完成后,通过 DistSQL 移除异常数据源。执行 MySQL / PostgreSQL / openGauss 的客户端命令直接操作 ShardingSphere-Proxy 即可。

qq_36070104的博客 1663

《ShardingSphere 联邦查询分析》

前不久的一篇博文《技术栈选型之跨库查询分析》,介绍了博主所在公司的跨库查询背景,其中一个可选方案是通过数据库中间件来完成,诸如 ShardingSphere、Presto 都进行了尝试验证。本篇文章主要介绍利用 ShardingSphere 联邦查询实现跨库查询的可行性,后续再针对其他技术点进行展开介绍。Apache ShardingSphere 是一款分布式 SQL 事务和查询引擎,可通过数据分片、弹性伸缩、加密等能力对任意数据库进行增强。

山人行 1603

ShardingSphere——介绍

Apache ShardingSphere 是一个开源的分布式数据库中间件生态圈,可以看作是一个或,它在应用程序和数据库之间,帮助开发者实现一些复杂的分布式数据库管理功能,为用户提供数据分片、分布式事务、数据库治理等功能。它支持通过分片(Sharding)、读写分离、影子库(Shadow Database)等多种方式,帮助开发者优化分布式数据库的操作体验。具体来说,ShardingSphere 是为分布式数据库场景设计的,可以认为它是。

MogulNemenis的博客 1227

ShardingSphere详解

ShardingSphere 作为一款分布式数据库中间件,其核心分片机制通过将数据水平切分,实现数据库的横向扩展。这种机制不仅能够提高数据库的并发处理能力,还能有效应对大规模数据量的存储需求。读写分离是将读操作和写操作分离到不同的数据库实例,从而提高数据库的读写性能。

我是Java程序员廖志伟,感谢朋友们的支持!不定期贡献一篇高品质、过万文字、图文并茂且附有视频解说、满载代码示例注释的良心之作,坚决杜绝粗制乱造。 1000

ShardingSphere技术解析

📕我是廖志伟,一名Java开发工程师、《Java项目实战——深入理解大型互联网企业通用技术》(基础篇)、(进阶篇)、(架构篇)清华大学出版社签约作家、Java领域优质创作者、优快云博客专家、阿里云专家博主、51CTO专家博主、产品软文专业写手、技术文章评审老师、技术类问卷调查设计师、幕后大佬社区创始人、开源项目贡献者。

我是Java程序员廖志伟,感谢朋友们的支持!不定期贡献一篇高品质、过万文字、图文并茂且附有视频解说、满载代码示例注释的良心之作,坚决杜绝粗制乱造。 1206

ShardingSphere入门到精通

ShardingSphere入门到精通

weixin_56018532的博客 5646
上一篇: 并发编程与MyBatis精要
下一篇: ShardingSphere核心技术解析
Java廖志伟
博客等级 码龄2年 3609粉丝 1517原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值