翻译系列文章之–面向对象数据库特征及用途(Object Database Use and Features)

嘎子 面向对象数据库 2016-02-01 504 次浏览 , , 没有评论

数据库为用户提供了数据持久化的功能,具体到对象数据库是指对象能够在不同的数据库进程之间进行存储。 

产品特点 

下面的列表是对象数据库的特征及可支持的功能,对象数据库的功能包括: 

— 支持您要使用的面向对象的语言。 
–支持面向对象的概念。 
—-聚合 – 对象是由其他对象组成。 
—-封装 – 与方法存储数据。不是所有的数据库都支持的方法,但依靠在架构中定义的类来重建其方法的对象。 
—-继承 – 对象继承父对象的属性。 
—-多态性 – 两种方法使用相同的名称,但有不同的行为。方法的可以由一个对象定义,操作规范可以与其他对象所共享。 

–分布式架构 – 对象共享在分布式环境中或整个数据库可以在多台计算机上复制。 
–异构环境 – 跨平台支持 – 数据库可能可以在不同计算机及各种操作系统、不同版本的操作系统上运行。 
–事务处理 – 有些数据库可能有事务处理的功能并可支持的并发性。事务处理将确保整个事务完成或者它完全没有进行。事务支持并发控制和数据恢复。数据故障会导致数据的回滚。 
–并发 – 如果数据库允许并发访问,数据库必须确保并发访问时该数据已经被检查。并发访问是指多个应用程序或线程可以同时读取或更新相同的数据。这种行为也可以被称为两阶段提交,即两个进程可能同时工作在相同的对象上。这种情况下可以在读取或写入数据时锁定数据。并发控制的方法包括: 
—-悲观控制 – 如果一个或多个进程正在读取,无法更新数据。 
—-多读取 – 更新不会阻止。在事务开始前数据必须是一致的。换言之,如果读出的已完成,并且在数据在被当前进程保存之前被另一个进程改变时,该事务无效,直到该数据被再次读出。 

–对象关系 – 对象关系定义对象与其他对象的关联,及对象能否在一个方向或两个方向上彼此检测。双向对象关系可以允许垃圾收集(即内存回收)。双向的关系是最好的选择。 
–数据库内存回收 – 需要双向的对象关系。确定是否由数据对不再被数据库不再被引用的对象执行内存回收,这可以让外部程序不必跟踪使用对象指针。 
–关系基数 – 支持的关系可以包括以下的任何组合: 
—-一一对应的。 
—-一对多。 
—-多对一。 
—-多对多。 
数据库必须支持以上所有关系。 
透明的持久性 – 直接数据操作使用面向对象的语言组成。很多时候,一个持久化类或持续性接口用于实现持久性。这可以通过一些供应商认为是透明度。如果一个接口的情况下,中间界面可以被用来帮助隔离从特定数据库的呼叫,从而使顾客能够更容易地购买改变数据库供应商。 
数据库接口方法 – 这些可能包括SQL,OQL,和一些应用程序编程接口(API)。请参见“通信支持”部分下,如下。 
数据库完整性 – 有两种类型: 

Transparent persistence – Consists of direct data manipulation using object oriented language. Many times a persistent capable class or persistent interface is used to implement persistence. This may be considered by some vendors to be transparency. If an interface is used, an intermediate interface may be used to help insulate calls from the particular database, thereby allowing the customer to more easily change database vendors later.
Database interface methods – These may include SQL, OQL, and some application programming interface (API). See the section under “Communication Support”, below.
Database Integrity – There are two types:
Structural database integrity ensures database contents are consistent with the database schema. Referential Integrity requires bi-directional object relationships to ensure objects do not contain references to deleted objects.
Logical integrity – The logical properties of the data are correct. The data has the correct values consistently and concurrent access does not cause incorrect values to be set.
Object Versioning – A single object represented by multiple versions. Two types are:
Linear – Prior versions of the object are saved as the object is changed.
Branch – Multiple users may update the object concurrently.
结构数据库的完整性,确保数据库内容与数据库架构是一致的。参照完整性要求的双向对象的关系,以确保对象不包含对已删除的对象。 
逻辑完整性 – 数据的逻辑属性是正确的。数据是否具有正确的值一致地和并发访问不会导致不正确的值被设置。 
对象版本控制 – 通过多个版本代表一个对象。两种类型为: 
线性 – 对象的早期版本被保存为对象的改变。 
分公司 – 多个用户可以同时更新的对象。 
通知 – 通知可以是主动的还是被动的。无源系统可最低限度地确定某个对象是否改变了状态。有源系统可提供用于一个应用程序的时候一个对象被修改后得到通知。 
索引 – 附加的索引可以被提供,以提高数据检索效率。散列和b-树可以被使用。 
安全性 – 数据存储和/或传输加密可以由一些数据库的支持。还用于访问数据库的不同的认证方法和水平可以通过各种产品来提供。 
存档和数据恢复 
容错 – 这提供了在软件故障的硬件故障事件耐性的特点。通常情况下的事务处理提供软件的容错能力。数据复制到网络上的其他服务器支持的硬件容错功能。 
数据访问 – 访问通常情况下用迭代器来访问这些数据,就好像对象的集合。这种方式不需要的对象被加载到存储器获得所需的对象之前。 
排序 – 一个给定的类或父类的所有对象都可以得到。 
工具可以与数据库中使用。 
存储量。 
方法存储 – 在运行中的对象,并让他们行为的代码被存储在数据库中。 

 
注意事项 

哪些编程语言的数据库支持? 
对象关系 – 他们是双向的? 
工作组支持 – 共享数据库和锁定。 
模式演变 – 你怎么告诉架构更改数据库?这包括改变一个类的定义,例如属性或行为,改变继承,添加,删除或重命名类。别类需要向后兼容? 
如何做数据库搜索使用多态?它可以给那些由特定制造商的所有轿车的对象? 
如何在数据库API的使用呢?是数据库透明的应用程序? 
工具 – 工具对产品的开发和支持非常重要。该数据库可以支持一些工具或者用一些集成。工具,应该是一个关注,包括开发工具,测试工具,调试工具,数据建模工具,以及数据维护工具。 
对象模型 – 对象建模中使用,以及是否该对象建模工具集成数据库(或者他们是否应该)应予以考虑。 
是否需要在数据库存储对象的方法或重建,从类的方法呢?如果是这样存储方式,方法可以在数据库进程不存储方法或重新创建的应用程序内存的方式执行。非面向对象的程序可以是能够访问的存储的方法的输出。 
通信支持 

对象数据库将使用下列一种或多种应用程序和数据库之间交换数据。 

OQL – 的标准语言对象数据库之间的通信对象查询语言(OQL)。有些对象数据库支持,和别人不一样。 
SQL – 的标准语言的关系数据库之间的通信结构化查询语言(SQL)。有些对象数据库支持,和别人不一样。这是为了帮助潜在的消费者,从目前的RDBMS应用程序迁移到ODBMS。对象数据库使用SQL通过考虑一排的对象,并在一个列中的每个单元是一个对象的属性。该表是对象的集合。该表连接和密钥用于创建对象的关系。 
应用程序编程接口(API) – 有些厂商提供附加的类或其它用于访问数据库的编程接口。它包括直接的数据操作的使用面向对象的语言。 
使用一个标准接口,如SQL或OQL的优点是,该应用程序是不依赖于一个特定的数据库。以使用API的优点是,访问可能更快,甚至可能对应用程序透明。该应用程序可能甚至不知道它运行的方法或使用上的数据库中的数据。该API是一个好坏参半的,因为它提供了一些性能上的优势,或许有点不太灵活。这个损失的灵活性可以通过提供应用程序和特定数据库的API之间的标准接口来缓解。 

主要比较点 

此表是评估的例子,而不代表以及可能的其他功能支持的所有语言和平台。 

功能客观性供应商2供应商3 
支持语言的Java 
支持的系统的Linux,NT 
面向对象的概念是 
分布式是 
异构是 
事务处理是 
并发多的读者,作家单 
对象关系双向 
垃圾回收是 
关系的基数全部4 
透明的持久性是排序/ 
接口方法能够持久对象/接口,SQL 
数据库的完整性(逻辑/结构)的逻辑和结构 
版本控制(线性或分公司)的线性 
通知(主动或被动)被动 
额外的索引最小 
安全 – 数据加密是 
安全 – 安全验证是 
安全级别是否可用?是的 
数据存储和恢复是 
容错是 
对象是如何存储 

对象标识符(OID)的使用。 
关系被构造和跟踪。
Notification – Notification may be active or passive. A passive system can minimally determine if an object has changed state. An active system may provide for an application to be informed when an object is modified.
Indexing – Additional indexing may be provided to enhance data retrieval efficiency. Hashing and b-trees may be used.
Security – Data storage and/or transmission encryption may be supported by some databases. Also different authentication methods and levels for access to the database may be provided by various products.
Archiving and data recovery
Fault tolerance – Features that provide for fault tolerence in the event of a hardware of software failure. Normally transaction processing provides software fault tolerance. Data replication to other servers on the network supports hardware fault tolerance.
Data access – Access is normally done using an iterator to access the data as though objects are collections. This way the objects are not required to be loaded into memory before the desired object is obtained.
Sorting – All objects of a given class or parent class may be obtained.
Tools that can be used with the database.
Amount of storage.
Method storage- The code that runs in objects and gives them behavior is stored in the database.

Considerations

What programming languages does the database support?
Object relationships – Are they bi-directional?
Work Group Support – Sharing databases and locking.
Schema Evolution – How do you tell the database about schema changes? This includes changes to the definition of a class such as attributes or behavior, changes to inheritance, adding, deleting, or renaming a class. Do classes need to be backward compatible?
How do databases search using polymorphism? Can it give all cars objects that are made by a specific manufacturer?
How are the database APIs used? Is the database transparent to the applications?
Tools – Tools are important for product development and support. The database may support some tools or integrate with some. Tools that should be a concern include development tools, testing tools, debugging tools, data modeling tools, and data maintenance tools.
Object Models – The object modeling to be used and whether the object modeling tools integrate with the database (or whether they should) should be considered.
Does the database store object methods or rebuild the methods from classes when required? If it does store methods, methods can be executed in database processes without storing the method or recreating the method in the application memory. Non object oriented programs may be able to access the output of the stored methods.
Communications Support

Object databases will use one or more of the following methods to exchange data between applications and the database.

OQL – The standard language for object database communication is object query language (OQL). Some object databases support it and others do not.
SQL – The standard language for relational database communication is structured query language (SQL). Some object databases support it and others do not. This is provided to help prospective customers migrate current applications from RDBMS to ODBMS. The object databases use SQL by considering a row an object, and each unit in a column to be an attribute of an object. The table is a collection of objects. The table joins and keys are used to create object relationships.
Application Programming Interface (API) – Some vendors provide additional classes or programming interfaces that are used to access the database. It consists of direct data manipulation using object oriented language.
The advantage to using a standard interface such as SQL or OQL is that the application is not tied to one specific database. The advantage to using an API is that the access may be faster and possibly even transparent to the application. The application may not even know it is running methods or using data on a database. The API is a mixed bag since it gives some performance advantages and perhaps a little less flexibility. This loss of flexibility may be mitigated by providing a standard interface between the application and the particular database’s API.

Main Comparison Points

This table is an evaluation example and may not reflect all languages and platforms supported along with possible other features.

Feature Objectivity Vendor 2 Vendor 3
Supported Languages Java

Supported Systems Linux, NT

Object oriented concepts yes

Distributed yes

Heterogeneous yes

Transaction Processing yes

Concurrency Multiple readers, single writer

Object relationships Two way

Garbage collection yes

Relationship cardinality all 4

Transparent persistence yes/sort of

Interface Methods Persistent capable objects/interfaces, SQL

Database integrity (Logical/Structural) Logical and structural

Versioning (Linear or Branch) Linear

Notification (Active or Passive) Passive

Additional Indexing Minimal

Security – Data encryption yes

Security – Secure authentication yes

Security levels available? yes

Data storage and recovery yes

Fault tolerance yes

How Objects are Stored

Object Identifiers (OIDs) are used.
Relationships are constructed and tracked.

个人觉得这个文章太抽象,学术气太重,所以没有翻译完:原文网址:http://www.comptechdoc.org/ind … .html

原创文章,转载请注明: 转载自TsonTec:测量解决方案提供者

本文链接地址: 翻译系列文章之–面向对象数据库特征及用途(Object Database Use and Features)

相关主题

  • 翻译系列文章之–面向对象数据库(Object Oriented Databases)2016-01-30 翻译系列文章之–面向对象数据库(Object Oriented Databases) (0)
    面向对象数据库也被称为对象数据管理系统。对象数据库存储面向对象编程语言(如Smalltalk,C++,java等)中的对象而不仅仅像关系数据库那样存储整数,字 […]
  • db4o官方停止支持及面向对象数据库的一些感想2016-01-30 db4o官方停止支持及面向对象数据库的一些感想 (0)
    前一段时间试用了db4o,真心觉得不错,觉得面向对象的数据库没有一个系统的论坛,所以自己建立了这个网站来推广。但今天在打开db4o的官方网站时发现Versan […]
  • PostgreSQL和面向对象数据库有什么关系?2016-01-30 PostgreSQL和面向对象数据库有什么关系? (0)
    百科里面介绍PostgreSQL的第一句话是:PostgreSQL是自由的对象-关系数据库服务器(数据库管理系统)。我一直对对象-关系数据库的概念比较模糊,所 […]
  • 面向对象数据库及db4o的优势2016-01-29 面向对象数据库及db4o的优势 (0)
    这是这一系列文章的第一篇,所以不会说一些具体的见容,如果大家已经决定开始用db4o,而且大家对一些理论不太感兴趣的话,大家可以跳过这篇文章。当然这篇文章的所说 […]
  • 面向对象数据库是数据认识世界的方向2016-01-29 面向对象数据库是数据认识世界的方向 (0)
    像面向对象的编程语言一样,面向对象数据库(OOD)是数据走向更亲和真实世界的一种发展方向。 面向对象是一种认识方法学,也是一种新的程序设计方法学。把面向 […]
  • db4o基础与入门2016-01-29 db4o基础与入门 (0)
    如果你使用的编程语言是java或者.net(笔者最常用的编程语言为C#,所以下文中以C#说事,请读者勿怪),那你有福气了,db4o可以说是一种最自然的数 […]

说点什么

您将是第一位评论人!

提醒
avatar
wpDiscuz
回顶部