-1

我们是一家大公司,通过电话向数以万计的客户销售冷冻服务。订单记录在打孔卡上,具有

  • 客户 ID
  • 一个约会
  • 购买的美元金额。

为了将这些处理成每月给我们的用户的账单,我们准备购买足够现代的计算机设备来满足 60 年代的需求。我想我们会将我们的用户数据库存储在磁带上(......因为......你可以用 60 年代的技术存储大量数据,对吧?)。

销售记录打孔卡未分类。即使磁带上的记录是按例如客户 ID 排序的,对每个进入的穿孔卡/客户 ID 进行一次“搜索”/查找(以更新例如“总和”金额)也会非常慢。同时,如果您有例如 256k 的 RAM(甚至更少?),则数据集的重要部分将不适合。

我的问题是:如何在实践中完成这个数据库操作?您是否先对打孔卡进行分类,然后线性穿过胶带?您甚至如何对打孔卡进行分类?还是先将它们全部复制到磁带上?您是否需要多个批处理作业来完成所有这些工作?其中有多少是我们必须编写的代码与操作系统附带的东西?

(......是的,我听说过那些带有旋转金属盘的冰箱大小的设备,每秒可以随机搜索多次;我认为我们买不起这些。)

4

1 回答 1

1

在 60 年代,你最有可能

  • 您将数据存储在按键序列排序的主文件中
  • 将打孔卡分类为临时磁盘文件
  • 使用临时磁盘文件(事务文件)和主文件进行主文件更新

如果需要在线访问,他们可能会使用索引文件或某些数据库(例如 IMS)。

主文件更新

对于主文件更新,两个文件需要按相同的顺序排序,并且您匹配键,它会使用两者的详细信息写入更新的主文件。它基本上就像一个 SQL 外连接。

逻辑

Read Master-File
Read Transaction-file

While not eof-master-file and not eof-Transaction-file
   if Transaction-file-key < Master-File-key
      Write transaction-file details into updated-master-file
      Read Transaction-file
   else_if Transaction-file-key == Master-File-key
      update Master-File-Record with Transaction-file-details
      Write updated-master-file-record to updated-master-file
      Read Transaction-file
   else
      Write master-file-record to updated-master-file
      Read Master-File
   end_if
end_while

Process Remaining Transaction-file records
Process Remaining Master-file records
于 2022-01-16T01:54:32.117 回答