60 年代的数据库仅使用磁带/打孔卡连接?

Database join in the '60s with tape / punch cards only?

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

为了将这些处理成每月账单给我们的用户,我们准备购买足够现代的计算设备以供 60 年代使用。我想我们要将我们的 用户数据库存储在磁带上 (...因为...那是您可以使用 60 年代技术存储大量数据的地方,对吗?)。

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

我的问题是:这个数据库操作在实践中如何实现?您是否先对穿孔卡进行分类,然后线性地检查磁带? 你甚至如何分类穿孔卡? 或者你先将它们全部复制到磁带上?您是否需要多个批处理作业来完成所有这些工作?与 OS?

附带的代码相比,我们需要编写多少代码?

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

在 60 年代你最有可能

  • 您将数据存储在主文件中,按键顺序
  • 排序
  • Punch-Cards分类到临时磁盘文件
  • 使用临时磁盘文件(交易文件)和主文件Master-File Update

如果需要在线访问,他们可能会使用索引文件或某些数据库(例如 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