60 年代的数据库仅使用磁带/打孔卡连接?
Database join in the '60s with tape / punch cards only?
我们是一家大公司,通过 phone 电话向数以万计的客户销售冷冻服务。订单记录在打孔卡上,特色
- 客户 ID
- 一个日期
- 购买的冻结金额。
为了将这些处理成每月账单给我们的用户,我们准备购买足够现代的计算设备以供 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
我们是一家大公司,通过 phone 电话向数以万计的客户销售冷冻服务。订单记录在打孔卡上,特色
- 客户 ID
- 一个日期
- 购买的冻结金额。
为了将这些处理成每月账单给我们的用户,我们准备购买足够现代的计算设备以供 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