使用扁平文件进行数据存储的 Perl 编程实践
1. 文件锁定的重要性
在处理数据库文件时,文件锁定是一个关键概念。如果没有适当的文件锁定机制,多个事务同时修改同一记录时,可能会导致数据丢失或数据库文件损坏,这就是所谓的“丢失更新问题”。
举个例子,假设有两个旅行社代理同时尝试预订某航班的最后一个座位。他们都检查到还有一个座位可用,第一个代理预订了该座位,但第二个代理在第一个代理检查和完成预订之间也进行了检查并同样预订了该座位,这样就覆盖了第一个代理的预订,导致第一个代理的更新丢失。
而如果实施了文件锁定方案,情况就会不同。第一个代理会先获得文件(或表,如果是关系型数据库应用)的锁,检查座位可用性,然后进行预订。在此期间,第二个代理尝试获取资源的锁时,必须等待第一个代理的事务完成。此时,座位已经被预订,第二个代理就无法再预订该座位。
在打开文件并获得其独占锁后,应尽快完成对文件的所有操作。因为文件被锁定时,其他想要写入该文件的进程都必须等待。如果同时有大量 Web 请求进来,文件锁定可能会成为瓶颈,减慢 CGI 程序的访问速度。因此,尽量减少文件锁定的时间非常重要。
2. 示例数据库结构
在开始编写使用数据库的脚本之前,先了解示例数据库的结构。这个数据库非常简单,每行包含一条记录,每条记录有三个字段:姓名、电子邮件地址和浏览器偏好,字段之间用单个制表符分隔。示例数据库包含三条记录,如下所示:
Rafe Colburn rafe@rc3.org Netscape
John Doe nobody@rc3.or
超级会员免费看
订阅专栏 解锁全文
394

被折叠的 条评论
为什么被折叠?



