存取数据库(如何存取海量数据——数据库分表实现方案)

存取数据库(如何存取海量数据——数据库分表实现方案)

存取数据库?本栏目通过对存取数据库问题整理,来做出以下的解答希望对你有所帮助。



SpringBoot集成MyBatis的相关要点

分表的最大难点,在于确定你存取的数据在哪张表上。

解决方案在于将一个不可或缺的字段(主键)作为分表依据,我们可以通过对其进行哈希计算,再取模表的数量,即可确定数据在第几张表上了,最后再对表名进行拼接,即可确定表名。

1.domain层

我们定义了一个和数据库表字段对应的JavaBean

2.mapper层

我们定义了两个数据库访问层的接口

编写对应的SQL

3.Service层

我们定义了用户信息操作的接口与实现,主要是对mapper做了一层表名的封装,统一处理表名的相关逻辑

4.工具层

这是本文的核心,就是如何确定表在哪里。

我们定义了2个常量,分别是表名的基础名称、表数量。

我们先测试新增数据

运行完上面的单元测试,我查询数据库,可以看到该表user_info_1已有该数据了

我们再进行查询数据测试

存取数据库(如何存取海量数据——数据库分表实现方案)

运行完上面的单元测试,可以看到顺利打印出刚才新增的数据

说明分表读写是正常的。

分表很好的解决了我们数据量大存取的性能问题。

此外,分库的解决方案和分表类似,只不过多了1层确定数据是在哪个库上的逻辑,而这逻辑和确定数据在哪张表上是一样的,依旧是依赖一个业务主键进行哈希计算、取模确定的。

然而分表也有一个缺点,就是你以后的写入、查询,都需要附带一个业务主键,由它来确定库表在的具体位置,不过数据基本都有主键的,而那个主键通常就可以用来业务主键,逻辑上并没有增加多少障碍。

END,本文到此结束,如果可以帮助到大家,还望关注本站哦!

文章版权声明:除非注明,否则均为边学边练网络文章,版权归原作者所有

相关阅读