到目前为止,在我们的例子中所使用的文件都是普通文件。在本书的第二篇中,我们将介绍如何使用MySQL,它是一个关系数据库管理系统(RDBMS)。你可能会问,“我为什么要使用它?”
2.10.1 使用普通文件的几个问题
使用普通文件,你可能会遇到如下这些问题:
■当文件变大时,使用普通文件将会变得非常慢。
■在一个普通文件中查找特定的一个或者一组记录将会非常困难。如果记录是按顺序保存,你可以使用某种二分法并结合按定长记录来搜索一个关键字域。如果你希望查找模式信息(例如,需要查找所有生活在Smalltown的客户),就不得不读入每一个记录并且进行逐个检查。
■处理并发访问可能会遇到问题。你已经了解了如何锁定文件,但是锁定可能导致我们前面介绍的竞争条件。它也可以导致一个瓶颈。如果一个站点具有太多的访问量,大量的用户就可能在能够创建订单之前必须等待该文件解锁。如果该等待时间太长,人们可能会到其他地方购买。
■到目前为止,我们所看到的文件处理都是顺序的文件处理——也就是我们从文件开始处一直读到文件的结束。如果我们希望在文件中间插入记录或者删除记录(随机访问),这可能会比较困难——你将必须将整个文件读入到内存中,在内存中修改它,然后再将整个文件写回去。如果这是一个很大的数据文件,这可能会带来巨大的开销。
■除了使用文件访问权限作为限制外,还没有一个简单的方法可以区分不同级别的数据访问。