Das Notes Forum

Sonstiges => Infrastruktur => Thema gestartet von: Marinero Atlántico am 28.04.05 - 07:48:46

Titel: Glanz und Elend von RDBMS aus Sicht der Anwendungsentwicklung
Beitrag von: Marinero Atlántico am 28.04.05 - 07:48:46
Hi,

hier will ich ein paar Sachen dazu posten. Auch die Nachteile. Die Diskussion um Objekt-Datenbanken wäre längst gestorben, gäbe es diese Ursachen nicht.

Mathias hat das in einem anderen Thread sehr guten Thread gepostet:
Und das halte ich jetzt für aufwändiger in Notes als in RDBMS "mal schnell" durch eine Table zu wandern um diese Ersetzung vorzunehmen.
Das ist schon mal ein bischen irreführend.  Es ist gerade der Vorteil von SQL und RDBMS, dass man hier über eine Menge an Tupeln (Zeilen) arbeiten kann:

Einfaches Beispiel:
Code
update Firma Set city='Chemnitz' where city='Karl Marx Stadt';
Wenn es in der Tabelle >1 Tupel (Zeile) mit dem Property (Spaltenwert) 'Karl Marx Stadt' gibt, dann werden die alle wertmässig in 'Chemnitz' geändert. Also alles andere als "rumeiern".
andere Beispiele sind group by/(having) uvam.
Das "eiern über eine Tabelle" (Relation) kommt eigentlich nur zustande, wenn man in einem Programm die Datenbankinhalte in Objekte verwandelt.
Auf SQL/RDBMS Ebene kann man über eine Menge an Daten arbeiten und das ist eine sehr gute Eigenschaft.
Titel: Re: Glanz und Elend von RDBMS aus Sicht der Anwendungsentwicklung
Beitrag von: Semeaphoros am 28.04.05 - 08:25:57
Stimmt, a-bär ich hatte Matthias nicht so verstanden, wie es den Anschein macht, dass Du es getan hast. Das Eiern (und damit das Osterfest ... :) ) ist bei solchen Gelegenheiten in Notes/Domino angesagt. Matthias hat mit seinem "schnell mal" eben genau das gemeint, was Du jetzt hier in konkreten Code gegossen hast, meine ich.

Zu den OO-Datenbanken: Diese Diskussion ist vieeeeel jünger als irgendwelche Diskussionen über RDBMS. OO insgesamt ist eine Generation später als RDBs, Codd ist schon bald einmal ur-alt. Daneben gilt es zu beachten, dass man auch eine ROODB andenken könnte (und das wurde auch gemacht: eine relationale OO-Datenbank, das würde sogar funktionieren). Anders ausgedrückt, mit Deiner Bemerkung über OO-DBs hast Du zu der Diskussion über Aepfel auch gleich noch die Birnen hineingeworfen, die Themen gehören nicht wirklich zusammen.
Titel: Re: Glanz und Elend von RDBMS aus Sicht der Anwendungsentwicklung
Beitrag von: TMC am 28.04.05 - 09:12:55
Danke Jens, exakt so war's gemeint.
Wollte dort nur zum Ausdruck bringen, das sowas in RDBMS viel schneller und besser geht.
Titel: Re: Glanz und Elend von RDBMS aus Sicht der Anwendungsentwicklung
Beitrag von: Marinero Atlántico am 28.04.05 - 11:30:58
Klar kann ich Leute mißverstehen.
Es geht mir nicht darum, jemanden persönlich anzugreifen, sondern um den Inhalt der Diskussion.

Codd ist schon bald einmal ur-alt.
Code
was nicht heisst, dass es schlecht ist. 
Daneben gilt es zu beachten, dass man auch eine ROODB andenken könnte (und das wurde auch gemacht: eine relationale OO-Datenbank, das würde sogar funktionieren).
Code
Klar haben z.B. Oracle oder DB2 mittlerweile auch sowas wie Objekt Features. Nur halte ich die Vereinbarkeit beider Ansätze für ein bischen fragwürdig. 
[quote author=Semeaphoros link=topic=22672.msg144203#msg144203 date=1114669557] 
Anders ausgedrückt, mit Deiner Bemerkung über OO-DBs hast Du zu der Diskussion über Aepfel auch gleich noch die Birnen hineingeworfen, die Themen gehören nicht wirklich zusammen.
[/quote]
Notes, OODBs, RDBMS erfüllen alle die selbe Business-Funktionalität: 
Die Persistierung von Daten bei Zugriff mehrerer User. 
Wieso kann man diese Ansätze nicht vergleichen ???[/quote]
Titel: Re: Glanz und Elend von RDBMS aus Sicht der Anwendungsentwicklung
Beitrag von: Semeaphoros am 28.04.05 - 11:44:37
Wurde auch nicht als Angriff aufgefasst.


Stimmt, was uralt ist, ist nicht automatisch schlecht, sonst würd ich mich bestimmt nicht mit Römern und Griechen beschäftigen .....  ;)


Notes, OODBs, RDBMS erfüllen alle die selbe Business-Funktionalität:
Die Persistierung von Daten bei Zugriff mehrerer User.
Wieso kann man diese Ansätze nicht vergleichen ???

Naja, in diese Definition gehört aber auch LanServer, Windows Server, Samba ............ selbst mit Word lässt sich das machen und man bekommt sogar noch gewisse "Kooperationsfunktionen" mitgeliefert.

Nur, Du hast angefangen mit einem Technologievergleich und nicht mit einer Betrachtung der Biz-Funktionalität. Warum änderst Du den Blickwinkel?
Titel: Re: Glanz und Elend von RDBMS aus Sicht der Anwendungsentwicklung
Beitrag von: Marinero Atlántico am 28.04.05 - 11:59:54
Jens,

ich sehe da keine Veränderung des Blickwinkels. Die Bizfunktionalität bewirkt, dass eine bestimmte Art von Datenbank in einer Anwendung eine bestimmte Aufgabe übernimmt.
Und aus Sicht der Anwendungsentwicklung kann man dass dann sehr wohl vergleichen.
Ich habe für ein bestimmtes Aufgabensegment Grüne, Rote und Gelbe Äpfel und kann auswählen.
Jede Art hat seine Vor- und Nachteile. Es soll hier nicht um einen low-level Technologievergleich gehen, zu dem ich sowieso nicht in der Lage bin.
 
Ich versuche das hier mit der mir möglichen analytischen Schärfe herauszuarbeiten.
Gerne verwendete Begriffe wie "starr" oder "unflexibel" sehe ich nicht so, bzw benötigen einiges an Erörterung. 
Es gibt aber auch definitiv Fälle, wo RDBMS einem das Leben sicher nicht einfacher machen.
Da ich z.Zt. ziemlich viel damit arbeite, versuche ich auch diese kritischen Punkte herauszuarbeiten.

Gruß Axel
Titel: Re: Glanz und Elend von RDBMS aus Sicht der Anwendungsentwicklung
Beitrag von: Semeaphoros am 28.04.05 - 12:22:23
RDBs sind definitiv überfordert, wenn Daten nicht hierarchisch daher kommen, also entweder chaotisch oder zirkulär, um die beiden wichtigsten Varianten zu nennen. Da ist eine relationale Abbildung nicht mehr adäquat.
Titel: Re: Glanz und Elend von RDBMS aus Sicht der Anwendungsentwicklung
Beitrag von: Marinero Atlántico am 28.04.05 - 12:37:06
kannst du ein Beispiel posten für zirkuläre Daten?
Titel: Re: Glanz und Elend von RDBMS aus Sicht der Anwendungsentwicklung
Beitrag von: Semeaphoros am 28.04.05 - 13:13:08
Beziehungskiste:

Wer kennt wen?

A kennt B und E, B kennt C und D, C kennt B und E, E kennt B und C .......
Titel: Re: Glanz und Elend von RDBMS aus Sicht der Anwendungsentwicklung
Beitrag von: Thomas Schulte am 28.04.05 - 13:25:41
RDBS im Klassichen Sinn sind auch dann überfordert, wenn jede beliebige Tabelle mit jeder anderen beliebigen Tabelle in einer Beziehung stehen kann (aber nicht muss).
Haus A gehört Person B
Person C wohnt in Haus A
Telefonanschluss D ist in Wohnung E
Wohnung E ist in Haus A
Person F telefoniert mit Telefonanschluß D
TelefonAnschluß D ist angemeldet von Person B
Titel: Re: Glanz und Elend von RDBMS aus Sicht der Anwendungsentwicklung
Beitrag von: Marinero Atlántico am 28.04.05 - 13:32:51
Ich liefere am Wochenenden Tabellen für PostgreSQL und DB2.  8)
Titel: Re: Glanz und Elend von RDBMS aus Sicht der Anwendungsentwicklung
Beitrag von: animate am 28.04.05 - 15:03:43
Beziehungskiste:

Wer kennt wen?

A kennt B und E, B kennt C und D, C kennt B und E, E kennt B und C .......

RDBS im Klassichen Sinn sind auch dann überfordert, wenn jede beliebige Tabelle mit jeder anderen beliebigen Tabelle in einer Beziehung stehen kann (aber nicht muss).
Haus A gehört Person B
Person C wohnt in Haus A
Telefonanschluss D ist in Wohnung E
Wohnung E ist in Haus A
Person F telefoniert mit Telefonanschluß D
TelefonAnschluß D ist angemeldet von Person B

Hmm? Das sind doch stinknormale Relationen, oder nicht?

Sowas kann ich auf jeden Fall in UML-Klassendiagramm darstellen und ich denke auch, dass ich das auf eine relationale Datenbank übertragen kann (Bin da nicht so der ultra Spezialist, aber ich weiß, dass wir hier aus Klassendiagrammen die Tabellen generieren lassen und das ist sowas an der Tagesordnung).
Titel: Re: Glanz und Elend von RDBMS aus Sicht der Anwendungsentwicklung
Beitrag von: Marinero Atlántico am 28.04.05 - 15:10:59
Jens Beispiel würde ich auch eindeutig als M-N Beziehung auf sich selber sehen.
Also auf fränkisch vielleicht ???:

|--------------------------------|*-------------------| relationship (u.U. als Beziehungsklasse (spelling?) an die Assoziation hängen
|        Person                     |                          | 
|                                        |*-------------------|
*------------------------------- |

Thomas Schulte versucht es mit einem DB-Warehouse Trick. Er könnte sich berufen auf "... mit jeder anderen Tabelle in Beziehung stehen kann (aber nicht muss).
Ich kenn mich nicht mit Datawarehouse aus. Aber ich glaub, da müssen die Beziehungen zwischen den Relationen schon irgendwie definiert sein. Jedenfalls stimme ich mit Thomas V. überein. Bisher waren das alles ganz normale Relationen.

Titel: Re: Glanz und Elend von RDBMS aus Sicht der Anwendungsentwicklung
Beitrag von: Semeaphoros am 28.04.05 - 15:22:42
Beziehungen auf sich selber sind in Codd (und Nachfolger) nicht erlaubt. Damit durchbricht so etwas das relationale Modell. Dass man das in UML darstellen kann, hat in dieser Hinsicht keine Bedeutung. Fakt ist, dass bei einem solchen Datenmodell Referenzintegrität und ähnliches nicht mehr mit den gängigen Mitteln sichergestellt werden kann. Es hat auch niemand - weder Thomas noch ich - gesagt, dass sich sowas nicht darstellen lassen kann, es ist einfach nicht mehr relational
Titel: Re: Glanz und Elend von RDBMS aus Sicht der Anwendungsentwicklung
Beitrag von: Marinero Atlántico am 28.04.05 - 16:04:37
In der relationalen Integrität sehe ich auch ein kleines Problem (die Beziehung kann doppelt vorhanden sein). Man braucht dafür aber nur einen kleinen Validitätscheck aus der Anwendung heraus. Oder man macht die Inserts/Updates als stored procedures und checkt das da ab.
Als wirkliche Einschränkung sehe ich das nur sehr bedingt. 

Table Person
ID Identity (autogenerated primary key)
nameP varchar(50)

Table Relation
ID Identity (autogenerated primary key)
IDPersonA BigInt --- Fremdschlüssel auf idPerson
IDPersonB BigInt --- Fremdschlüssel auf idPerson.

Titel: Re: Glanz und Elend von RDBMS aus Sicht der Anwendungsentwicklung
Beitrag von: Semeaphoros am 28.04.05 - 16:08:28
a) es spielt keine Rolle, ob das einfach zu implementieren ist oder nicht, es bricht die recht strengen Regeln der Relationalen Datenbanken (nicht unbedingt der allgemeinen Relationalität ....)

b) Ich kann Dir sagen, so ganz einfach ist es nicht, es öffnet eine ganze Reihe von "Kannen von Würmern" ...... ich hatte so ein Modell mal in einem Projekt ...
Titel: Re: Glanz und Elend von RDBMS aus Sicht der Anwendungsentwicklung
Beitrag von: Thomas Schulte am 28.04.05 - 16:20:19
Hmm? Das sind doch stinknormale Relationen, oder nicht?

Sowas kann ich auf jeden Fall in UML-Klassendiagramm darstellen und ich denke auch, dass ich das auf eine relationale Datenbank übertragen kann (Bin da nicht so der ultra Spezialist, aber ich weiß, dass wir hier aus Klassendiagrammen die Tabellen generieren lassen und das ist sowas an der Tagesordnung).
Das ist jede für sich tatsächlich eine Stinknormale Relation.
ABER alles zusammen nicht mehr vernünftig mit den Relationalen Modell darstellbar. da du ja in jeder Tabelle für jede Beziehung zu jeder anderen Tabelle einen neuen Foreign Key eintragen müsstest. Und zusätzlich müsste jeder dieser Keys Mehrfachwerte annehmen was eigentlich auch nicht erlaubt ist.

Und es geht nicht darum ob man das mit UML darstellen kann, oder ob es mit einer kleinen Beugung des Relationalen Modells nicht doch geht sondern wie Jens schon gesagt hat darum ob das die Regeln bricht. Und das machen beide Definitionen,  die von Jens und meine auch..
Titel: Re: Glanz und Elend von RDBMS aus Sicht der Anwendungsentwicklung
Beitrag von: Thomas Schulte am 28.04.05 - 16:22:17
Nachtrag: wenn du bei meinem Modell 100 Tabellen hast, bei denen jeder mit jeder anderen verknüpft werden kann dann bedeutet das pro Tabelle 99 Foreign Keys.  ;D
Titel: Re: Glanz und Elend von RDBMS aus Sicht der Anwendungsentwicklung
Beitrag von: Marinero Atlántico am 28.04.05 - 16:42:40
b) Ich kann Dir sagen, so ganz einfach ist es nicht, es öffnet eine ganze Reihe von "Kannen von Würmern" ...... ich hatte so ein Modell mal in einem Projekt ...
Ich sehe ehrlichgesagt nach wie vor keine so großen Schwierigkeiten. Wenn ich mich recht erinnere basiert Gavin King/Christian Bauers Beispiel f. Hibernate in Action auf einem Modell, wo es solche Beziehungen zwischen Kategorien gibt, wenn ich mich recht erinnere. Kann mal nachschlagen.
Btw. könnte man vermutlich als Constraint einbauen, dass ID_von_PersonB_in_der_Verknüpfungstabelle > ID_von_PersonB_in_der_Verknüpfungstabelle.

@Thomas: Wo benötigt man in der Realität, dass 100 Tabellen, die alle miteinander in Beziehung stehen. Wir haben jetzt also einen hypothetischen Grenzfall, wo 100 Tabellen, die alle miteinander verbunden sind, unübersichtlich werden und vermutlich recht langsam für inserts und updates werden.
Titel: Re: Glanz und Elend von RDBMS aus Sicht der Anwendungsentwicklung
Beitrag von: Semeaphoros am 28.04.05 - 16:57:06
Axel, Du wolltest Beispiele, von Praxistauglichkeit hat niemand geredet
Titel: Re: Glanz und Elend von RDBMS aus Sicht der Anwendungsentwicklung
Beitrag von: Thomas Schulte am 28.04.05 - 16:58:02
Sorry das ich dich enttäuschen muss Axel, aber das ist keine hypothetischer Grenzfall, sondern tatsächlich eine Anwendung die international bei einer großen Behörde eingesetzt wird. Und die im ersten Step genauso "gelöst" wurde bis man eingesehen hat das es so dann doch nicht geht, nachdem man bei 54 Tabellen angekommen war. Du siehst also die Grenze liegt noch deutlich unter den angenommenen 100 Tabellen.
Zu den beschriebenen Tabellen gehörten,
Personen, Fahrzeuge, Telefone, Telefongespräche, Zusammenkünfte, Häuser, Wohnungen, Mieter, Vermieter, ........
Das Ganze dient dazu Beziehungsmuster aufzuklären und die die sowas benutzen sorgen dafür das unser Leben schön sicher bleibt.
Titel: Re: Glanz und Elend von RDBMS aus Sicht der Anwendungsentwicklung
Beitrag von: Thomas Schulte am 28.04.05 - 16:59:08
Axel, Du wolltest Beispiele, von Praxistauglichkeit hat niemand geredet
Auch wenn du recht hast Jens aber jetzt spaltest du Haare  ;D

Außerdem gibt es mindestens eine echte Anwendung für sowas die ich kenne.
Titel: Re: Glanz und Elend von RDBMS aus Sicht der Anwendungsentwicklung
Beitrag von: Semeaphoros am 28.04.05 - 17:05:52
Auch wenn du recht hast Jens aber jetzt spaltest du Haare  ;D

Ach, ich würd mal behaupten, das Haarespalten hab ich irgendwo hier gelernt .....    ;D
Titel: Re: Glanz und Elend von RDBMS aus Sicht der Anwendungsentwicklung
Beitrag von: Marinero Atlántico am 28.04.05 - 17:07:18
@Thomas: Das ist aber auch kein RDBMS spezifisches Problem.
Wenn du in einer Notes-Datenbank 100 DBLookups auf 100 unterschiedliche Views macht, würden vermutlich nach Tabelle 54 auch nur die ganz hartgesottenen weitermachen, denen Responsivität völlig egal ist.
Das gleiche gilt imho für OODBMS. Dort in einem Objekt 100 Pointer auf Objekte in anderen Objektbäumen ist vermutlich auch nicht so das Gelbe.
Titel: Re: Glanz und Elend von RDBMS aus Sicht der Anwendungsentwicklung
Beitrag von: Semeaphoros am 28.04.05 - 17:12:09
Das schreit tatsächlich nach Caching, aber das ist schon wieder ein völlig anderes Kapitel und stimmt, Performance und Scalability sind nur insofern technologieabhängig, als sie sich unterschiedlich zeigen. Sie treten aber tatsächlich überall irgendwann auf.
Titel: Re: Glanz und Elend von RDBMS aus Sicht der Anwendungsentwicklung
Beitrag von: Thomas Schulte am 28.04.05 - 17:33:00
@Thomas: Das ist aber auch kein RDBMS spezifisches Problem.
Wenn du in einer Notes-Datenbank 100 DBLookups auf 100 unterschiedliche Views macht, würden vermutlich nach Tabelle 54 auch nur die ganz hartgesottenen weitermachen, denen Responsivität völlig egal ist.
Das gleiche gilt imho für OODBMS. Dort in einem Objekt 100 Pointer auf Objekte in anderen Objektbäumen ist vermutlich auch nicht so das Gelbe.
:D Hat ja auch keiner behauptet.  ;D
Was ich allerdings behaupte ist, das es für dieses Problem eine Lösung gibt, die genau diese Anforderungen abdeckt, die performant und stabil ist und die man sowohl mit nicht strukturierten Systemen (Notes) , mit RBDs und mit OODBMS hinkriegt. Wobei man und da wären wir wieder beim Thema RDBs schon etwas verbiegen müsste, so das es den strengen Anforderungen nicht mehr entsprechen würde.
Titel: Re: Glanz und Elend von RDBMS aus Sicht der Anwendungsentwicklung
Beitrag von: Thomas Schulte am 28.04.05 - 17:33:23
Ach ja Jens, das geht dann auch ohne Caching
Titel: Re: Glanz und Elend von RDBMS aus Sicht der Anwendungsentwicklung
Beitrag von: Semeaphoros am 28.04.05 - 17:36:04
Ja, das glaub ich Dir auch (hatte schliesslich mit ähnlichen Strukturen schon zu tun :) ) - Aber wie schon erwähnt, wir kommen vom Thema ab.
Titel: Re: Glanz und Elend von RDBMS aus Sicht der Anwendungsentwicklung
Beitrag von: animate am 28.04.05 - 17:38:59
Hmm? Das sind doch stinknormale Relationen, oder nicht?

Sowas kann ich auf jeden Fall in UML-Klassendiagramm darstellen und ich denke auch, dass ich das auf eine relationale Datenbank übertragen kann (Bin da nicht so der ultra Spezialist, aber ich weiß, dass wir hier aus Klassendiagrammen die Tabellen generieren lassen und das ist sowas an der Tagesordnung).
Das ist jede für sich tatsächlich eine Stinknormale Relation.
ABER alles zusammen nicht mehr vernünftig mit den Relationalen Modell darstellbar. da du ja in jeder Tabelle für jede Beziehung zu jeder anderen Tabelle einen neuen Foreign Key eintragen müsstest. Und zusätzlich müsste jeder dieser Keys Mehrfachwerte annehmen was eigentlich auch nicht erlaubt ist.

ich hab keine Ahnung, ob ich damit eine Regel breche, aber ich muss doch weder x ForeignKeys noch Mehrfachwerte in einer Spalte haben. Das kann ich doch alles über Beziehungs-Tabellen machen, in denen jeweils die ID der zueinander in Beziehung stehenden Datensätze steht.

Zitat
Und es geht nicht darum ob man das mit UML darstellen kann, oder ob es mit einer kleinen Beugung des Relationalen Modells nicht doch geht sondern wie Jens schon gesagt hat darum ob das die Regeln bricht. Und das machen beide Definitionen,  die von Jens und meine auch..

Das mit der UML habe ich deshalb aufgeführt, weil mich ER-Diagramme immer an Klassenmodelle erinnern. Und ein ER-Diagramm biette mir ebenfalls die Möglichkeit, die oben genannten Beispiele zu modellieren.

Zitat
Beziehungen auf sich selber sind in Codd (und Nachfolger) nicht erlaubt

Codd kenne ich nur als "irgendein Datenbankguru aus den 60ern"
Heißt das, eine Tabelle darf keine Beziehung mit sich selbst haben?
Auch nicht über eine "reine Beziehungstabelle"?
Titel: Re: Glanz und Elend von RDBMS aus Sicht der Anwendungsentwicklung
Beitrag von: Semeaphoros am 28.04.05 - 17:52:52
Codd kenne ich nur als "irgendein Datenbankguru aus den 60ern"
Heißt das, eine Tabelle darf keine Beziehung mit sich selbst haben?
Auch nicht über eine "reine Beziehungstabelle"?

Aendere mal die Zeit um ca. 10 Jahre nach hinten :), auch wenn er in den 60ern damit angefangen hat. Und ja, Relfexivität ist in reinen relationalen DBs nicht erlaubt. Man kann es auch anders herum sagen: Relationale DBs sind zwingend hierarchisch aufgebaut (man beachte dabei, dass eine Tabelle nur ein Bestandteil einer DB ist).

Natürlich gibt es für diese Restriktion irgendwelche Gründe, aber frag mic nicht danach, ich weiss es nicht mehr.

Hab auch keine Ahnung mehr, wie das in einer Netzwerk-DB aussehen würde, kann sein, dass es sich dort direkt abbilden lässt. Aber diese Tierchen kennt ja wohl eh niemand mehr.
Titel: Re: Glanz und Elend von RDBMS aus Sicht der Anwendungsentwicklung
Beitrag von: Marinero Atlántico am 28.04.05 - 18:02:15
In diesem Hibernate-Mapping-File aus der caveatemperor Beispielanwendung von Gavin King / Christian Bauer geht deutlich hervor, dass Gavin King und Christian Bauer Tupel der Category Tabelle auf sich selbst in eine 1 zu n Beziehung stellen.
Code
<class name="Category"
<!-- WICHTIGER PUNKT -->
<!-- WICHTIGER PUNKT -->
<!-- WICHTIGER PUNKT -->
<!-- WICHTIGER PUNKT -->

	   table="CATEGORY"
	   lazy="true">

	<!-- Common id property. -->
	<id name="id"
		type="long"
		column="CATEGORY_ID"
		unsaved-value="null"
		access="org.hibernate.auction.persistence.DirectSetAccessor">
		<generator class="native"/>
	</id>

<!-- lots of stuff. Gelöscht von Axel -->

	<!-- Parent can be null for root categories. -->
	<many-to-one name="parentCategory"
				 cascade="none"
				 outer-join="false"
				 foreign-key="FK1_PARENT_CATEGORY_ID">
		<column name="PARENT_CATEGORY_ID"
				not-null="false"
				unique-key="UNIQUE_NAME_AT_LEVEL"/>
	</many-to-one>

	<!-- We use a Set for this bidirectional one-to-many. Batch fetching is
		 particulary interesting for  this association: We expect that the
		 application will need much more childCategories if it accesses
		 one. Batch fetching can significantly improve fetching of the
		 whole category graph.
	-->
	<set    name="childCategories"
			cascade="all-delete-orphan"
			inverse="true"
			lazy="true"
			batch-size="10"
			access="org.hibernate.auction.persistence.DirectSetAccessor">
		<key column="PARENT_CATEGORY_ID"/>
<!-- WICHTIGER PUNKT -->
<!-- WICHTIGER PUNKT -->
<!-- WICHTIGER PUNKT -->
<!-- WICHTIGER PUNKT -->

		<one-to-many class="Category"/>
	</set>


Will hier jetzt jemand behaupten, Gavin King/Christian Bauer haben keine Ahnung von Datenbankmodellierung und haben Codd nicht verstanden ???
Titel: Re: Glanz und Elend von RDBMS aus Sicht der Anwendungsentwicklung
Beitrag von: Semeaphoros am 28.04.05 - 18:28:21
Axel, das ist die falsche Frage, ob man von Datenbankmodellierung eine Ahnung hat, hängt eh nicht am relationalen Modell. Und selbst wenn man Codd verstanden hat, kann man solche Sachen machen, vorausgesetzt man weiss was und warum man es tut. Selbst Codd hat das Durchbrechen der Regeln grundsätzlich nicht verboten.
Titel: Re: Glanz und Elend von RDBMS aus Sicht der Anwendungsentwicklung
Beitrag von: Marinero Atlántico am 28.04.05 - 18:45:24
Thomas erzeugt offenbar sein Datenbankschema automatisiert aus UML Diagrammen. Mit Hibernate habe ich das auch schon automatisiert aus Objekten hibernate-xml Dateien gemacht und daraus Datenbankschemen. Die Leute bei uns im Büro machen das auch sehr oft (mit Hibernate).
Ich hab sowieso Probleme mit dieser sogenannten "Strenge" von RDBMS.
Worin besteht diese Strenge?
Dass es überhaupt ein Datenmodell gibt, über das die Validität der eingegebenen Daten geprüft werden kann?
Ist das nicht vielleicht ein Vorteil?
Imho kann man ein Datenmodell schnell ändern, wenn man sich ein bischen auskennt.
Ich benutze z.B. ein AntScript, dass die entsprechenden Data Definition Language Befehle (DDL, sowas wie Create Table, Drop Table, etc.) gegen die Datenbank sendet und dann direkt mit Data Manipulation Language (DML, Insert/Select/Update) die Datenbank mit Beispieldaten füllt.
Genau dass lässt sich nämlich schon flexibel ändern. Das ginge auch mit bestehenden Datenbanken.

Axel 
Titel: Re: Glanz und Elend von RDBMS aus Sicht der Anwendungsentwicklung
Beitrag von: Marinero Atlántico am 30.04.05 - 18:20:03
Mit dem Äpfel und Birnenvergleich war natürlich zum Teil berechtigt.
Steht ein Programmierer vor einer Notes Datenbank, einer OODBMS oder einem RDBMS steht er vor verschiedenen Dingen.
Begreift man buzzword-kompatibel alles, was ein Entwickler von den eingespannten Ressourcen benutzt als Dienst, dann würd ich jetzt mal festlegen, dass alle 3 einen gleichen - sagen wir - Zentraldienst liefern:
Persistierung von Daten.
Was ist Persistierung von Daten?
Daten dauerhaft zugreifbar macht.
Jeder kann in einem kleinen Experiment feststellen, was persistente Daten sind:
1. Du stellst dich hinter jemanden, der in verschiedenen Anwendungen arbeitet.
2. Du ziehst das Kabel des Computers aus der Steckdose.
3. Der User fährt seinen Computer wieder hoch.
4. Alle Daten, die dem User von den vorherigen Eingaben fehlen waren leider nicht persistent gespeichert, sondern nur im ram. Alles was noch da ist, waren zu seinem Glück persistente Daten. Die sind noch da. 
Persistente Daten werden auf die Festplatte geschrieben (oft in Form einer Datei). RDBMS , Notes oder OODBMS managed das.
Wieso muss diese Persistierung gemanaged werden?
Ein wichtiger Grund ist, dass viele Personen auf diese persitenten Daten lesend und schreibend zugreifen. Es versteht sich von selbst, dass diese Zugriffe irgendwie organisiert werden müssen.

Gut. Nachdem hier festgelegt worden ist, dass gemeinsamer schreibender und lesender Zugriff auf Daten im konkurrierenden Zugriff von mehreren Usern der zentrale Dienst von RDBMS, Notes und OODBMS ist, bleibt noch die Frage, welche zusätzlichen Dienste die 3 Obstsorten äh Systemtypen anbieten, anhand denen man die Systeme vergleichen kann.
Dazu später mehr.
   
Titel: Re: Glanz und Elend von RDBMS aus Sicht der Anwendungsentwicklung
Beitrag von: Marinero Atlántico am 01.05.05 - 19:37:40
Zusätzliche Dienste sind aus meiner Sicht:
1. Security des Daten/Schemazugriffs: Autentifizierung/Autorisierung und Berechtigung der User bestimmte Operationen durchzuführen
- Daten löschen
- Daten einfügen
- Daten ändern
- Daten lesen
- Datenbankschema/Schablone ändern
- Code auf Datenbankserver laufen lassen
- Datenbank erstellen/löschen

2. Security der Datenübertragung (SSL, ssh, etc.)

3. Transaktionsunterstützung: Eine Transaktion sind mehrere Operationen gegen eine Datenbank in einer atomaren zusammengefasst. Und dies explizit vor dem Hintergrund des konkurrierenden Zugriffs mehrerer User. Atomistisch heisst ja auch, dass User A die Ergebnisse der transaktionalen Operationen von User B erst sehen darf, wenn die Transaktion ganz abgeschlossen ist (keine Zwischenergebnisse). Schliesslich ist es eine atomistische Operation.

4. Erweiterbarkeit der Datenbank (wie einfach sind Änderungen im Schema und wie kontrollierbar sind diese Änderungen--> vermeiden unerwünschter Seiteneffekte, die die Konsistenz der Daten gefährden)

5. Unterstützung von binären Daten.

6. Recovery Tools (Zurückdrehen bei inkonsistenten Zustand der daten).
7. Sprache, um Operationen in der Datenbank durchzuführen.
8. Validitätsüberprüfungen auf die Plausibilität der ankommenden Daten.
9. Möglichkeiten der Replikation. Wenn es etwa auf Grund der schlechten Leitungen zwischen Standort A und Standort B jeder Standort eine eigene Datenbank benötigt.
10. Robustheit/Failover/Clustering-Mechanismen
11. Integration mit anderen Plattformen
12. Reporting Tools.