|
oracle |
Auf dem Gebiet der Datenbanken liegt unsere Kernkompetenz im Bereich der
Oracle-Produkte. Unsere Erfahrungen erstrecken sich über die Oracle-Versionen
7, 8i, 9i, 10g und 11g, mit ihren jeweiligen Merkmalen - Neue Features, Obsolete Features,
Verbesserungen, Bugs, Unterschiede in den Optimizern etc.
Die jahrelange Erfahrung in Oracle-Projekten aller Art und aus unterschiedlichen Branchen
hat es uns ermöglich, ein umfassendes Know-how aufzubauen, Best Practices zu definieren
und diese wiederum in neuen Projekten anzuwenden und zu verfeinern. Neben den klassischen
allgemeinen Prinzipien der Datenmodellierung und Datenbankimplementierung, setzen wir auch
Oracle-spezifische Schwerpunkte in unseren Projekten, wie zum Beispiel:
- Einsatz von PL/SQL. PL/SQL stellt eine mächtige prozedurale Erweiterung
der SQL-Datenbank mit zwei entscheidenden Vorteilen: die nahtlose Integration auf
syntaktischer und Ausführungsebene und den schnellen Kontext-Switch von/zu SQL
(insbesondere ab Oracle 9i). Aus diesen Gründen ist in vielen Fällen eine
Implementierung der Programmlogik in PL/SQL einer Implementierung außerhalb der
Datenbank vorzuziehen. Dabei gibt es aber auch Fälle - z.B. in
Number-Crunching-Applikationen - in denen ein externes Programm, beispielsweise ein
C-Programm, die effizientere Variante darstellt. Die Entscheidung über die am besten
geeignete Implementierung sollte abhängig vom konkreten Fall getroffen werden.
- Einsatz der von Oracle bereitgestellten Utilities, die in vielen
Fällen die benötigten Funktionalitäten abdecken - wie Export/Import, Loader, Profiler,
Recovery Manager, Enterprise Manager, Data Guard etc. - sowie Verwendung zusätzlicher
Tools, wie TOAD, SQL Navigator und ERwin, die weitere Funktionalitäten und komfortable
Benutzerschnittstellen anbieten.
- Ausnutzung der speziellen Datenbankobjekttypen von Oracle: Packages,
Types, Directories, sowie der objekt-relationalen Konstrukte etc. Der Einsatz dieser
Konstrukte sollte allerdings dem Problem angemessen sein - die meisten Aufgaben lassen
sich nach wie vor sehr gut klassisch relational und mit Einsatz von Standard-PL/SQL
lösen.
- Strukturierung der PL/SQL-Packages. Packages und abstrakte Datentypen ermöglichen
eine Art von objekt-orientierter Programmierung mit Typhierarchien,
Overloading, Information Hiding (Public und Private Konstanten, Typen, Cursors,
Prozeduren) etc. Davon machen wir intensiv Gebrauch, denn dadurch werden die
Applikationen besser strukturiert.
- Autonome Prozeduren sind in vielen Situationen hilfreich (in
Logging- und Error-Prozeduren, in Trigger, die lokal committen müssen etc.)
- Bulk Operationen stellen einen nützlichen Kompromiß zwischen der
Effizienz eines "Insert-from-Select"-Statements und den Fehlerbehandlungsmöglichkeiten
eines Inserts in einer Cursor-Schleife dar. (Dieser Vorteil relativiert sich ab der
Version 10g.)
- Performance Optimierung ist bei der Entwicklung unter Oracle ein aktiver
Prozeß, der beim Erstellen der SQL-Statements beginnt, über Analyse und Verbesserung von
Execution Plans führt und bis hin zu Optimizer Hints und tief auf die Ebene von
Histogrammen gehen kann. Dazu ist ein genaues Verständnis der Oracle-Optimizer (CBO/RBO)
erforderlich sowie richtiges Sammeln von Statistiken, Behandlung von Sonderfällen
(Skewed Data, Buckets) etc.
- Einsatz spezieller Konstrukte für den Data Warehouse-Bereich, wie
partitionierte Tabellen, Materialized Views, Bitmap Indizes etc.
- Einsatz der Oracle Built-In-Funktionalitäten für OLAP (Rollup, Cube,
analytische Funktionen etc.)
- Ausnutzung der Delete Cascade/Set Null-Optionen bei Relationen
(Foreign Keys)
- Erweiterung der Constraint-Cascade-Funktionalität über Trigger und Packages (z.B. als
Insert Cascade oder Update Cascade)
- Intensive Nutzung des Data Dictionaries, z.B. bei der dynamischen
Generierung von Objekten, in generischen Funktionen etc.
- . . .
|
|
|