分库分表
文章平均质量分 61
分库分表相关文章.
abckingaa
一个软件设计爱好者。主要项目经验集中在银行等金融领域,有10余年工作经历。对软件设计如何提高开发效率,提高易维护性,易扩展性,分布式系统、大数据量高可用、高并发系统有深入研究!
展开
-
Bee V2.4.0 发布,多表关联操作、Sharding 分片完善、查询结果自定义组装器(同步 Maven)
4.MapSql (MapSuid) 支持使用 Condition 实现更加复杂的 where 条件,updateSet 设值。5. 添加 ConditionExt 支持使用 entity::getName 形式引用属性名。3. 支持 ElasticSearch (7.x) ORM 查询。2. 添加 Calculate 默认日期分片实现。9. 支持 Oracle 的 TO_DATE。11.pgsql json/jsonb 支持。4. 使用日期的字段作为分片键。13. 修复 bug.12. 完善分片功能。原创 2024-09-28 00:33:58 · 412 阅读 · 0 评论 -
一文带你读懂分库分表,分片,Sharding的概念
一文带你读懂分库分表,分片,Sharding的概念原创 2024-09-28 00:30:09 · 446 阅读 · 0 评论 -
一文带你读懂分库分表,分片,Sharding的许多概念
一文带你读懂分库分表,分片,Sharding的许多概念原创 2024-09-28 00:27:28 · 350 阅读 · 0 评论 -
ORM Bee 2.4.0.7支持LocalDateTime,支持TO_DATE()
13.MoreTable添加方法List selectString(T entity, Condition condition)5.自定义sql(PreparedSql)增加关联表名的方法,让自定义sql中,方法没带实体T的,也能纳入缓存管理。8.MapSql(MapSuid)支持使用Condition实现更加复杂的where条件,updateSet设值。MapSql增加方法: public void where(Condition condition);2.没有指定表名则不放缓存。原创 2024-07-16 22:23:00 · 1004 阅读 · 0 评论 -
Sharding 分片配置实例
Sharding 分片配置实例才两张表就那么多,是不是感觉,太复杂了!来种简单的吧.原创 2024-06-30 23:00:16 · 428 阅读 · 0 评论 -
一文搞懂数据库分片:分库分表,只分库不分表,只分表不分库...
默认是使用求余来映射,如orderid的值为10, 10%6=4,则表是orders4,再通过表来确定库是ds1(这样可以不用指定库的规则)。从日志也可以看出:ds0这个数据库里有表:orders0,orders1,orders2;参考Java ORM 工具Bee,一个简单易用又功能强大的ORM;ds1里有表:orders3,orders4,orders5;要整合一堆的工具,还不如只用一个小巧又功能强大的工具。如何通过orderid字段的值找到相应的表和库;分片键(分片字段是:orderid)原创 2024-01-02 00:42:01 · 1275 阅读 · 1 评论 -
Mongodb ORM(Bee)
是Bee提供众多ORM功能的一部分;Bee,互联网新时代的框架,同时支持(比如JavaWeb),Android和Harmony;支持分片;支持多种关系型数据库(等),还支持NoSQL的等.原创 2023-03-19 12:08:59 · 782 阅读 · 1 评论 -
Java ORM开发 更全面的应用场景
一个小框架,顶好几个大框架了。原创 2023-03-10 09:09:46 · 355 阅读 · 0 评论 -
配置多数据源的三种方式(Spring boot + Bee)
Java ORM Bee 同时支持JDBC(比如JavaWeb),Android和Harmony;支持Sharding分片;支持多种关系型数据库(MySQL,MariaDB,Oracle,H2,SQLite,PostgreSQL,SQL Server,Access等),还支持NoSQL的Cassandra,Mongodb等。原创 2023-02-25 22:46:59 · 622 阅读 · 0 评论 -
MongoDB在银行海量历史订单交易数据查询中的应用(Spring boot + Bee)
MongoDB在银行海量历史订单交易数据查询中的应用(Spring boot + Bee)近年来,随着各种便捷支付方式的普及,银行账户交易数据呈现爆炸式增长,同时数据模型也在不断变化,传统关系型数据库已难以满足这种海量的、模式灵活、高可用、高性能的数据存储和查询需求。通过对银行历史交易数据查询业务特点的分析,本文提出一种基于MongoDB数据库的银行海量历史订单交易数据查询解决方案,方案包括系统架构、数据模型、索引设计和分片键策略。实验表明,MongoDB能够实现海量的交易数据的存储和快速查询能力。原创 2023-02-25 21:55:53 · 981 阅读 · 0 评论 -
数据集成专家--Java ORM Bee
网络的发展与互联网应用的普及推动了电子商务平台的快速发展。人们开始习惯使用电子商务平台,随着用户越来越多,平台的访问速度开始下降,为了提高电子商务平台的性能,很多公司在搭建电商平台的过程中不仅使用关系型数据库,还使用非关系型数据库进行数据存储。大数据时代,需要集成多样化数据管理分析工具完成业务需求,然而不同工具的数据访问接口标准不一,需要借助适配器进行接口转换以实现数据管理分析工具协作.因此,如何快速集成不同工具成为学术界与工业界亟待解决的问题。原创 2023-02-25 16:04:21 · 243 阅读 · 0 评论 -
Sharding分库分表(目录)
1. 背景:为什么需要分库分表 2. 分库分表种类 3. 基本概念 4. 路由/映射 5. 分片流程与Sharding核心问题 6. Sharing最佳实践 7. Bee对分片的优化原创 2023-02-25 15:09:54 · 401 阅读 · 0 评论 -
ORM 源码分析,API 为什么这样设计
updateBy方法中,String whereFields(若有),可以指明用于SQL中WHERE的字段.当指定了whereFields, 没在whereFields的字段,将默认。update方法中,String updateFields参数(若有),可以指明要更新的字段,其余字段则有可能转为SQL UPDATE语句的WHERE部分(默认过。同一个实体的某个属性的值,若用于WHERE部分了,再用于UPDATE SET部分就没有意义(因为此时它们的值是一样的),但可以用Condition的。原创 2023-02-14 22:48:49 · 410 阅读 · 1 评论 -
Mongodb Sharding分片查询,带分页功能(ORM Bee)
表示有两个分片 ds0,ds1;基本表名是:orders, ds0 中有 orders0,orders1,orders2;ds1 中有 orders3,orders4,orders5;Bee 会解析得到 orders 所有表的分布情况。fullNodes: {orders={ds0=[0, 1, 2], ds1=[3, 4, 5]}}说明:根据条件,会查询到三条数据(分别在三个不同的分片),然后一页只返回 2 条记录。在 main 方法,调用以下方法即可。以下为对 Orders 实体分片的配置,简单易用。原创 2023-01-12 20:50:50 · 575 阅读 · 0 评论 -
使用 ORM 方式查询 Mongodb 里的数据,再也不用记 Mongodb 的语法(ORM Bee)
Bee是一个简单易用的ORM框架,文件小,性能好;支持Mongodb,支持 JDBC,还支持 Android 和 Harmony。Mongodb的语法可读性差,要写复杂查询,要求技术能力高;使用ORM方式查询Mongodb里的数据,再也不用记Mongodb的语法(ORM Bee)使用between and的用法, mongodb是不支持的,但使用Bee却很简单。Bee关于Mongodb的功能,还有多数据源, Sharing 分片操作。可以使用ORM方式,轻松搞定增删改查的操作。原创 2023-01-12 20:43:10 · 861 阅读 · 0 评论 -
使用ORM方式查询Mongodb里的数据,再也不用记Mongodb的语法(ORM Bee)
Mongodb的语法可读性差,要写复杂查询,要求技术能力高;使用ORM方式查询Mongodb里的数据,再也不用记Mongodb的语法(ORM Bee)使用between and的用法, mongodb是不支持的,但使用Bee却很简单。Bee关于Mongodb的功能,还有多数据源, Sharing 分片操作。以下演示了,如何查询orders集合(表)的某部分数据。可以使用ORM方式,轻松搞定增删改查的操作。即可,不需要使用Condition。Bee是一个简单易用的ORM框架,原创 2023-01-12 00:07:04 · 1113 阅读 · 0 评论 -
Mongodb Sharding分片查询,带分页功能(ORM Bee)
表示有两个分片ds0,ds1;基本表名是:orders, ds0中有orders0,orders1,orders2;fullNodes: {orders={ds0=[0, 1, 2], ds1=[3, 4, 5]}}本文手把手教你,使用ORM面向对象的方式,进行Mongodb Sharding分片查询。说明:根据条件,会查询到三条数据(分别在三个不同的分片),然后一页只返回2条记录。userid为分片键,需要设置。1、在bee.properties里添加配置。以下为对Orders实体分片的配置,简单易用。原创 2023-01-11 23:41:52 · 475 阅读 · 0 评论 -
Mongodb常用数据类型
Mongodb常用数据类型原创 2022-12-11 21:58:02 · 423 阅读 · 0 评论 -
NoSQL mongodb与标准SQL RDB概念对比
NoSQL mongodb与标准SQL RDB概念对比Mongodb常用数据类型原创 2022-12-11 21:58:11 · 155 阅读 · 0 评论 -
同时支持开发JavaWeb,手机APP(安卓,鸿蒙),大数据,关系型DB,NoSQL等--互联网时代的ORM 工具--Bee
支持多种关系型数据库(MySQL,MariaDB,Oracle,H2,SQLite,PostgreSQL,SQL Server,Access等),还支持NoSQL的Cassandra,Mongodb等。同一套Dao代码,就可以访问以上提到的多种数据库(JavaWeb的代码,也是可以用在手机app的),无需重复开发。同时支持开发JavaWeb,手机APP(安卓,鸿蒙),大数据,关系型DB,NoSQL等--互联网时代的ORM 工具--Bee。要整合一堆的工具,还不如只用一个小巧又功能强大的工具。原创 2022-12-10 09:36:01 · 1281 阅读 · 0 评论 -
Bee源码分析:Bee使用的设计模式与设计原则
Bee源码分析:Bee使用的设计模式与设计原则原创 2022-10-23 23:09:00 · 335 阅读 · 0 评论 -
分库分表 Sharding:7. Bee 对分片的优化
对一库多表的分页查询,不执行分片查询,而是通过改写 SQL,只使用一个 sql 语句查询所要的数据,再返回。最终路由到一库一表,即不会造成分片,因此 Bee 将其优化为单点操作。通过实际表的推断,找到具体的数据库,从而变为一库一表,而不是多库一库。因此,只涉及一次查询。在设计时,可以将有关系的表,尽量放在一个库中。如,主从表,使用一样的表下标。使用广播表,避免跨库查询。转载 2022-10-12 20:59:41 · 156 阅读 · 0 评论 -
分库分表 Sharding:7. Bee 对分片的优化
对一库多表的分页查询,不执行分片查询,而是通过改写 SQL,只使用一个 sql 语句查询所要的数据,再返回。最终路由到一库一表,即不会造成分片,因此 Bee 将其优化为单点操作。通过实际表的推断,找到具体的数据库,从而变为一库一表,而不是多库一库。因此,只涉及一次查询。在设计时,可以将有关系的表,尽量放在一个库中。如,主从表,使用一样的表下标。使用广播表,避免跨库查询。转载 2022-10-12 20:59:08 · 140 阅读 · 0 评论 -
分库分表 Sharding: 6. Sharing 最佳实践
默认是根据表分片键(字段)的值,来路由到相应的表,如 条件 where userid =3, 则 3%6=3, 就会路由到表 orders3。如下,基本名称为 ds 的 3 数据库,有 6 个表,表基本名称为 user。如:"ds [0,3].test [1,3,4,5]" 表示:test={ds0=[1, 3], ds3=[4, 5]}不分片的表,无需额外添加逻辑处理。转载 2022-10-12 20:58:19 · 324 阅读 · 0 评论 -
分库分表 Sharding: 5. 分片流程与 Sharding 核心问题
1) 使用实体 Javabean (+ 条件表达式 Condtion,对应 SQL 的 where 表达式) 传达操作 DB 的信息;6.4 另外,avg 要使用专门的 ShardingAvgEngine,进行改写 Sql, 合并结果,并处理结果.多库多表,只指定库 (全表);5.2 若是单库多表,且有分页,支持 union all, 不是多表查询,优化查询;6.1 改写 sql 引擎对 sql 改写 (更新具体下标), 并记录对应的 ds。4.1 改写 sql 引擎对 sql 改写,并记录对应的 ds。转载 2022-10-12 20:53:40 · 230 阅读 · 0 评论 -
分库分表 Sharding: 5. 分片流程与 Sharding 核心问题
1) 使用实体 Javabean (+ 条件表达式 Condtion,对应 SQL 的 where 表达式) 传达操作 DB 的信息;6.4 另外,avg 要使用专门的 ShardingAvgEngine,进行改写 Sql, 合并结果,并处理结果.多库多表,只指定库 (全表);5.2 若是单库多表,且有分页,支持 union all, 不是多表查询,优化查询;6.1 改写 sql 引擎对 sql 改写 (更新具体下标), 并记录对应的 ds。4.1 改写 sql 引擎对 sql 改写,并记录对应的 ds。转载 2022-10-12 20:50:00 · 181 阅读 · 0 评论 -
分库分表 Sharding: 4. 路由 / 映射:如何找到要操作的表
但在分库分表时,因没有指定分片值(分片键及其值),不知道是要查询基本表 table_name 对应的哪张表,所以会查询基本表下所有的实际表,从而引起全库全表的查询,即全域查询。根据表拆分的首要原则,就是要尽可能找到数据表中的数据在业务逻辑上的主体,并确定大部分(或核心的)数据库操作都是围绕这个主体的数据进行,然后可使用该主体对应的字段作为分片键,进行分库分表。通过观察和判断,发现,仅均匀分布每个库中的表的名称是相同的,只知道表名,无法由表名推断表所对应的库,因此不适合用来通用分片处理;转载 2022-10-12 20:48:45 · 945 阅读 · 0 评论 -
分库分表 Sharding: 3. 基本概念
也可以用不一样的后缀来表示不同的实际表,如 a,b,即 orders_a, orders_b。关联表指存在主外键关系的主表与从表,它们一般是一对多的关系,按照一定的 DB 设计原则将数据存放到两张表中。一般单表放在默认的数据库中,没有分片时,基本表即实际表,而数据源 ds 则默认路由到默认的 ds。指所有的分片数据源中都存在的表,表结构及其数据在每个数据库中均完全一致。因此关联表的分片规则应使用一样的,同一个查询语句中,主从表应该有一样的下标(后缀)。),指某一基本表所涉及的所有数据库和对应的实际表。转载 2022-10-12 20:47:35 · 139 阅读 · 0 评论 -
分库分表 Sharding: 2. 分库分表种类
在分库分表的情况下,数据是如何拆分的呢?假设 db 库的 orders 表中原来有 4000W 条数据,现在将 db 库拆分为 2 个分库 db0 和 db1,orders 表拆分为 orders0、orders1、orders2、orders3 四个分表,每个分表存储 1000W 条数据 (可能因分片的值,数量略有差距)。垂直拆分,一般是为了划分服务,不同的团队负责的服务对应的表统一到不同的库中,利于开发和维护。而拆分之后,则是按照业务将表进行归类,分布到不同的数据库中,从而将压力分散至不同的数据库。转载 2022-10-12 20:45:41 · 174 阅读 · 0 评论 -
分库分表总结2
分库分表总结21. 分片路由算法的种类?2. 正则表达式适合分库分表的分片算法吗??3.什么样的表需要进行分库分表?4. 电商系统哪些表需要作分库分表??原创 2022-02-20 23:08:46 · 169 阅读 · 0 评论 -
分库分表总结1
分库分表总结11. 什么样的SQL关键字会造成分库分表2. 什么样的where条件会造成查全表?3.什么样的sql语句会查全表?4.在对实体进行解析时考虑分库分表好,还是生成sql语句后才进行分库分表好???原创 2022-02-20 23:08:12 · 161 阅读 · 0 评论 -
mysql5.7主从模式参考
mysql5.7主从模式:https://dev.mysql.com/doc/refman/5.7/en/replication.html原创 2022-02-20 23:06:59 · 168 阅读 · 0 评论 -
Bee读写分离使用总结
Bee读写分离RW、主从模式2 读写分离RW、主从模式bee.dosql.multiDS.enable=true#支持同时使用多种类型数据库的数据源.#bee.dosql.multiDS.differentDbType=true#bee.dosql.multiDS.defalutDS=ds1#write DB just set one db.bee.dosql.multiDS.writeDB=ds1#bee.dosql.multiDS.readDB=ds2,ds3#poll:1, ran原创 2022-02-20 22:51:51 · 2517 阅读 · 0 评论 -
SQLServer分页
SQLServer支持使用 TOP + ROW_NUMBER() OVER 配合进行分页:SELECT * FROM (SELECT TOP (?) ROW_NUMBER() OVER (ORDER BY o.order_id DESC) AS rownum, * FROM t_order o) AS temp WHERE temp.rownum > ? ORDER BY temp.order_id支持 SQLServer 2012 之后的 OFFSET FETCH 的分页方式:S原创 2022-02-20 12:04:27 · 218 阅读 · 0 评论 -
熔断和限流
熔断阻断ORM(服务)和数据库的连接。 当某个服务节点超过负载后,停止该节点对数据库的访问,使数据库能够保证足够的资源为其他节点提供服务。限流面对超负荷的请求开启限流,以保护部分请求可以得以高质量的响应。...原创 2022-02-20 11:48:56 · 1107 阅读 · 0 评论 -
多租户及实现
什么是多租户多租户技术或称多重租赁技术,简称SaaS,是一种软件架构技术,是实现如何在多用户环境下(此处的多用户一般是面向企业用户)共用相同的系统或程序组件,并且可确保各用户间数据的隔离性。简单讲:在一台服务器上运行单个应用实例,它为多个租户(客户)提供服务。从定义中我们可以理解:多租户是一种架构,目的是为了让多用户环境下使用同一套程序,且保证用户间数据隔离。那么重点就很浅显易懂了,多租户的重点就是同一套程序下实现多用户数据的隔离。数据隔离方案多租户在数据存储上存在三种主要的方案,分别是:原创 2022-02-20 01:06:04 · 1509 阅读 · 0 评论 -
数据库中间件主流设计
数据库中间件主流设计1 数据库中间件的作用在未进行读写分离/分库分表的情况下,我们是直接在应用中通过数据源(c3p0、druid、dbcp2等)与数据库建立连接,进行读写操作,架构如下所示:可以看到在操作单库单表的情况下,我们是直接在应用中通过数据源(c3p0、druid、dbcp等)与数据库建立连接,进行读写操作。大部分开发人员对于访问单库的应用的架构都是很熟悉的。但是在进行读写分离/分库分表后,底层的数据库实例就会有多个,读写分离情况下一个master多个slave;分库分表的情况.原创 2022-02-20 00:55:34 · 447 阅读 · 0 评论 -
如何选择合适的分表键,路由规则及分片数
1 分表键的选择什么是分表键分表键即分库/分表字段,zebra里面叫做维度,是在水平拆分过程中用于生成拆分规则的数据表字段。Zebra 根据分表键的值将数据表水平拆分到每个物理分库中。数据表拆分的首要原则,就是要尽可能找到数据表中的数据在业务逻辑上的主体,并确定大部分(或核心的)数据库操作都是围绕这个主体的数据进行,然后可使用该主体对应的字段作为分表键,进行分库分表。业务逻辑上的主体,通常与业务的应用场景相关,下面的一些典型应用场景都有明确的业务逻辑主体,可用于分表键: 面向用户的互联原创 2022-02-20 00:47:28 · 1813 阅读 · 0 评论 -
ORM读写分离
读写分离介绍在单台mysql实例的情况下,所有的读写操作都集中在这一个实例上。当读压力太大,单台mysql实例扛不住时,此时DBA一般会将数据库配置成集群,一个master(主库),多个slave(从库),master将数据通过binlog的方式同步给slave,可以将slave节点的数据理解为master节点数据的全量备份。关于如何配置mysql主从同步,可以参考mysql官方文档:MySQL :: MySQL 5.7 Reference Manual :: 16 Replication从应用的角原创 2022-02-19 23:56:04 · 248 阅读 · 0 评论 -
分库分表种类
分库分表种类原创 2022-02-19 23:28:45 · 242 阅读 · 0 评论