第一个问题:为什么要使用数据库?
现在市面上的数据库有好几种,如MSSQL、MySQL、Oracle等。他们都是数据库服务,不同的公司推出的,适用于不同的场合。这些方面网上大把的资料介绍,我就不多说了。说一些网上很少有甚至没有,且是大家特别需要的。MSSQL是微软公司推出的,有不同的版本如SQL2000、SQL2005、SQL2008的等,MySQL则是开源的数据库。Oracle作为大型的数据库而使用。不管使用什么数据库,都支持最基本的SQL语法,只不过对于一些高级的特性,每种数据库则有差别,我们要学习就是要先学习这些数据库最为根基的东西,可以适用于各种数据库。需要使用时则再详细了解具体的数据库。
数据库的相关说明,就以MSSQL为例,其他的都差不多。
这些数据库指的是数据库服务器。服务器的配置相关说明,请参考《MSSQL SERVER 数据库服务器配置全面总结》。配置是使用MSSQL,大家举一反三。
使用数据库不是必须的。只是如果有大量的查询操作数据时,为了方便操作和管理,就是用数据库来实现。当然,也是需要付出代价的。如果是开发一个音乐播放器,自然是有播放列表的东西。每一个歌曲条目,都有详细信息。如果是几十条,那也用不上数据库,直接使用一个txt文件,然后一个特定的分隔符来隔开,然后可以对文件内容进行便利,来查询自己的条目。这个实现和ini文件实现机制很像。这样做,这个文件就是有特定格式的,如果格式出错,则不能够顺利的解释文件的内容代表的意义。当然这还不是最大的问题。如果歌曲很多,如酷狗、酷我、百度音乐等这些在线播放器,有海量的歌曲,如果用户都下载了,那歌曲数量是很大的。这个不是假设,以前我自己就用酷狗下过几十GB的歌曲,很自然的。上万个歌曲、每个歌曲都有几十个项来记录歌曲信息,数据量就很大了,如果使用txt方式,每次查找一个歌曲时,都要遍历所有歌曲一次,这样才能支持随机选歌播放。但是,这样做之后响应速度就很慢了。如果你做的好,算法写的好,采用哈希表字典查询,那么你就要实现哈希算法,要控制txt的格式,最后使用这个算法查找。是的,这样确实可行,也确实可以实现。但是,这样工作量就巨大了。加入后期还增加信息,变动结构,就要崩溃了。像这样的情况,就需要使用数据库了。数据库功能就是为这些需求而产生的,并且性能很好,没必要自己去折腾。还有,如果需要支持在线听歌,你根本就蒙了。当然,有经验的是可以使用Socket编程来查询歌曲信息等,这样有提高了难度。而数据库可以通过一个连接,然后执行SQL语句就可以轻松搞定。
当然,数据库还提供各种特性支持,对数据安全等都提供了非常好的支持。比如事务处理,就可以解决各种交易问题,不会出现一方扣钱了另一方没有收到钱的不同步的问题。数据库的操作日志则给数据恢复提供了很好的保证等等。所以软件使用数据库来解决很多问题,会大大提高开发效率。