如果你也听说过mycat的话,那么应该对shardingsphere也不会陌生了,所以你了解shardingsphere是用来干嘛的吗?一般实践在哪里呢?
可以用来分库分表。我们知道随着业务越来越大,单表数据超出了数据库支撑的容量,达到了数据库的瓶颈。这时可以采用分库分表来缓解的。
一般来说,处理数据库瓶颈问题的方法有以下几种:
1.换数据库(缓存);
2.Sql、索引、字段的优化;
3.读写分离实现(业务有关优化);
4.分库分表(业务);
5.分区;
分库分表方式。
垂直:通俗的说法叫做“大表拆小表”,拆分是基于关系型数据库中的“列”(字段)进行的。(字段拆分)
水平:以某个字段按照一定的规律(取模)将一个表的数据分到多个库中(内容拆分)
分库分表的常见算法有以下三种:
其一:取模(Hash),用某个字段对数据库个数取模;
其二:范围区分(range),根据时间划分;
其三:预定义(list):,提前预估定点量,每个数据库平均分多少数据。
读写分离。读写分离主要应用在读多写少的项目里面,要有主从库同步,但是可能会有主从延迟现象数据不一致的情况出现,这就要根据具体业务去想办法避免了。
对于特殊的场景我们可以设置直接查询主库的,也可以使用sharding-sphere的强制路由(sql-hint)来解决。比如说:在下单的时候订单信息insert到主库,在支付的时候去查重库的时候可能数据还没有同步过来呢,这种时候我们就可以把这种场景直接设置强制查询主库了。
那么以上就是有关shardingsphere的所有内容了,还想了解更多java架构师相关信息,记得关注本站消息哦。