Archives
 
 
 
  Special
 
 
 
  About Us
 
 
 

Newsletter
Free E-mail Newsletter from BYTE.com

 
    
           
Visit the home page Browse the four-year online archive Download platform-neutral CPU/FPU benchmarks Find information for advertisers, authors, vendors, subscribers Request free information on products written about or advertised in BYTE Submit a press release, or scan recent announcements Talk with BYTE's staff and readers about products and technologies

ArticlesPoet Goes Java


December 1997 / Javatalk / Poet Goes Java

An OODBMS from the C++ world takes the natural plunge into Java.

Rick Grehan

Thanks to an ability to quickly store and retrieve complex objects, object databases are well suited for Web-oriented applications. Several object-oriented databases and persistent-object storage systems have appeared for Java, and this column marks the beginning of a series of reviews of them.

A few years ago, I reviewed Poet, a promising C++-based object-oriented database from a company of the same name (see "Poet in Motion," May 1994 BYTE). Its latest product is the Poet 5.0 Object Server Suite, which includes an object server; Software Development Kits (SDKs) for Acti veX, Java, and C++; Web Factory; and SQL Object Factory. The object server is language-independent -- it merely manages req uests from a Poet application, which could be written in ActiveX, C++, or Java (which means that a given installation could involve applications written in either language "talking" to the same server).

The server includes facilities to handle administrative chores such as database management, back up and restore, user- access management, and so on. The SDKs are where you build Poet applications. They automate compiles and links, and also let you go through the contents of a database, viewing object structures as well as object data. Web Factory lets your application generate Web pages dynamically, and SQL Object Factory lets you program using the Poet API and transparently access data in a Poet or relational database or both. In this article, I focus on the Poet 5.0 Java SDK and server.

A Poet database consists of two or three storage areas (each storage area becomes a file on the disk). The first is the dictionary, which carries the class-structure definitions for objects in the database. The second area -- the real database -- holds the persistent objects themselves. These two areas work in concert. The database server must have the dictionary to understand the structure of the objects stored in the database. Finally, a database may have one or more indexes associated with it. These are kept in a third area.

Because the structure information for the persistent objects is kept in the dictionary, modifying the dictionary after you have stored data is problematic. How does the system know how to read an object if its structure definition has been altered? Suppose, for example, after you have stored several objects in a database, you alter the class definition for those objects (in the dictionary) to add or remove a member. Poet handles this situation by maintaining multiple class versions in the dictionary.

In oth er words, Poet knows how to read the "old" objects as well as the "new" ones. Furthermore, when your application reads an old object, Poet automatically converts it to the new format. When you save that old object into the database, its structure is automatically updated.

Poet is compliant with release 2.0 of a standard from the Object Database Management Group (ODMG) that helps ensure the portability of databased applications across platforms and products. This compliance means a great many things, including the fact that Poet supports embedded and ad hoc queries in the object query language (OQL). I invite you to visit the Poet Web site ( http://www.poet.com ) for details. An important part of ODMG compliance is that Poet uses persistence by reachability . That means that object A becomes persistent if it i s referenced by persistent object B.

For concurrency and integrity management, Poet supports powerful transaction capabilities. Transactions can be nested, which allows you to create commit levels . This allows you to create a situation in which an enclosing transaction commits only if all its component transactions were successful. If one of the enclosed transactions failed, the application can abort the outer transaction and return the database to its previous consistent state. You can build more elaborate transactions using the checkpoint feature.

A checkpoint acts as a kind of internal commit. In other words, if, in the midst of a transaction, an application issues a checkpoint call, all modifications to that point are committed. This is useful when a transaction involves large amounts of data and a single final commit would result in a storm of I/O to the database. Internal checkpoints let you throttle the flow of data into the database.

Locks in the Poet system can be either impl icit or explicit. Implicit locks are automatically placed on objects that your application reads or modifies in the database. Explicit locks come in four flavors: read, update, write, and delete. Each has its own interaction characteristics.

For example, a read lock lets other database users only read the locked object (they cannot modify or delete the object). Similarly, a delete lock assures that no other user attempts to read or modify the locked object. For finer locking control, the underlying Poet engine recognizes up to six lock levels. Your application can apply these lock levels if the four standard lock levels are for some reason insufficient.

The Poet 5.0 Java SDK is available for Windows 95 or NT for $1500 (Poet sells each SDK separately). I tested the NT version, which was in the early stages of release (the manual was available only in Acrobat Reader format). Still, if the final product is as good as its C++ ancestor, Poet should be a powerful, easy-to-use persistent-object storage s ystem worth your consideration.


Product Information


Object server.................$5000 NT version


Java SDK......................$1500


Run-time client...............$ 140 each


SQL Object Factory..........$10,000


Web Factory...................$1500

Poet Software
San Mateo, CA
Phone:    800-950-8845
Phone:    650-286-4640
Fax:      650-286-4630
E-mail:   
info@poet.com

Internet: 
http://www.poet.com

Enter 1074 on Inquiry Card.
Information on 
this product
 and similar products (data managem
ent)

HotBYTEs
 - information on products covered or advertised in BYTE


Navigation Becomes Poetic

screen_link (38 Kbytes)

Poet's database browser looks much like an object browser. You can visually navigate through the classes and objects in a database.


Rick Grehan is a senior editor at Computer Design magazine and coauthor of The Client/Server Toolkit (NobleNet, 1996). You can contact him at rickg@pennwell.com .

Up to the Javatalk section contentsGo to next article: Java, Come Hear I Need YouSearchSend a comment on this articleSubscribe to BYTE or BYTE on CD-ROM  
Flexible C++
Matthew Wilson
My approach to software engineering is far more pragmatic than it is theoretical--and no language better exemplifies this than C++.

more...

BYTE Digest

BYTE Digest editors every month analyze and evaluate the best articles from Information Week, EE Times, Dr. Dobb's Journal, Network Computing, Sys Admin, and dozens of other CMP publications—bringing you critical news and information about wireless communication, computer security, software development, embedded systems, and more!

Find out more

BYTE.com Store

BYTE CD-ROM
NOW, on one CD-ROM, you can instantly access more than 8 years of BYTE.
 
The Best of BYTE Volume 1: Programming Languages
The Best of BYTE
Volume 1: Programming Languages
In this issue of Best of BYTE, we bring together some of the leading programming language designers and implementors...

Copyright © 2005 CMP Media LLC, Privacy Policy, Your California Privacy rights, Terms of Service
Site comments: webmaster@byte.com
SDMG Web Sites: BYTE.com, C/C++ Users Journal, Dr. Dobb's Journal, MSDN Magazine, New Architect, SD Expo, SD Magazine, Sys Admin, The Perl Journal, UnixReview.com, Windows Developer Network