(原)未来软件是什么样子?-数据库篇

    数据库技术是众多应用管理软件的核心部分,有着举足轻重的地位。

 

    如果数据库及其相关技术,能够强大到每天处理百万亿级别的数据,那么相信许多应用软件的性能瓶颈马上可以迎刃而解了。

    数据库技术的一个关键是要解决与存储介质之间的Read/Write问题。当前的硬件技术I/O性能问题,就是限制数据库性能的关键因素。在硬件技术目前无法大幅度提高的情况下,在满足相同需求的情况下,减少数据的I/O次数成为了判断数据库算法的优劣的标准。

    既然无法大规模的向纵深发展的情况下,只能“曲线救国”,向横向发展。于是众多的数据库分布技术,同步技术,集群技术风风火火的发展起来了。扩展性是其优势,而数据统一性是其代价。

 

    这里有以下不成熟的观点和大家交流,请大家指正。

    观点1:数据库和开发环境的统一

    当前每次数据库有变更的时候,可能相关的存储过程,视图等也需要变更,并且需要整理数据库升级脚本,变更对应程序并重新编译。这样造成了维护的成本增加。

    为什么我们不能在程序源代码中直接定义数据库的结构(表,视图,存储过程等)呢?把数据库和编译器进一步结合呢?直接在源代码中维护数据库结构数据,编译时,如果不符合数据库规则,就直接报错提示。编译器根据不同的数据库,自动的生成对应的数据库变更脚本。甚至还可以结合的更加紧密,数据库文件本身就是开发环境的产物,数据库管理自身仅仅是整个开发环境的一部分。这样的话,甚至不需要另外的数据字典,源代码中定义的数据库结构文件就能实现这一功能。

    现在微软的VS2008和SQL2008更加紧密的结合,或许就有那么点意思。LINQ更是向这一方向迈出了一步。

    当然,这样的结构,或许安全性会存在一定问题。

 

    观点2:把整个数据库放在内存里

    既然内存(L3级Cache)比硬盘(L4级Cache)快,那我们为什么不能将整个数据库放在内存里面呢?

目前的64位的Win2003+已经支持到TB级别的内存量,TB级相信对一般的数据库应用应该已经属于海量了,那我们为什么还要把数据库存储在相对慢许多的硬盘上面呢?即使数据库有几十G,甚至几百G,放在内存中不是就可以马上提升性能了吗?

    现在CPU的多核技术也在迅速发展,相信不久的将来8核,16核的CPU也会出现。如果内存数据库中有了变更,分出一个CPU的性能来处理内存数据库和硬盘数据库的同步问题,进而解决了数据库的常态保存问题。

    当然,这样处理的话,内存数据库的启动(硬盘数据读取到--&gt内存)会花费更多的时间,但内存数据库的查询和写入性能会得到数量级的提升。好比我们为什么要使用索引?它导致了新增和更新记录时速度损失,但它极大的提升了查询性能。

 

    说错的地方,请大家批评指正。

相关文章:

未来软件是什么样子?

未来软件是什么样子?-SIF期货

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/15027534/viewspace-462544/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/15027534/viewspace-462544/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值