Justin Cave hat Recht, dass dies zu redundanten Daten führen kann, aber dies hängt wirklich davon ab, wie Sie Ihre Datenbank entwerfen.
Der Ansatz, ein ganzes Objekt in einen Blob zu serialisieren, ist nicht so empörend, wie die meisten Leute hier glauben. In der Tat kann dies für einige Anwendungen das beste Design sein, das Sie tun können, wie ich hier erklärt habe: /programming//a/12644223/1121352 .
Das Serialisieren eines Objekts bietet in der Tat mindestens zwei Vorteile:
1- Reduzieren von Impedanzfehlanpassungen : Einige Java-Typen sind in SQL einfach nicht verfügbar, insbesondere wenn Sie viele Klassen und benutzerdefinierte Typen verwenden. Daher kann das Konvertieren von Java-Objekten nach SQL ein großer Aufwand sein und sogar zu Mehrdeutigkeiten führen.
2- Mehr Flexibilität in Ihrem Schema . Relationale Schemata eignen sich in der Tat hervorragend für Daten mit derselben Struktur. Wenn jedoch einige Ihrer Objekte in einer einzelnen Klasse je nach den Bedingungen zur Laufzeit unterschiedliche Eigenschaften aufweisen können, können relationale Schemata Ihren Workflow erheblich beeinträchtigen.
Daher hat dieser Ansatz sicherlich Vorteile (zumindest diese beiden, aber sicherlich auch andere, die ich nicht angeführt habe), aber der enorme Kostenaufwand besteht natürlich darin, dass Sie fast alle Vorteile für relationale Schemata verlieren.
Sie können jedoch das Beste aus beiden Welten herausholen, wenn Sie Ihre Datenbank sorgfältig entwerfen: Sie können weiterhin ein relationales Schema (dh eindeutige Schlüsselspalten) festlegen, indem Sie die für jedes Objekt eindeutigen Attribute verwenden und das Objekt dann im Blob speichern . Auf diese Weise können Sie weiterhin einen schnellen Abruf Ihres Objekts mit einer eindeutigen Kennung sicherstellen, die durch die Attribute Ihres Objekts definiert ist, und außerdem die Redundanz verringern, während Sie die Impedanzinkongruenz aufheben und die volle Flexibilität von Java-Objekten beibehalten.
Als Randnotiz gibt es einige Versuche einiger DB-Hersteller, relationale und Objektmodelle zusammenzufügen, wie den JSON-Datentyp in PostSQL und PostgreSQL, damit Sie JSON wie jede relationale Spalte direkt verarbeiten können, sowie SQL3 und OQL (Object Abfragesprache), um (eingeschränkte) Objektunterstützung zu SQL hinzuzufügen.
Letztendlich ist dies alles eine Frage des Designs und des Kompromisses zwischen dem relationalen Modell und dem Objektmodell.
/ EDIT nach dem Lesen von Kommentaren: Wenn Ihre Daten durchsuchbar ("abfragbar") sein müssen, sollten Sie Ihre Daten NICHT als Blob speichern. Wenn jedoch einige Teile Ihrer Daten nicht durchsuchbar sein sollen , sondern eine Art von Metadaten, kann das Speichern dieses Datenteils als Objekt in einem Blob eine gute Lösung sein, insbesondere wenn diese Metadaten eine flexible Struktur aufweisen und kann sich von Objekt zu Objekt ändern.