Hakan: Archievierung von Images(Bildern) in Oracle

Hallo,

es geht um ein Datenbankprojekt.Welches in Oracle9i realisiert werden soll.Alternative Datenbanken wären auch möglich. MySql

Das Projekt soll eine Art Image Archievierung sein.
Das heißt ich hab unmengen von Bildern sprich JPEG oder andere Bildformate.
Diese sollen in der Datenbank ( wollte nur die URL`s )verfasst werden und zum finden ( rekursiv durchsuchen des Verzeichnisses) bereitgestellt werden. Es soll eine reine Web-Applikation werden.
Dachte als Client PHP.

Wie soll ich die Namen der Bilder behandeln ? Soll ich sie so lassen wie sie sind oder eine laufende Nummer als "IDxyz.jpg" generieren lassen.
Dachte auch an die vergabe von Schlüsselwörtern an die Bilder.(Metadaten).

Wie sieht es dann aus wenn sich die Verzeichnisstruktur verändert ?

Ist es möglich aus einer CD Bilder in die DB einzulesen ?

Bei diesem Projekt ist das wesentliche das suchen und finden der BIlder.

Über jede HIlfe bin ich sehr dankbar!

Danke!

Hakan

  1. Servus,

    belasse die Dateinamen so wie sie sind.
    Warum unnötig ändern?

    Vergib lieber für jeden eintrag zusätzlich eine eindeutige Id.

    Für das suchen würde ich eventuell die Dateien Kathegorisieren.

    Gruss Matze

  2. Moin!

    Wie soll ich die Namen der Bilder behandeln ? Soll ich sie so lassen wie sie sind oder eine laufende Nummer als "IDxyz.jpg" generieren lassen.

    Da ein Dateisystem ja auch eine Datenbank ist, welche darauf spezialisiert ist, in sich abgeschlossene Binärdatenströme (auch Dateien genannt) zu verwalten, ist eine Veränderung des Dateinamens nicht notwendig. Die Kombination aus Pfadname und Dateiname ist eindeutig.

    Zu beachten ist, dass es performancemäßig eher ungünstig ist, sehr viele Dateien in einem einzigen Verzeichnis zu haben. Es macht Sinn, nach irgendeiner zu findenden Strukturvorgabe die Dateien in verschiedene Verzeichnisse aufzuteilen. Im Zweifel kann man als Struktur beispielsweise den Dateinamen nehmen (und muß dann dafür sorgen, dass dieser global eindeutig ist, nicht nur je Verzeichnis).

    Als Beispiel:

    /imagepfad/A/B/B/abbildung.tif
    /imagepfad/B/E/L/beleuchtung.jpg

    Dachte auch an die vergabe von Schlüsselwörtern an die Bilder.(Metadaten).

    Das ist dann Aufgabe der begleitenden Datenbank.

    Wie sieht es dann aus wenn sich die Verzeichnisstruktur verändert ?

    Das sollte nicht passieren müssen.

    Ist es möglich aus einer CD Bilder in die DB einzulesen ?

    Importmöglichkeiten sind natürlich frei programmierbar.

    Bei diesem Projekt ist das wesentliche das suchen und finden der BIlder.

    Dann wirst du mit großer Wahrscheinlichkeit Thumbnails der Bilder generieren wollen, welche ihrerseits wieder ganz sinnvoll in einem Dateisystem abgelegt werden.

    Ansonsten bist du für die Verwaltung und Durchsuchung der Metadaten mit der Datenbank zuständig und verantwortlich.

    - Sven Rautenberg

    --
    "Habe den Mut, dich deines eigenen Verstandes zu bedienen!" (Immanuel Kant)
    1. Moin!

      Wie soll ich die Namen der Bilder behandeln ? Soll ich sie so lassen wie sie sind oder eine laufende Nummer als "IDxyz.jpg" generieren lassen.

      Da ein Dateisystem ja auch eine Datenbank ist, welche darauf spezialisiert ist, in sich abgeschlossene Binärdatenströme (auch Dateien genannt) zu verwalten, ist eine Veränderung des Dateinamens nicht notwendig. Die Kombination aus Pfadname und Dateiname ist eindeutig.

      Zu beachten ist, dass es performancemäßig eher ungünstig ist, sehr viele Dateien in einem einzigen Verzeichnis zu haben. Es macht Sinn, nach irgendeiner zu findenden Strukturvorgabe die Dateien in verschiedene Verzeichnisse aufzuteilen. Im Zweifel kann man als Struktur beispielsweise den Dateinamen nehmen (und muß dann dafür sorgen, dass dieser global eindeutig ist, nicht nur je Verzeichnis).

      Als Beispiel:

      /imagepfad/A/B/B/abbildung.tif
      /imagepfad/B/E/L/beleuchtung.jpg

      Dachte auch an die vergabe von Schlüsselwörtern an die Bilder.(Metadaten).

      Das ist dann Aufgabe der begleitenden Datenbank.

      Wie sieht es dann aus wenn sich die Verzeichnisstruktur verändert ?

      Das sollte nicht passieren müssen.

      Ist es möglich aus einer CD Bilder in die DB einzulesen ?

      Importmöglichkeiten sind natürlich frei programmierbar.

      Bei diesem Projekt ist das wesentliche das suchen und finden der BIlder.

      Dann wirst du mit großer Wahrscheinlichkeit Thumbnails der Bilder generieren wollen, welche ihrerseits wieder ganz sinnvoll in einem Dateisystem abgelegt werden.

      Ansonsten bist du für die Verwaltung und Durchsuchung der Metadaten mit der Datenbank zuständig und verantwortlich.

      - Sven Rautenberg

      Hi,

      danke erstmal für die Tipps.Werde ich jetzt mal so bewerten und ein Prototyp entwickeln.

      Wie ist es mit InterMedia für Oracle?
      InterMedia definiert ja neue Datentypen um Multimediadaten zu beschreiben.
      Als Grunddatentyp wird "ORDSource" definiert.
      ORDSource implementiert die grundsätzliche Speicherung und Verwaltung der Daten in Oracle.

      Die verwendeten Datentypen sind im einzelnen:

      ORDAudio für Audiodaten  ->  nicht releveant

      ORDImage für Bilddaten   ->  für mich relevant

      ORDVideo für Videodaten  ->  nicht relevant

      CLOB für Textdaten       ->  nichtrelevant

      In diesen Klassen werden Mediendaten und Metadaten gespeichert.

      Ich würde dann die Daten extern speichern mit einem BFILE.
      Hab aber gelesen, dass man nur jewéisl bis zu 4 GB an Daten speichern kann.
      Wie mache ich das denn bei größerern Mengen ?
      Ist es überhaupt sinnvoll InterMeida zu verwenden ?

      Hier mal ein Beispiel wie ich es machen würde:

      CREATE TABLE      Bilder(
      Bildername        VARCHAR(50),
      größe             INTEGER,
      Beschreibung      VARCHAR(50),
      photo             ORDSYS.ORDImage);

      Hier soll man die Bilddaten aufnehmen!

      DECLARE

      Image ORDSYS.ORDImage;

      BEGIN

      INSERT INTO Bilder VALUES ('test', 240, 'Test Bild',

      ORDSYS.ORDImage.init('file','ORDIMAGEDIR','test.gif'));

      SELECT photo INTO Image FROM Bilder WHERE Bildername = 'test' for UPDATE;

      Image.setProperties;

      UPDATE Bilder SET photo = Image WHERE Bildername = 'test'; COMMIT;

      END;

      Der Konstruktor (Zeile 5) benötigt nun als Parameter den Pfad, den Dateinamen und das Kennwort 'file' um die Bilddaten mit Hilfe eines BFILE zu speichern. Dabei wird in dem BFILE die Datei test.gif aus dem Verzeichnis ORDIMAGEDIR referenziert. In Zeile 6 wird die entsprechende Zeile in der Spalte photo für ein Update selektiert, in Zeile 7 die Properties des Bildes gesetzt und in Zeile 8 das Update durchgeführt, indem die Daten aus Image in der entsprechenden Zeile in die Spalte photo kopiert werden.

      Ich könnte doch ein beliebiges Verzeichnis auswählen also über die Web Applikation z.B. ein Optionsbutton  "dursuchen" und das ausgewählte Verzeichnis rekursiv durchlaufen und jedes gefundene Bild dann in meiner DB also Tabelle speichern oder ???????

      Ich muss das Projekt umbedingt schaffen und würd mich über jede Anregung und Hilfe sehr freunen.
      Natürlich verlange ich nicht das man mir es vorzeigt sondern, diejenigen die schon mal so etwas gemacht haben einige Tipps, ob das so machbar ist wie ich mir das Vorstelle.

      Ich würde dann ein in PHP ein Skript ertsllen für die Verbindung in die Oracle Datenbank und ein weiteres vielleicht auch mehrere für das finden und suchen der Bilder.
      Und anschließend in Browser ausgeben.

      Viele Grüße

      Hakan