Version User Scope of changes
Nov 16 2007, 4:19 AM EST (current) dfhawthorne 364 words added
Nov 16 2007, 2:34 AM EST dfhawthorne

Changes

Key:  Additions   Deletions

References

The Oracle reference for Data Cartridges can be found in the following online links:

Simple Description

A Data Cartridge is a software package that conforms to a set of programming specifications and uses supplied functions. This allows a software developer to extend the functionality of the Oracle database by incorporating extra knowledge into how data is indexed. A Data Cartridge is put forward as a means for Software Development Companies to sell packaged solutions to clients who are also software developers.

Design Patterns Description

For those of you who are into Design Patterns, a Data Cartridge is a Factory that creates a index type which is a Facade. This index type is then instantiated as a Domain Index.

Example of a Data Cartridge Implementation

With each distribution of Oracle Database Server comes an implementation of Data Cartridge which is called Oracle Text. Further references can be found in:

Hierarchy of Types of Indexing

The hierarchy of types of indexing, in order of increasing complexity, is:
  1. No index (data is accessed by table scans)
  2. Simple index (CREATE INDEX a ON table(column))
  3. Functional index (CREATE INDEX a ON table(function(column)))
  4. Domain index (CREATE INDEX a ON table(column) INDEXTYPE IS type)
Both of the last two (2) require extra work to done before the index can be used.

Recommended Approach to Data Cartridges

  1. Are you sure you want to implement Data Cartridges?
  2. Have a good night's sleep (this is your last chance of getting some)
  3. Are you really sure want to do this?
  4. Read the manual.
  5. Implement the sample code.
  6. Are you still sure?
  7. Use the sample code as a basis for a prototype.
  8. Measure the performance on a substantial amount of data.
  9. Curse the day you were born.
  10. Calm down and review the performance hints.
  11. Reconsider your decision
  12. Update this Wiki entry with your tale of woe.
  13. Implement your design

Performance Hints

  1. Avoid correlated function calls
  2. Use out arrays on ODCIIndexFetch calls
  3. Optimise your internal data structures
  4. Instrument your code
  5. Really instrument your code