14.06.2013 Views

Databases and Systems

Databases and Systems

Databases and Systems

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

249<br />

Every database entry is represented by a “struct”. In contrast to CORBA objects,<br />

structs are passed by value. Access to the individual fields is therefore local <strong>and</strong> very<br />

fast. On the other h<strong>and</strong> the application has to get the whole struct even if it is only<br />

interested in the sequence field. Structs are nearly as convenient to use as CORBA<br />

objects with one subtle difference. Structs can’t be referenced physically. In this<br />

example the SwissProt entry contains the accession number of an EMBL entry. The<br />

client has to know itself how to get the EMBL sequence given the accession number.<br />

The upcoming CORBA 3.0 specification will address the pass-by-value issue <strong>and</strong><br />

make the definition of structs unnecessary in some cases.<br />

Generic<br />

In this approach the data model is not represented in IDL. The objects are instead<br />

encoded in generic types like strings. The main advantage of this approach is ease of<br />

maintenance. Using IDL, clients <strong>and</strong> servers have to be compiled together with the<br />

classes, which are generated from the IDL definition. This can become a burden if<br />

the data model is large or changes frequently. Generic representations are well suited<br />

for generic applications, which are not interested in the semantics of the data. For<br />

end-user applications (e.g. an alignment program) generic representations are very<br />

cumbersome to use. An example of a syntax of this sort is the object interchange<br />

format OIF, defined in the ODMG 2.0 st<strong>and</strong>ard [4].<br />

Queries<br />

The ability to express queries is important for all databases. This aspect is<br />

st<strong>and</strong>ardized in CORBA through the query service specification [10]. The central<br />

element is a CORBA object of the type query evaluator. A query evaluator takes a<br />

query string as input <strong>and</strong> returns a reference to a result collection. This collection is<br />

another CORBA object, which can itself implement the query evaluator interface.<br />

Because the query service does not specify the elements of the result collection, it can<br />

be combined with any of the above listed representations. Furthermore the query<br />

service can be used with every possible query language depending on the underlying<br />

database management system.<br />

Conceptual Data Model<br />

Even though Interface-Based <strong>and</strong> Struct-Based representations can have a very<br />

strong similarity to the conceptual data model, it is important not to confuse them.<br />

The purpose of the conceptual model is to model the data as they really are, using<br />

concepts close to humans. Neither the database schema nor the IDL can replace such<br />

a high level model. The database schema is specific to the used DBMS <strong>and</strong> may<br />

contain optimizations. The IDL is independent from implementation details but it<br />

represents merely an application specific view.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!