看来搞咱们IT的就围绕着3样东西打转,存储,计算,传输。冯氏计算机体系多年来没有人突破过。 其实一直没搞懂数据结构和算法究竟怎样的才算是好的。今天突然有点想法,能够将硬件条件和产品需求完美结合的数据结构和算法才是好的。
所以数据结构和算法不是凭空想出来的,一定是从硬件和产品需求角度来考虑的。从硬件上现在有两个基本方向。
第一个是基于单机中的硬盘,CPU,内存来进行算法优化,比如硬盘的寻道速度远远低于顺序访问速度,这点催生了列式数据库的设计。CPU通过中断机制来实现伪多线程,在单核CPU上多线程的意义并不大,只是为了功能方面的考虑,而多核CPU则推动了多线程程序设计的发展。内存更是如此,依照五分钟原则memcached这种数据库今后大有用武之地
第二个则是基于多机并行计算。多机环境中的数据传输,并行计算,分布式存储就是需要解决的核心3个问题。并行计算中MapReduce可以说是非常好的算法思想,个人感觉是单机上多线程算法的分布式版本,它有一个前提就是这多个线程是绝对并行的,之间没有依赖关系。分而治之,在经历了CPU中断->多核->多机的硬件演化后被提到了更高的位置。再说分布式存储。GFS的设计其实有个要点:1、数据越大越好,先将数据通过inputfarmat打成超大文件,再拆分成较大文件(一般为64M),在GFS里64M即为存储单位,类似于我们传统数据中的字节。进一步提高数据顺序访问的可能。2、多机冗余机制即利于数据安全,又利于并发读取。数据传输方面,我就比较欣赏cassandra,p2p的方式来管理分布式数据,具体还没太多研究。
如果能够结合单机和多机2个方向的考虑设计一种超强大的数据库是多么不可想象的一件事,今后的发展方向应该就是这种了。
今天就写这么多吧,感谢颜开同学的《NoSql数据库笔谈》,受到了很多启发。今后再接再励,加油!!!