2011网页开发热门技术–HandlerSocket

谈到网页的开发技术,许多人的印象中不外乎便是 PHP、Java 或是.Net 等等,而比较新兴的技术则可能是 Ruby 或是 Python,在本系列文章中,我将介绍在近日中热门的网路技术,让各位读者能够掌握最新趋势。

NoSQL v.s. SQL 资料库

既上次谈了 Node.js 这个网站的后端技术 后,我们这次要看的是网站的另外一个要角:资料库系统。

讲到近年来的资料库系统发展,我想浮现大家眼前的不外乎便是 Google BigTable 论文 后所带起的各种新一代 NoSQL 资料库,包含 HBase、CouchDB、Cassandra 等都是这一波的热门选择。

所谓的 NoSQL,指的便是相对于一般传统 SQL 资料库像是 MySQL、PostgresSQL 或者是 MS SQL 等关联式的资料库。

NoSQL 资料库的强项是高效能、分散式的架构、并且打破传统的 schema 栏位架构限制等优点,目前已经应用在很多实际运作的热门网站,包含很多社群网路或者是社交游戏等需要大量资料处理的网站。

SQL still works

但在大家一昧追求 NoSQL 资料库的同时,其实传统 SQL 资料库仍然有其优点在,像是其资料的一致性、隔离性等仍然是 SQL 系统较为可靠。

即便像是 Facebook 这样大量採用 NoSQL 解决方案的公司,其会员资料的部份也仍然是使用 MySQL 作为储存方式。

况且根据许多的经验分享,一般的网站若是在没有超过千万使用者前,实际上是可以完全不用考虑 NoSQL 的。换而言之,SQL 系统并非效能不足,而是需要进行良好的优化以及设计。

HandlerSocket

HandlerSocket 是由日本游戏公司 DeNA 所释出的开放原始码专案,为一个 MySQL 的外挂,企图解决的便是上述的效能问题。

根据作者部落格的数据图表,大家可以很明显的发现 HandlerSocket 的表现相当突出:

                          approx qps     server CPU util MySQL via SQL                105,000      %us 60%  %sy 28% memcached                    420,000      %us  8%  %sy 88% MySQL via HandlerSocket      750,000      %us 45%  %sy 53%

实际上 HandlerSocket 的运作原理也相当的好理解,主要便是透过原生的 API 介面来绕过 SQL 查询中最慢的步骤,也就是 SQL 语法的解析。曾经使用过 SQL 查询的开发者变知道,为了查询资料库里面的内容,我们并需撰写 SQL 述句来进行查询,而 SQL 语句的字串必须经过解析,这过程是相当花费时间的,且也有可能解析失败。

除了绕过 SQL 语法的解析之外,在后续的优化上,HandlerSocket 会保持资料表的开启,并不会在每次的查询都开启、关闭资料表,因此相较一般的 SQL 操作来得快上不少。

2011网页开发热门技术–HandlerSocket
整体而言可以参考下面的流程图:

作者的 部落格文章中也有更多的技术细节 可以参考。

结论

相对于现正流行的 NoSQL 技术,我更加看好 HandlerSocket 为主的 MySQL 优化技巧,毕竟 NoSQL 目前仍然在快速发展的阶段,对于开发资源较为有限的创业团队而言,或许选择 MySQL 为主的技术仍然会是比较好的选择。

读者们有任何经验想分享?欢迎来信或者是留言与我们交流!