架构师学习--数据库分库

学习本文内容,需要先去自行阅读架构师学习–数据库框架的基本搭建(增删改查)这篇文章,因为代码都是基于之前的基础上进行开发的。开始之前,我提出几个问题:什么是分库?为什么要分库?如何分库?

一、什么是分库

所谓的分库就是创建多个db数据库,比如项目中可以有qb.db。当然也可以有1.db、2.db等,根据自己的需求而定,一般小中型的项目是很少用到分库的,比如像淘宝、QQ等这样的大型项目,不可避免的会使用到分库。

二、为什么要分库

举个简单的例子,比如滴滴,一般分为乘客和司机两种用户,两者都会有用户名、用户id等字段信息,但是司机端可能会有自己独有的属性,比如车牌号、驾驶证等信息,这样如果把这些信息都放在同一张数据库中会导致数据量的庞大,并且维护成本较高。如果将这些信息单独的放到另外一个数据库,不但能够解决数据量的问题,而且能够达到数据的隔离,将自己私有的信息和共有字段信息隔离。如果我们需要司机的车牌号,驾驶证信息,只需要查询对应的数据库即可。总结起来优点如下:
1、解决数据量庞大的问题
2、数据隔离

三、如何分库

1、创建分库数据库

这里根据不同的用户id,创建不同的数据库,比如s_1.db,s_2.db。
在这里插入图片描述
这里的StudentDao继承自BaseDao,之前有说过,BaseDao提供数据库的基础增删改查功能,扩展功能可以在子类中实现,代码如下:
在这里插入图片描述

2、创建分库数据库表

创建SqliteSubDaoFactory继承自SqliteDaoFactory。重写getSqliteDao()方法,主要代码如下:
在这里插入图片描述
执行BaseDao的init()方法就会创建一张数据库表。具体的实现在上一节内容有讲到。

3、创建司机的私有表类Driver

在这里插入图片描述
类中提供司机的两个私有信息字段。

4、使用

在activity中直接如下使用即可:
在这里插入图片描述
我在新的数据库中保存了一条新的数据。结果截图如下:
在这里插入图片描述
其中qb.db存放了用户的id和用户名等信息;s_2.db和s_4.db就是刚才我们生成的司机私有数据库。然后我们再看一下库里面保存的数据,截图如下:
在这里插入图片描述
以上就完成了数据库的分库框架设计。

完整代码:

代码传送门

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值