基于DB的编程

现在我们大多数的开发都是基于数据库,虽然数据库为我们提供了事务机制,保证存储的数据的ACID,但是,当我们在完成一个业务操作时,涉及到对数据库的大量操作,如果把这些操作在一个事务中,肯定是安全的,但是这样的话其他的操作可能无法继续,性能获取下降。此时我们可以将事务尽可能的短,部分不涉及对后续操作有影响的我们可以采取程序控制,而不是完全借助数据库事务机制来完成。

少量使用大事务。

=====================================================================================================

多个系统使用一个DB:

  DB挂接多个系统:一些系统主要采集数据,一些系统主要查询数据(或者抓取数据到自己的系统)

  系统的DAO层就是构建SQL(按照业务构建SQL)

    left join---从小到大进行连接(大类别到小类别)

    inner join 

    case when --汇总或者查询

    where

    group by 

    order by

    case when  类似于where 二次过滤(行转列

  最后构建满足页面需求的报表格式数据(业务数据+辅助数据(动态表头等))

=====================================================================================================

批量插入:

  insert into   select *

  或者

  batch批量执行SQL语句

=====================================================================================================

数据库里面的数据:

  辅助数据(元数据):---主要就是管理数据,一般变化少

  业务数据:采集的数据 (要对这些数据进行分析)--通过外键进行组织,最后形成一张表连接关系(先后关系,也体现出业务处理产生的数据的先后顺序)

   

  编程:

    存储过程的编程:编程主要就是存储临时变量,这是就会使用变量进行存储,此时会使用临时表,待存储过程执行完毕之后,临时数据就可以删除,所以存储过程里面一般            都会存在临时表进行存储数据(创建临时表,插入临时数据到临时表,转存临时表数据到业务表,删除临时表),此时就涉及到存储过程编程的一个流程处理过程。

=====================================================================================================

为什么现在数据库都讲解集群这些技术。

下面说说自己的理解,不管是什么技术,显示世界的工作都是人工进行操作,慢慢的出现了自动化的处理过程,用计算机进行模拟现实世界的工作,这样首先就是一些硬件,比如存储设备,就是对业务数据的存储,但是随着数量的越来越多,存储容量也越来越大,但是一个毕竟多不了多少,所有出现了多个存储设备进行存储。但是怎么存储,这样又有专门的存储软件,比如数据库软件,所以他可以吧数据进行存储到存储到设备里面,但是一个数据库软件要有好多的链接的话,这样这些链接也需要占用内存的容量,所以必须使用多个数据库软件操作存储设备,这样一来并发量也就比较好,但是这样一来一个业务数据通过多个数据库实例操作分布在不从的存储设备上(为什么那?因为IO是有限制的,所以多存储来并发这些问题),这样数据库并发压力就会减少,但是如何减少,这样的话就需要进行数据库请求的负载均衡技术,数据库的压力解决的方案还有一些中间件进行解决。

原文地址:https://www.cnblogs.com/gstsyyb/p/3916016.html