空间换时间的数据库设计

我们的系统中很常会用到SMS、Email等的发送,在我们的设计中通常会创建 一个Tb_outbox表,当产生数据时,插入到Tb_outbox 表,由定时器去读取 Tb_outbox的数据进行发送,发送完了再修改Tb_outbox的发送状态。是的,这就 是通常的做法,但是当我们的SMS、 Email的发送频率和数量足够大的时候,我 们的系统就会出现性能、表被锁等问题。那我们如何是好呢?

下面的设计的一个思想就是如标题所述:空间换时间。就个人而言,我感觉 这个描述更加贴切:对象的职责分离,把Insert、Update、Delete等分离在不同 的表中。废话不多说,下面就来看看这个设计图:

图:逻辑图

时间: 2024-08-29 11:59:27

空间换时间的数据库设计的相关文章

Redis基础知识之————空间换时间的查询案例

空间与时间 空间换时间是在数据库中经常出现的术语,简单说就是把查询需要的条件进行索引的存储,然后查询时为O(1)的时间复杂度来快速获取数据,从而达到了使用空间存储来换快速的时间响应!对于redis这个k/v存储系统来说,复杂的查询不是它所建议的,它的优势在于通过key快速定位数据,它定位数据的速度与数据多少没有直接关系,无论是1万还是1亿数据,它定位的时间复杂度都是O(1),而在实际使用中,可能不简单使用key定位数据就够了,可能还需要数据里的某个属性去定位数据,这种情况第一感觉不能用redis

空间换时间,轻松提高性能100倍

空间换时间的最常用场景就是缓存,为了提高性能可以设置不同类型的缓存.下面是我遇到的一个小问题. 问题描述 在统计股票的历史收益时,涉及到对交易日的操作,比如获取某个日期偏移一定天数后的交易日.由于交易日是比较固定的数据,在系统启动启动之初,就加载到缓存中,保存在一个ArrayList中,定义了一个方法getDate(String from, int offset)实现偏移取值.原始代码如下: public String getDateFast(String fromDate, int offse

数据库设计中的14个技巧

1. 原始单据与实体之间的关系  可以是一对一.一对多.多对多的关系.在一般情况下,它们是一对一的关系:即一张原始单据对应且只对应一个实体.在特殊情况下,它们可能是一对多或多对一的关系,即一张原始单据对应多个实体,或多张原始单据对应一个实体.这里的实体可以理解为基本表.明确这种对应关系后,对我们设计录入界面大有好处.  [例1]:一份员工履历资料,在人力资源信息系统中,就对应三个基本表:员工基本情况表.社会关系表.工作简历表.这就是"一张原始单据对应多个实体"的典型例子.  2. 主键

浅谈数据库设计技巧(下).txt

技巧|设计|数据|数据库|数据库设计 三.多用户及其权限管理的设计 开发数据库管理类的软件,不可能不考虑多用户和用户权限设置的问题.尽管目前市面上的大.中型的后台数据库系统软件都提供了多用户,以及细至某个数据库内某张表的权限设置的功能,我个人建议:一套成熟的数据库管理软件,还是应该自行设计用户管理这块功能,原因有二: 1.那些大.中型后台数据库系统软件所提供的多用户及其权限设置都是针对数据库的共有属性,并不一定能完全满足某些特例的需求: 2.不要过多的依赖后台数据库系统软件的某些特殊功能,多种大

浅谈数据库设计技巧(下)

技巧|设计|数据|数据库|数据库设计 三.多用户及其权限管理的设计 开发数据库管理类的软件,不可能不考虑多用户和用户权限设置的问题.尽管目前市面上的大.中型的后台数据库系统软件都提供了多用户,以及细至某个数据库内某张表的权限设置的功能,我个人建议:一套成熟的数据库管理软件,还是应该自行设计用户管理这块功能,原因有二: 1.那些大.中型后台数据库系统软件所提供的多用户及其权限设置都是针对数据库的共有属性,并不一定能完全满足某些特例的需求: 2.不要过多的依赖后台数据库系统软件的某些特殊功能,多种大

数据库设计技巧[转]_数据库其它

1. 原始单据与实体之间的关系 可以是一对一.一对多.多对多的关系.在一般情况下,它们是一对一的关系:即一张原始单据对应且只对应一个实体.在特殊情况下,它们可能是一对多或多对一的关系,即一张原始单证对应多个实体,或多张原始单证对应一个实体.这里的实体可以理解为基本表.明确这种对应关系后,对我们设计录入界面大有好处. [例1]:一份员工履历资料,在人力资源信息系统中,就对应三个基本表:员工基本情况表.社会关系表.工作简历表.这就是"一张原始单证对应多个实体"的典型例子. 2. 主键与外键

数据库设计精良原则

1.原始单据与实体之间的关系 可以是一对一.一对多.多对多的关系.在一般情况下,它们是一对一的关系:即一张原始单据对应且只对应一个实体.在特殊情况下,它们可能是一对多或多对一的关系,即一张原始单证对应多个实体,或多张原始单证对应一个实体.这里的实体可以理解为基本表.明确这种对应关系后,对我们设计录入界面大有好处. [例1]:一份员工履历资料,在人力资源信息系统中,就对应三个基本表:员工基本情况表.社会关系表.工作简历表.这就是"一张原始单证对应多个实体"的典型例子. 2.主键与外键 一

浅谈数据库设计技巧(下)(转)

三.多用户及其权限管理的设计 开发数据库管理类的软件,不可能不考虑多用户和用户权限设置的问题.尽管目前市面上的大.中型的后台数据库系统软件都提供了多用户,以及细至某个数据库内某张表的权限设置的功能,我个人建议:一套成熟的数据库管理软件,还是应该自行设计用户管理这块功能,原因有二: 1.那些大.中型后台数据库系统软件所提供的多用户及其权限设置都是针对数据库的共有属性,并不一定能完全满足某些特例的需求: 2.不要过多的依赖后台数据库系统软件的某些特殊功能,多种大.中型后台数据库系统软件之间并不完全兼

数据库设计中的小经验

http://www.cnblogs.com/guojingyang/archive/2008/11/26/1341406.html   1. 原始单据与实体之间的关系 可以是一对一.一对多.多对多的关系.在一般情况下,它们是一对一的关系:即一张原始单据对应且只对应一个实体.在特殊情况下,它们可能是一对多或多对一的关系,即一张原始单证对应多个实体,或多张原始单证对应一个实体.这里的实体可以理解为基本表.明确这种对应关系后,对我们设计录入界面大有好处.[例1]:一份员工履历资料,在人力资源信息系统