此文首发在 InfoQ 中文站。作者:明灵(dragon) , Fenng .

在网站开发中,究竟是在数据库(DB)中排序好,还是在应用程序中排序更优,这一直是个很有趣的话题。DBANotes.net博主,在数据库方面比较有研究的冯大辉就这一问题日前和读者明灵(Dragon)做了探讨,本文是关于该问题的总结。

问:请列出在PHP中执行排序要优于在MySQL中排序的原因?

答:通常来说,执行效率需要考虑CPU、内存和硬盘等的负载情况,假定MySQL服务器和PHP的服务器都已经按照最适合的方式来配置,那么系统的可伸缩性(Scalability)和用户感知性能(User-perceived Performance)是我们追求的主要目标。在实际运行中,MySQL中数据往往以HASHtables、BTREE等方式存贮于内存,操作速度很快;同时INDEX已经进行了一些预排序;很多应用中,MySQL排序是首选。而在应用层(PHP)中排序,也必然在内存中进行,与MySQL相比具有如下优势:

考虑整个网站的可伸缩性和整体性能,在应用层(PHP)中排序明显会降低数据库的负载,从而提升整个网站的扩展能力。而数据库的排序,实际上成本是非常高的,消耗内存、CPU,如果并发的排序很多,DB很容易到瓶颈。
如果在应用层(PHP)和MySQL之间还存在数据中间层,合理利用的话,PHP会有更好的收益。
PHP在内存中的数据结构专门针对具体应用来设计,比数据库更为简洁、高效;
PHP不用考虑数据灾难恢复问题,可以减少这部分的操作损耗;
PHP不存在表的锁定问题;
MySQL中排序,请求和结果返回还需要通过网络连接来进行,而PHP中排序之后就可以直接返回了,减少了网络IO。
至于执行速度,差异应该不会很大,除非应用设计有问题,造成大量不必要的网络IO。另外,应用层要注意PHP的Cache设置,如果超出会报告内部错误;此时要根据应用做好评估,或者调整Cache。具体选择,将取决于具体的应用。

问:请提供一些必须在MySQL中排序的实例?

答:在PHP中执行排序更优的情况举例如下:

数据源不在MySQL中,存在硬盘、内存或者来自网络的请求等;
数据存在MySQL中,量不大,而且没有相应的索引,此时把数据取出来用PHP排序更快;
数据源来自于多个MySQL服务器,此时从多个MySQL中取出数据,然后在PHP中排序更快;
除了MySQL之外,存在其他数据源,比如硬盘、内存或者来自网络的请求等,此时不适合把这些数据存入MySQL后再排序。
必须在MySQL中排序的实例如下:

MySQL中已经存在这个排序的索引;
MySQL中数据量较大,而结果集需要其中很小的一个子集,比如1000000行数据,取TOP10;
对于一次排序、多次调用的情况,比如统计聚合的情形,可以提供给不同的服务使用,那么在MySQL中排序是首选的。另外,对于数据深度挖掘,通常做法是在应用层做完排序等复杂操作,把结果存入MySQL即可,便于多次使用。
不论数据源来自哪里,当数据量大到一定的规模后,由于占用内存/Cache的关系,不再适合PHP中排序了;此时把数据复制、导入或者存在MySQL,并用INDEX优化,是优于PHP的。不过,用Java,甚至C++来处理这类操作会更好。
从网站整体考虑,就必须加入人力和成本的考虑。假如网站规模和负载较小,而人力有限(人数和能力都可能有限),此时在应用层(PHP)做排序要做不少开发和调试工作,耗费时间,得不偿失;不如在DB中处理,简单快速。对于大规模的网站,电力、服务器的费用很高,在系统架构上精打细算,可以节约大量的费用,是公司持续发展之必要;此时如果能在应用层(PHP)进行排序并满足业务需求,尽量在应用层进行。

自从十年前谷歌创立以来,互联网已经给全世界人们的生活带来了巨大的影响。它已经改变了政治、娱乐、文化、商业、医疗、环境等诸多方面以及几乎每个你所能想到的领域。这促使我们思考:未来的十年内将发生什么?这种惊人的技术将如何演进?我们将如何适应互联网,而且(更重要的是)互联网将如何适应我们?怀着这些问题,我们询问了十个资深的专家,并将在9月(在我们创立10周年的月份)发表他们的回答。就像计算机科学专家Alan Kay的名言所说的那样,最好的预测未来的方法就是去创造它,因此我们每天都将尽我们的最大努力,逐步实现专家们的预言。

全世界目前有大约32手机用户,而且在未来几年内,这个数字还将至少增加10亿。如今,手机已经变得比汽车(全世界登记的汽车大约为8亿辆)和信用卡(只有14亿张)还要普遍。在固定电话的普及上,我们用了100年的时间才使80%以上的国家用上固定电话,而手机做到这一点只用了16年。越来越少的青少年佩戴手表,因为他们现在都用手机来看时间。因此我们现在可以大胆地宣称手机是有史以来最普及的消费者产品。

不过,你有没有考虑过这些手机的性能到底有多强?你放在口袋、背包或者手提袋里面的手机的性能很可能要比8年前或9年前放在桌面上的个人电脑还要强10倍(假设你有一台个人电脑;大部分的手机用户没有个人电脑)。手机所拥有的一系列传感器几乎堪比火星探测器。一个仅具备基本功能的手机就拥有:时钟,电源传感器(显示电池用量),温度计(因为电池在低温下的充电效果不好),测光表(决定是否开启屏幕背光灯);而更高级的手机还拥有:位置传感器,加速计(监测运动方向的矢量与速度),甚至还可能有指南针。最重要的是,所有这些传感器始终都是互相连接的。

我们来看看未来十年内的趋势。你可能将一周七天,一天24小时都携带着手机(中国移动最近的一项研究显示,大部分手机用户在睡觉的时候都把手机放在距离一米以内的地方),而这些手机的功能非常强大,始终保持连接,并充满各种传感器。而且更酷的是,你身边的每个人都是如此。那么,除了你现在已经利用的功能外,你还将利用这些手机来做什么呢?下面是几种可能:

智能提醒

你的手机将时刻洞悉你目前的状况,并在需要的时候提醒你。现在就已经是如此了——eBay可以在你投标失败的时候给你发提示信息,而提示服务(比如谷歌新闻)可以为你提供新闻、运动、或股票方面的最新信息。未来,这些应用程序将更加智能化,更加迎合你的个人偏好(将被存储在网络云里),并在你需要的时候才发送所需的信息。一个非常有用的应用情景:你的手机知道你正在前往市中心用晚饭,它将提醒你交通状况以及哪里停车最方便。


增强现实(Augmented reality)

你的手机会利用它的传感器来了解你状况,并为你提供有用的信息。例如,你站在橱窗前,心里想知道里面的小狗价格。你的手机马上就会通过GPS和指南针了解到你正在看这只小狗。在你甚至还没问这个问题之前,手机就会告诉你答案了。此外,还会告诉你它的食物和最佳训练方式。

众包(Crowd Sourcing)主流化

你的手机就是你的万能传声筒。通过手机,你可以发布图片、电子邮件、文本、Twitter(一种多对多互联网短信群发平台)信息以及博客文章等。如果所有人都这么做,那么世界上每个角落的人都可以实时分享他们的经历。大量的信息内容以一种全新且有趣的方式被归档、分类并重新发布给其他人。你可以在网上询问在附近最好玩的地方,并在手机上浏览其他人的评价和他们所上传的图片。如果你很有兴趣,那么你的手机就会告诉你如何前往那里。

(腾讯科技注:众包的特征是由非专业开发人员的普通群体配合进行开发)

无处不在的传感器

你的手机能够获取周围情况的大量信息。如果你获取该信息,并将它和云里面的所有其他手机的信息结合起来,那么你就会看到不可思议的世界动态实景。气象信息的更新将不再根据数百个传感器,而是根据数亿个传感器。交通信息的报道将不再仅仅根据直升飞机的观察和道路传感器,而是根据交通阻塞区域的手机(以及人)的密度、速度和方向来作出判断。

个人发展的工具

你的手机不仅能够方便你的生活,它还可以为你带来收入。对于世界上的许多人来说,这已经成为现实:在印度南部,渔民们通过短信来发现最好的市场,以便出售他们今日的产品;甘蔗农场主们可以收到建议性的短信来决定作物灌溉量;在撒哈拉以南的非洲,拥有手机的企业家变成了手机运营商,为他们所在的城镇提供通信服务。未来,随着手机成为经济发展的重要推动力,这些创新只会不断增加。

与时俱进的设备

就像现在的互联网一样,你的手机将更加开放,这样开发人员就可以更加方便地开发或改进应用程序和内容。你可以将你所关心的应用程序自动地安装在你的手机上。比如说,你的手机上有个软件,该软件可以改善电源管理(从而增加电池寿命)。如果有一个开发人员对该软件进行了改进。那么你不用动一根手指头,这个更新就会自动安装在你的手机上。随着时间推移,你的手机将越来越好。

信任与验证提高软件安全性

你的手机将提供工具和信息来帮助你决定下载哪些内容,浏览哪些信息,共享哪些数据。在一个互联的世界里,信任是至关重要的,而你的手机将帮助你控制好你的信息。你可以选择不共享任何信息(缺省模式),或者只同特定人员——你所信任的朋友圈子和家庭成员——共享特定信息。你将根据你从服务提供商和软件提供者那里所得到的信息以及社区的集体评级来进行做出这些决定。你的手机会像忠心耿耿的仆人一样:它知道你的许多信息,但是如果没有你的同意,它将不会透露任何信息。

  导语:国外媒体今天发表分析文章称,目前点评“2008年10佳改版网站”也许为时尚早,但2008年毕竟已经过去了9个多月,周四又同时有Twitter和FriendFeed两家网站改版,因此当前也算是评选“2008年10佳改版网站”恰当时机。而且,入围网站也具有较强的代表性。

  到目前为止,入围“2008年10佳改版网站”的分别为Twitter、Facebook、FriendFeed、雅虎、MySpace、Digg、MobileMe、LinkedIn、Delicious和Last.fm。

  此外,CNET、Engadget、《华尔街日报》网络版、TechCrunch、CenterNetworks、Mashable、Bebo、Revision3和coCommen等网站也进行了改变,用户反馈也不错。以下为2008年10佳改版网站,排名不分先后:

  1. Twitter

  2008年10佳改版网站(组图)

  Twitter的改版并不是很激进,与原版页面出入不大。主要变化在于两方面:一是简化界面,二是减少网页所加载资源。最显著的变化是标签上的变化,新版页面把顶部的标签转移到右部。这有利于用户访问,更重要的是,这是出于投资需要。将来,Twitter准备添加更多标签,而顶部空间已经明显不足。

  2. Facebook

  2008年10佳改版网站(组图)

  Facebook新页面把聊天与应用开始工具栏相结合,更重要的是,添加内容,对内容进行分类变得更容易。新页面还充分考虑到了宽屏趋势,充分利用两侧多出的空间。对于Facebook而言,此次改版是最激进的一次,因此也遭到了部分用户的反对。

  3. FriendFeed

  2008年10佳改版网站(组图)

  新版FriendFeed页面的最大变化是将导航标签从顶部移到左侧,充分利用了宽屏优势。更重要的是,在增加新功能的同时,页面内容没有丝毫挤压感。

  4. 雅虎

  2008年10佳改版网站(组图)

  雅虎此次大胆改版削减了一些冗余内容,添加了一些类似于My Yahoo服务的实用功能。更重要的是,用户可以对很多内容进行定制,甚至面向第三方互联网应用开放。例如,在屏幕右侧添加Netflix等电影网站链接。

  5. MySpace

  2008年10佳改版网站(组图)

  MySpace于6月中旬进行了改版,改版后的新页面更加整洁,且突出了用户创作内容。更重要的是,新页面增加了新的搜索、编辑器和播放器等实用工具。

  6. Digg / Digg mobile

  2008年10佳改版网站(组图)(2)

  在保留核心服务的基础上,Digg和Digg移动版对原版页面进行了改善。新版页面增加了推荐引擎,确保用户以最快速度找到感兴趣的内容。

  7. MobileMe (原.Mac)

  2008年10佳改版网站(组图)(2)

  新的MobileMe Web电子邮件服务更加现代化,陈旧的.Mac平台被一些基于云计算的Web应用所取代,并与多种设备同步。其中,最大的变化之一是增加了日程安排、文件和联系人信息管理工具等。

  8. LinkedIn

  2008年10佳改版网站(组图)(2)

  LinkedIn于今年2月改版,改版幅度不大,但增加了一些实用服务。与旧版Facebook页面有些相似,LinkedIn把工具条和标签都转移到了左侧。

  9. Delicious

  2008年10佳改版网站(组图)(2)

  Delicious于7月进行大幅改版,新版页面与旧版完全不同,几乎每一处都经过重新设计,标签管理功能得到极大强化。此外,Delicious的域名也从del.icio.us直接改为delicious.com,在很大程度上方便了用户访问。

  10. Last.fm

  2008年10佳改版网站(组图)(2)

  7月中旬,音乐社交网站Last.fm进行了彻底改版,无需同步和共享当前音乐数据库,只需提供乐队名称,用户即可获得音乐家推荐。

老婆送了psp后很少用iphone玩游戏了,毕竟小i和小p玩游戏还是有差距的,呵呵,等待了数日(ea原先说的是9月7号提供,不过之前提供的是pc版的),终于今天早上,起床下载到了ea创意大作《孢子》,哈哈

下面是来自ea官方的一些资料

《孢子》来自Will Wright,《模拟人生》系列的创始人的想象力,这段史诗式的旅程将带你从生命的起源和发展开始,经历文明与技术的发展,最终踏上进入遥远宇宙空间之路。

点击在新窗口中浏览此图片

特色:
完全控制你的生物的命运,引导它度过六个进化阶段:

海洋阶段: 与其他生物进行竞争,吸收他们以调整你的生物形态。这是在显微镜下争夺生存权的时期。

生物阶段: 冒险登上陆地并教会你的生物如何在你的安全天堂以外的世界中生存发展。草食还是肉食动物?群居或是独居?决定在于你。

部落阶段: 你将不再继续控制一个单独生物个体,而是控制一个由你创造的生物组成的完整部落。你可以交给他们工具并指导他们的互动,逐步让他们发展进化。

城市阶段: 将你的生物种族带入黄金时代,为他们发展技术,进行建设,完成他们的城市。

文明阶段: 当你的城市建立后,你的生物将开始寻找机会与其他文明接触。你可以让他们以战争或是和平的方式这样做,最终目标是让你的种族统治这个星球。

太空阶段: 是时候迁移到你的星系中的其他天体了。进行快速联系、殖民或是整体迁居,然后进一步在辽阔的宇宙中寻找其他恒星系。新的“任务”模式将伴随你在宇宙中扩张发展。
以下是整理的Google Chrome,键盘快捷键大全,Chrome为网页浏览设置了许多快捷键,许多复杂的鼠标操作可以用键盘轻松完成.
合理地使用快捷键可以让你的操作事半功倍.


  窗口和标签页快捷方式 Ctrl+N 打开新窗口
按住 Ctrl‎ 键,然后点击链接 在新标签页中打开链接
按住 Shift 键,然后点击链接 在新窗口中打开链接
Alt+F4 关闭当前窗口
Ctrl+T 打开新标签页
Ctrl+Shift+T 重新打开上次关闭的标签页。 谷歌浏览器可记住您关闭的最后 10 个标签页。
将链接拖动到标签页内 在指定标签页中打开链接
将链接拖动到两个标签页之间 在新标签页横条上的指定位置打开链接
Ctrl+1 到 Ctrl+8 切换到指定位置编号的标签页。 您按下的数字代表标签页横条上的位置。
Ctrl+9 切换到最后一个标签页
Ctrl+Tab 切换到下一个标签页
Ctrl+Shift+Tab 切换到上一个标签页
Ctrl+W 或 Ctrl+F4 关闭当前标签页或弹出式窗口
地址栏快捷方式在地址栏,进行下列操作之一: 键入搜索字词 使用默认搜索引擎进行搜索
键入网址中"www."和 ".com"之间的部分,然后按 Ctrl+Enter 为您在地址栏中输入的内容添加"www."和".com",然后打开网址
键入搜索引擎关键字或网址,按Tab 键,然后键入搜索字词 使用与关键字或网址相关联的搜索引擎进行搜索 如果谷歌浏览器可以识别您要使用的搜索引擎,将会提示您按 Tab 键。
F6 或 Ctrl+L 突出显示网址区域中的内容
输入网址,然后按 Alt+Enter 在新标签页中打开网址

打开谷歌浏览器功能的快捷方式 Ctrl+B 打开和关闭书签栏
Ctrl+H 查看历史记录页
Ctrl+J 查看下载页
Shift+Escape 查看任务管理器
Shift+Alt+T 将键盘焦点设置在谷歌浏览器工具栏上。 使用键盘上的向右和向左箭头,导航至工具栏的不同区域。

网页快捷方式 Ctrl+P 打印当前页
F5 重新加载当前页
Ctrl+F5 或 Shift+F5 重新加载当前页,但忽略缓存内容
按住 Alt 键,然后点击链接 下载链接
Ctrl+F 打开"在网页上查找"框
Ctrl+G 或 F3 查找与您在"在网页上查找"框中输入的内容相匹配的下一个匹配项
Ctrl+Shift+G 或 Shift+F3 查找与您在"在网页上查找"框中输入的内容相匹配的上一个匹配项
Ctrl+U 查看源代码
将链接拖动到书签栏 将链接加入书签
Ctrl+D 将当前网页加入书签
Ctrl++ 放大文字
Ctrl+- 缩小文字
Ctrl+0 还原到正常文字大小

文字快捷方式 突出显示内容,然后按 Ctrl+C 将内容复制到剪贴板
将光标置于文字字段中,然后按 Ctrl+V 从剪贴板粘贴当前内容
将光标置于文字字段中,然后按 Ctrl+Shift+V 从剪贴板粘贴当前内容的纯文字部分
突出显示文字字段的内容,然后按 Ctrl+X 删除内容