Data cartridge应该叫做“数据弹药筒”还是“数据筒”?
在牛津字典上关于cartridge的解释是:
a container holding a spool of photographic film, a quantity of ink, or other item or substance, designed for insertion into a mechanism
(胶卷盒或墨水囊等的)可插型容器,套筒,套壳
■a casing containing a charge and a bullet or shot for small arms or an explosive charge for blasting
弹壳,弹药筒
■a component carrying the stylus on the pickup head of a record player
(唱机的)唱头,(拾音器的)心座
本意是:一种为盛放(装载)电影胶片轴、墨水、或其它的东西(实体)而设计的容器。所以结合文档中对oracle data cartridge功能的介绍,data cartridge翻译为“数据筒”似乎更准确一些。
什么是数据筒?What Is a Data Cartridge?
Oracle在关系模型下支持高效、安全的数据管理,在对象模型下也提供了数据组织支持。对象类型(Object type)和大对象(LOBs)、外部过程、可扩展索引、查询优化等特性,能够用来构建强大的、基于服务器的可重用组件,称为数据弹药桶(data cartridge)。
什么是数据筒?What Are Data Cartridges?
在ORACLE的扩展架构的框架中,数据弹药桶是一种扩展ORACLE服务器能力的机制。什么意思呢?
首先,ORACLE可以捕获业务逻辑,并处理与特定于域的数据相关联的用户自定义数据类型。出于某种原因,数据弹药桶的功能可以通过包(package)来实现,而不需要额外的机制。确定了这种方式后,Oracle就会使你具有决定以何种方式解释、存储、抽取和索引数据的能力。所以,数据弹药桶的意思就是把这些功能以软件组件的形式打包,添加到服务器中来扩展它的能力满足新的域的需求。(这句的真译不太好理解,意思是把这些功能添加到服务器后,服务器就能够具有处理新的业务域的能力)
由于数据库本身已经是可扩展的,所以一切成为了可能。就是说,现在可以为自定义的业务对象和富对象来定制数据库管理系统的索引和查询优化机制。可以提供自定义的索引和查询优化实现方法,来改进原有的服务实现。你需要用扩展接口在服务器上注册这些实现。注册后,会让服务器在处理特定流程时,使用你的实现来代替原有本身的实现。
扩展接口由一些函数(functions)组成,这些函数会在需要的时候由于服务器调用执行。Oracle已经定义了这些接口。作为数据筒的开发者要自己实现这些方法,以使数据库能根据需求来实现特殊的操作。一般情况下,通过对象的静态方法来实现这个功能。实现了扩展索引接口的对象,叫做indextype(可以解理为“已经被索引化的类型”);实现了可扩展的优化接口,叫做statistics type。
数据筒的主要特性如下:
l 数据筒是基于服务器的。它们被置于服务器端,或从服务端访问。对于数据筒的大部分处理都发生在服务器上,或从服务器上以外部过程的方式分发。
l 数据筒扩展了服务器。通过定义新的类型或行为,来提供组件化的、面向解决方案的能力,这是服务器从前难以获得的特性。数据筒的用户可以自由的在他们的应用中使用新类型来得到新的行为。例如,通过加载一个图像数据筒,用户可以定义一个person表,并带有一个图像类型(image type) 的列。
l 数据筒是与服务器集成的。通过定义新类型对服务器的扩展,是与服务器引擎集成在一起的,所以优化器、查询分析器、索引和其它服务器机制都能识别和响应这种扩展。Oracle的扩展架构定义了一组接口,使数据筒与服务器引擎的组件能够整合在一起。例如,索引引擎接口允许特定于域的索引。优化接口也允许数据筒定义关于使用弹药筒数据时评估CPU和I/O消耗的特定于域的方法。(这段不太通,附上原文: For example, the interface to the indexing engine allows for domain-specific indexing. Optimizer interfaces similarly allow data cartridges to define domain-specific ways of assessing the CPU and I/O cost of accessing cartridge data.)
l 数据筒是打包的。一个数据筒作为是一个安装单位。安装完后,数据筒将接手处理所有可能出现的连接问题,这个问题的目标用户可能在不同的模式下、有不同的权限等。