IBM EAS-E提供了一个非常宝贵的机会,来证明SIMSCRIPT M概念的可行性和合意性,以及获得实施的经验。这一经验在设计怎样实现SIMSCRIPT M时可能有重要价值。关于我们的实施方法,参见帕泽尔、马尔霍特拉和马科维茨(Pazel,Malhotra,and Markowitz,1983)的文章;进一步的信息,特别是关于排序集的实现,参见马尔霍特拉、马科维茨和帕泽尔(Malhotra,Markowitz,and Pazel,1983)的文章。帕泽尔等和马尔霍特拉等的文章对怎样实施的描述透彻而简明,这里没有必要对其做进一步的全面总结。本节仅简述一些旨在提高灵活性和性能的IBM EAS-E解决方案,以及对更深层可选方案的思考。
每一个IBM EAS-E数据库(包含了任意数目的实体类型,以及这些实体类型的属性和集合关系)都由自己的监管程序副本来监管。有了纽约州约克敦海茨的托马斯·约翰·沃森研究中心(T.J.Watson Research Center)正在使用的虚拟机操作系统(the VM operating system),用户(每一个都在各自的虚拟机上)可同时向其虚拟机中的监管程序传递他们的请求,包括最新的资料。IBM EAS-E不处理分布式数据库,但为分布式数据库或数据库之间的数据请求增加监管程序间通信功能,并非一个特别大的挑战。IBM EAS-E锁定了个别实体层面的信息(“READ-WRITE”或“READ-ONLY”),这与一些数据库系统在页或表的层面锁定信息相区别。后一种方法锁定了那些能够被其他用户安全使用的信息。与其他数据库系统一样,崩溃保护功能确保一旦电脑发生崩溃,程序对数据库所做的更改要么全部要么都不成为数据库的“正式内容”。例如,如果计算机的操作系统在执行
IBM EAS-E允许对一个或多个实体类型的EAS结构做出更改,而不要求立即将更改了EAS结构的实体类型的所有现存实体转换为新的格式。如果一个旧格式的个体被读入主存储器,那么它在主存储器中将被保存为“双重形式”,即新旧两种版本都得以体现,之后以新格式写回数据库中。尽管在主存储器中被保存为双重形式,执行程序可以将旧格式属性和新格式属性称作例如O.和N.。对于集合,情形是类似的。如果没有具体的修改,那么属性值和集合内容将以新格式重写并保持不变。将数据库实体从旧格式转换为新格式的例程,在被调用时(如在转换该类型所有现存实体的批处理运行中),或者在需要尚未转换格式之个体的例程遇到旧格式的实体时,就会被激活(invoked)。
IBM EAS-E设计的目的是有效处理大型排序集——比我们在一生的应用中所碰到的那些集合要大得多。这通过将足够大的集合划分为多个子集来实现。对于更大的集合,可以将子集进一步划分为任何层面的子集之子集。通过将这一结构存储为平衡树,可实现快速访问存储和检索(详细内容参见Malhotra等的文章)。尽管这一结构的目的在于快速存储和检索,但我们将会看到,该结构也能促进并行处理在非常大型的SIMSCRIPT M应用程序中的使用。在编译规定对满足某个“WITH”条件的集合所有元素采取行动的代码时,用户虚拟机中编译了的程序需要与监管程序相协调,以有效利用可用的排序集,而非机械地从一个可能的大型集中获取每一个元素来检验该条件。
例如,C语言的关键字是保留字。特别地,C89有32个关键字,包括“auto”“break”“case”“char”“const”等。程序员不能将这些关键字用于其他任何目的,而只能用作关键字。因此,程序员必须记住不能将一个变量命名为“case”,或将一个函数命名为“float”或其他30个保留字。在SIMSCRIPT语言的情形中,这一点将会特别麻烦,因为该语言十分丰富。例如,SIMSCRIPTⅡ的报告生成工具包含了一个语句PAGE IS FIRST(虽非标准的英语,但它的含义应该是清楚的)。通用格式是包含如下形式的语句: