数据库就是数据库,不要因为某个时候被用于网站应用就叫他网站数据库。这里所谓的数据库应该是数据库管理系统,如最大牌的Oracle,社区热门的MySQL,开源中较高级的PostgreSQL,微软家的SQLServer等。
一、数据库(如oracle、mysql)及编程语言(php、python、perl、lisp)的区别
数据库就是数据库,不要因为某个时候被用于网站应用就叫他网站数据库。
这里所谓的数据库应该是数据库管理系统,如最大牌的Oracle,社区热门的MySQL,开源中较高级的PostgreSQL,微软家的SQLServer等。
他们提供开发者类似的链接数据库的方式,提供基于一定标准但又各有差异的查询语言,最终目标是提供开发者方便的查询、插入、删除、修改数据的能力。而不同数据库管理系统性能上也有差异,在不同数据的量级、访问量级可能各有优势,具体比较的参数应该没有必要给出了,业界好像也没有什么统一的benchmark。我介绍一下在哪些情况下会选择谁就是了。
如果只是个人想搞点小应用,小网站,搭个博客什么的,推荐MySQL,因为它免费,稳定,在大多数情况下性能优越,来自开源世界,例子丰富。当然某些大型网站也用他,比如Twitter,不知道知乎是不是也用……如果是商业应用,非得跑在Windows Server上,又对微软家的东西有执念,可以用用SQLServer,但是其实不推荐的。如果有钱没地方用了,应用也是非常重量级的,可能需要更丰富的功能、强大的处理和相应性能、数据仓库、挖掘服务、售后各种服务,那就Oracle吧!绝对用到你爽……学习起来也挺不简单的,把他拿下,去公司搞数据库应该轻松得很了。
其实真正软件开发上来讲,应该避免直接去面对数据库,而应该用一些中间件,或者至少是一些ORM工具之类的帮助完成这个工作,并进一步的采用配置管理,使得实际应用得以与具体数据库系统、版本去耦合,如果需要切换其他数据库只要通过配置管理调整而不需要重新写代码。
各种编程语言不同,语法上就不同,适用的范围不一样,性能不一样,开发效率不一样,而且也有个人喜好倾向之类的,而且每种语言背后还存在着其自有的编程思想,难以一一比较,如果感兴趣,可以从一个语言开始深入了解,然后逐步扩展到其他语言上去,再进行比较。
延伸阅读:
二、为什么要持久化连接
这和 web 服务器的工作方式有关。web 服务器可以通过三种方法来利用 PHP 生成 web 页面。
名列前茅种方法是将 PHP 自以为 CGI“包装器”用作一个单独运行的语言解释器(CGI Wapper)。当以这种方法运行时,PHP 会为向 web 服务器的每个 PHP 页面请求创建并销毁 PHP 解释器的时候实例。由于其会随每个请求的结束而销毁,因此其获取的任何资源(例如指向 SQL 数据库服务器的链接)都会在销毁时关闭。在这种情况下,不会从使用持久连接中获得任何好处——因为根本不会持久。
第二,也是最流行的方法是把 PHP 用作多进程 web 服务器的一个模块,这种方法目前只适用于 Apache。多进程的服务器通常有一个父进程和一组子进程协调运行,子进程负责提供网页的工作。每当接收达到客户端提出请求时,该请求会传递给尚未给其它客户端提供服务的某个子进程。这也就是说当相同的客户端第二次向服务端发出请求时,它将有可能由与名列前茅次不同的某个子进程提供服务。在开启了一个持久连接后,所有请求 SQL 服务的后继页面都能够重用与 SQL 服务器建立的相同连接。
最后一种方法是将 PHP 用作多线程 web 服务器的插件。目前 PHP 支持 WSAPI 和 NSAPI(在 Windows 上),允许 PHP 作为 Netscape FastTrack(iPlanet)、Microsoft 的 Internet Information Server (IIS) 和 O’Reilly 的 WebSite Pro 等多线程服务器的插件使用。该行为与前面描述的多过程模型相同。