« 上一篇下一篇 »

可扩展设计的数据库之外延伸

数据库主要是为应用程序提供数据存取相应的服务提高数据库的扩展性,也是为了更好地提供数据存取服务能力,同时包括可靠性、高效性及易用性。所以,最根本的目的就是让数据层的存储服务能力得到更好的扩展性,让投入尽可能与产出成正比。

    我们都明白,数据本身肯定都需要有一个可以持久化地方,但是否有必要让所有冗余数据都进行持久化呢?我想大家肯定都会觉得没有这个必要,只要保证有至少两份冗余的数据进行持久化就足够了。而另外一些为了提高扩展性而产生的冗余数据,完全可以通过一些特别的技术来替代需要持久化的数据库,如内存Cache、Search,以及磁盘文件Cache和Search,等等。

    寻求数据库软件之外的Cache和Search来解决数据的扩展性,已经成为目前各个大型互联网站点都在积极尝试的一个非常重要的架构升级。因为这不仅仅能更大程度地在整个应用系统提升数据处理层本身的扩展性,而且还能更大限度地提升性能。

    对于这种架构方式,目前已经比较成熟的解决方案主要有基于对象的分布式内存Cache解决方案Memcached,高性能嵌入式数据库编程库Berkeley DB,功能强大的全文搜索引擎Lucene,等等。

    当然,在使用成熟的第三方产品同时,自行实现一些特定应用场景下的Cache和Search,也是一件值得尝试的事情,而且对于公司的技术积累来说也很有意义。当然,决定自行开发实现之前进行全面的评估是绝对必要的,不仅仅包括自身技术实力,对应用的商业需求也需要有一定的评估。

    其实,不论是使用现成的第三方成熟解决方案还是自主研发,都需要在开发资源方面有一定投入。首先要想和现有MySQL数据库更好地结合,这就有多种思路存在。可以在数据库端实现和Cache或Search的数据通信(数据更新),也可以在应用程序端直接实现Cache和Search的数据更新。数据库和Cache与Search可以处于整体架构中不同的层次,也可以并存于相同的层次。

« 上一篇下一篇 »