数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

漫谈数据库的中庸思想


发布日期:2019年04月28日
 
漫谈数据库的中庸思想

想写一篇关于数据库的文章这个念头已在脑海里晃了一年多了之所以迟迟没有下笔主要是好多想法还不够成熟需要更多的酝酿再者很多年没有写过什么东西在文笔上也是缺乏信心掐指一算自己做数据库的设计或管理也有四五年的时间了总还是有一些心得今日拿起笔来也就一吐为快吧

早在几千年前中国古代的大思想家孔圣人就曾说不偏之谓中不易之谓庸后又有《中庸》解释说中者天下之正道庸者天下之定理到底该如何理解中庸呢

也许只有那些研究儒学的大家们才可以给出一个确切的解释在此我们姑且不去细究但将中庸的思想运用到我们的生活和工作中我们可以有自己的理解那就是适度有节之谓当变则变不当变则持之则谓因为中之万物则兴也因为和之万物则久远你看我说得是不是太大了不过也没关系既然是漫谈那就随意自然一点好了

既然万事万物都遵循中庸的道理那当然我们的数据库也就不会例外了一个有数据库参与的项目从开始的业务调研流程分析到数据的概念模型设计数据库逻辑结构设计物理结构设计项目实施数据库的管理等各个阶段无不要持有一种中庸的思想才可以保证项目的成功实施并保证系统具有强大的生命力其实不管是数据库的设计开发还是管理都是充分合理恰当的分配使用现有资源是其有效的组合构成一个系统在其运作起来时达到一种理想的效益产出而其中的充分合理恰当无不是一种度的把握和中庸思想的体现而这种度的斟酌则是为了寻找到一个又一个平衡点去适应一种简单或复杂的现实的需求这就是我们所说的而值得注意的是这个平衡点又是动态的它将随着外部环境的变化或(和)内部因素的改变而需要得到相应的调整这就是我们所说的

数据库的设计和管理的任务其实就是调和现实业务和构建系统之间的矛盾而实现一种需求所谓知己知彼百战不殆就要求我们首先对业务有一个透彻的学习调研甚至是调整因为我们讨论的是数据库中的中庸思想所以我们姑且认为在开发数据库的应用之前我们已经对业务及需求有了一个详尽的了解和全面彻底的理解

以ORACLE数据库为例其中不仅有着应对各种不同需求的对象部件或技术策略更有着成千上万的可调整的参数或配置即使现实的需求是千变万化的只要我们使用配置得当就能构造出运行良好的数据库应用系统这就象修房盖屋ORACLE为我们准备了大大小小各具用途的材料也准备了锯子锤子等各式工具而我们就是使用合适的工具把合适的材料裁成合适的形状和合适的大小使其组合起来形成一套舒适耐用又漂亮的房子而其中处处提及的合适与否则依赖于我们的经验前期的工作及对数据库的理解等等

谈到数据库的应用我们首先想到的可能就是用数据库来存放数据存放到数据库的表里而ORACLE单是表类型就有几种堆组织表也是最常用的一种表还有索引组织表索引聚簇表散列聚簇表嵌套表临时表每种表都有它特定的性质和特定的用途当用才用否则就会适得其反

当谈到数据库的性能时人们最先想到的可能就是索引而索引是不是总是可以提高性能回答是不一定有人比喻索引就象加少了不够味加多了就太鹹了事实上还远没有这么简单就是也有很多种二叉树索引位图索引函数索引每种都有其使用范围适用的应用类型适用的度超出了范围超出了度就会失去平衡失去小的平衡系统运行不畅失去大的平衡则会导致系统崩溃

讲到这里我们明白了在数据库中要掌握一种平衡并且是一种动态的平衡只所以是动态的因为时间在流逝很多数据库外在或内在的因素在改变让平衡保持静态等于失去平衡所以原本平衡的东西需要进一步调整达到一种的新的平衡

如若我们把上面的动态平衡作为一种纵向考虑其中的时间可以看做其变化因子那么我们还要做一种横向的考虑空间可以作为其变化因子那就是要注意局部的平衡与整体的平衡局部与整体不是绝对的而是相对的如数据库服务器相对与其中的内存外存CPU它是一个整体的概念但若放到一个网络环境中它则变成了一个局部概念数据库系统相对于其中的各种对象如表索引视图过程函数等它是一个整体的概念但若放在一套完整的数据库软件系统中其中可能有各种协议应用层和客户层的软件它又变成了一个局部的概念其实也可以认为一个大的系统是由很多小的系统组成的我们就是要学会用系统的观点去看问题在局部的系统中的把握平衡而又注意到局部系统之间的平衡如下图所示

再举个例子来讲在进行数据库的设计与开发是我们的设计和开发一般都运行在数据库服务器上所使用的可见资源无非就是CPU内存外存磁盘之类而在这几种资源中磁盘是相对短缺的资源因为磁盘IO是最耗时的工作除了配置磁盘阵列高速硬盘把不同类型的数据放到不同的硬盘上采取一种分而治之的策略以外我们更应该谨慎的是在开发应用时尽量减少磁盘IO有人以为增大内寸可以减少磁盘的物理IO这只是一个方面其实任何一个SQL调整专家都明白要减少SQL执行时的逻辑IO

针对不同的应用类型有些是耗CPU资源严重有些是需要大量的磁盘IO而我们就是要做到对症下药合理分配资源使之达到一种平衡这样才会有最大的效益产出

这是考虑数据库服务器本身当着我们把它放到一个网络的计算环境时我们就要考虑在数据库服务器网络应用服务器客户端等组成的一个大系统中保持资源的分配合理例如分割应用把一些逻辑运算放到数据库服务器利用它的强大的计算能力和临近数据库的数据产生的计算结果也包含了最少量的数据从而在数据传输时减少了网络压力当然采取数据库端编程的好处还不止这么多

还有就是不同资源之间是相通的负担和压力是可以流动的在数据库的设计中用空间换取时间就是一个很好的例子

总之不管是横向的还是纵向的我们都要以一种动态的观念中庸的思想去观察和解决问题

上一篇:高灵活的SQL使用

下一篇:JAVA+ACCESS编程体会