Oracle8i Application Developer's Guide - Large Objects (LOBs) Release 2 (8.1.6) Part Number A76940-01 |
|
Sample Application, 2 of 2
Oracle8i supports LOB
s, large objects which can hold up to 4 gigabytes of binary or character data. What does this mean for you, the application developer?
Consider the following hypothetical application:
Multimedia data is used in an increasing variety of media channels -- film, television, webpages, and CD-ROM being the most prevalent. The media experiences having to do with these different channels vary in many respects (interactivity, physical environment, the structure of information, to name a few). Yet despite these differences, there is often considerable similarity in the multimedia authoring process, especially with regard to assembling content.
For instance, a television station that creates complex documentaries, an advertising agency that produces advertisements for television, and a software production house that specializes in interactive games for the web could all make good use of a database management system for collecting and organizing the multimedia data. Presumably, they each have sophisticated editing software for composing these elements into their specific products, but the complexity of such projects creates a need for a pre-composition application for organizing the multimedia elements into appropriate groups.
Taking our lead from movie-making, our hypothetical application for collecting content uses the clip as its basic unit of organization. Any clip is able to include one or more of the following media types:
Since this is a pre-editing application, the precise relationship of elements within a clip (such as the synchronization of voice-over audio with a photograph) and between clips (such as the sequence of clips) is not defined.
The application should allow multiple editors working simultaneously to store, retrieve and manipulate the different kinds of multimedia data. We assume that some material is gathered from in-house databases. At the same time, it should also be possible to purchase and download data from professional services.
Our mission in this chapter is not to create this real-life application, but to describe everything you need to know about working with LOB
s. Consequently, we only implement the application sufficiently to demonstrate the technology. For example, we deal with only a limited number of multimedia types. We make no attempt to create the client-side applications for manipulating the LOBs. And we do not deal with deployment issues such as, the fact that you should implement disk striping of LOB files, if possible, for best performance.
See Figure 8-2, "Schema Plan for Table MULTIMEDIA_TAB".
Figure 8-3, "Schema Plan for Table MULTIMEDIA_TAB" shows table MULTIMEDIA_TAB's structure. Its columns are described below:
SEQUENCER
as a matter of convenience, and has nothing to do with the eventual ordering of the clip.
CLOB
datatype.
NCLOB
datatype.
PhotoLib_tab
archive. Since a large database of this kind would be stored on tertiary storage that was periodically updated, the column for photographs makes use of the BFILE datatype.
VoiceOver_tab
whose purpose is to store audio recordings for use as voice-over commentaries. For instance, these might be readings by actors of words spoken or written by people for whom no audio recording can be made, perhaps because they are no longer alive, or because they spoke or wrote in a foreign language.
This structure offers the application builder a number of different strategies from those discussed thus far. Instead of loading material into the row from an archival source, an application can simply reference the data. This means that the same data can be referenced from other tables within the application, or by other applications. The single stipulation is that the reference can only be to tables of the same type. Put another way: the reference, Voiced_ref
, can refer to row objects in any table which conforms to the type, Voiced_typ
.
Note that Voiced_typ
combines the use of two LOB datatypes:
Figure 8-4, "Schema Design for Inclusion of VOICED_REF Reference" shows VOICED_REF column referencing the Voiced_typ row in table VoiceOver_tab.
InSeg_ntab
of predefined type InSeg_typ
can be used to store zero, one, or many interview segments in a given clip. So, for instance, a hypothetical user could use this facility to collect together one or more interview segments having to do with the same theme that occurred at different times.
See Figure 8-5, "Schema Design for Inclusion of Nested Table INSEG_NTAB".
In this case, nested table, interviewsegments_ntab
, makes use of the following two LOB datatypes:
Since such segments might be of great length, it is important to keep in mind that LOBs cannot be more than 4 gigabytes.
MAP_OBJ
, of the object type MAP_TYP
. In this case, the object is contained by value, being embedded in the row.
As defined in our application, MAP_TYP
has only one LOB in its structure -- a BLOB for the drawing itself. However, as in the case of the types underlying REFs and nested tables, there is no restriction on the number of LOBs that an object type may contain. See Figure 8-6, "Schema Design for Inclusion of Column Object MAP_OBJ".
|
![]() Copyright © 1996-2000, Oracle Corporation. All Rights Reserved. |
|