DBMSe -> prevayler
Ludger Keitlinghaus
- software
Hi,
es gab ja hier kuerzlich eine kleine Diskussion ueber Datenhaltungen und auch zur Fragestellung "Welche Datenhaltung ist fuer ein Forum die optimale?".
Hat mich inspiriert mal ein wenig zu recherchieren.
Was ist E.E. von
http://www.prevayler.org/wiki.jsp
zu halten?
Gruss,
Ludger
Moin!
Was ist E.E. von
http://www.prevayler.org/wiki.jsp
zu halten?
Zitat aus der "skeptical FAQ":
http://www.prevayler.org/wiki.jsp?topic=PrevalenceSkepticalFAQ
---schnipp---
Do you mean I can simply have my objects in RAM and forget all that database hassle?
That's right.
Are you crazy? What if there's a system crash?
To avoid losing data, every night, or in any reasonable period, your system server saves a snapshot of all business objects to a file using plain object serialization.
---schnapp---
Genau das tut das Forum derzeit mit den Postings.
---schnipp---
What about the changes occurred since the last snapshot was taken? Won't the system lose those in a crash?
No. All commands received from the system's clients are converted into serializable objects by the server. Before being applied to the business objects, each command is serialized and written to a log file. During crash recovery, first, the system retrieves its last saved state from the snapshot file. Then, it reads the commands from the log files created since the snapshot was taken. These commands are simply applied to the business objects exactly as if they had just come from the system's clients. The system is then back in the state it was just before the crash and is ready to run.
---schnapp---
Und daran arbeitet CK mindestens gedanklich, wenn nicht sogar schon codierend.
Und was die auch von dir aufgeworfene Frage angeht, ob nicht eine Datenbank "besser" wäre: Die Aussage der von dir verlinkten Seite ist irgendwie ziemlich eindeutig:
---schnipp---
Performance
Queries with Prevayler are more than 9000 times faster than querying Oracle through JDBC.
Queries with Prevayler are more than 3000 times faster than querying MySQL through JDBC.
---schnapp---
Und genau das was der Grund, für das Forum eben gerade KEINE Datenbank zu verwenden. Das mag auf der aktuellen Hardware vielleicht nicht mehr so entscheidend sein, aber auf dem alten Server war es definitiv entscheidend.
- Sven Rautenberg
Hi,
ja, ist ein interessantes Produkt. Da werden, wie bei einem RDBMS serialisierte Objekte gehalten, trockenerweise im Arbeitsspeicher des Rechners. Was ich noch nicht ganz verstehe ist, wie Datenverlust effizient unterbunden wird, denn die Jobs werden ja vor der Ausfuehrung in eine Datei gespeichert. Dazu noch die regelmaessigen Speicherdumps. Aber gut, die Performance scheint schon ganz OK zu sein.
Genau das tut das Forum derzeit mit den Postings.
Ja, in der voellig verhunzten Diskussion ist ja leider das Argument, dass es bei _einem_ Forum eben doch Entiateten gibt, die miteinander in Beziehung stehen (Nutzer, Sitzungen, Rechte, Relationentabelle_Nutzer_Rechte, Themenbereiche, Beitraege u.s.w.) und auf eine ganz flache Art und Weise zwar performant aber eben datenseitig nicht ganz richtig abgebildet werden.
Eine ernsthafte Konkurrenz fuer OODBMSe scheint das Produkt, das auf den Namen prevayler hoert, allerdings zu sein.
Der genannte Beitrag hat mir immerhin geholfen zu vestehen, was von Administratorenseite gemeint gewesen ist. I.p. Performance und so.
Gruss,
Ludger
Hi,
ja, ist ein interessantes Produkt. Da werden, wie bei einem RDBMS serialisierte Objekte gehalten, [...]
'wie bei einem OODBMS' war gemeint.
Gruss,
Ludger
Moin,
Was ich noch nicht ganz verstehe ist, wie Datenverlust effizient unterbunden wird, denn die Jobs werden ja vor der Ausfuehrung in eine Datei gespeichert. Dazu noch die regelmaessigen Speicherdumps.
Wie kann es sein, dass du etwas nicht verstehst was du im nächsten Halbsatz erklärst? Gespaltene Persönlichkeit?
Ja, in der voellig verhunzten Diskussion ist ja leider das Argument, dass es bei _einem_ Forum eben doch Entiateten gibt, die miteinander in Beziehung stehen (Nutzer, Sitzungen, Rechte, Relationentabelle_Nutzer_Rechte, Themenbereiche, Beitraege u.s.w.) und auf eine ganz flache Art und Weise zwar performant aber eben datenseitig nicht ganz richtig abgebildet werden.
Ach, jetzt auf einmal traust du dich Beispiele für Entitäten zu geben die du siehst und für relevant hältst? Na gut, dann kann ich dir ja jetzt endlich antworten und erklären warum ich da keine nutzbringend einzusetzenden Relationen sehe: Sitzungen gibt es (da HTTP) schonmal gar nicht, das war ein Brainfart deinerseits. Die Nutzer und die Beiträge stehen in keiner Beziehung (hier[tm], anderswo ist das anders). Rechte, gut, da sieht das fast ein bisschen anders aus, meinetwegen gibt es zwischen Nutzern und Rechten eine Beziehung, eine 1:1-Beziehung (ist das so?), man schreibt die Rechte also direkt dorthin wo man auch die Nutzerdaten stehen hat. Themenbereiche stehen hier ebenfalls nicht wirklich mit Beiträgen in einer Beziehung, das ist nur ein weiteres Textfeld in den Beiträgen. Es war sogar mal so dass da drinstehen konnte was will. Über die Beiträge und deren Beziehung untereinander hat Christian ja schon genug erzählt.
Der genannte Beitrag hat mir immerhin geholfen zu vestehen, was von Administratorenseite gemeint gewesen ist. I.p. Performance und so.
Du meinst http://forum.de.selfhtml.org/archiv/2004/9/89740/#m541766 hat dir dabei nicht geholfen? Hattest du nicht selbst wenigstens passiv anklingen lassen, dass du was davon verstündest? Solltest du tatsächlich mit einer einfachen Komplexitätsbetrachtung überfordert sein? Nagut, ich zeig's dir. Ist nicht schwer, du musst nur ein bisschen addieren und multiplizieren (das kannst du doch?):
Nehmen wir an, ein direkter Speicherzugriff würde 1 kosten, ein Speicherzugriff über einen Index kostet dann ca. 5 bis 10 (Hash berechnen, damit in den Index gehen, Element holen, vergleichen, ggbf. nächstes Element holen). Das Parsen und Optimieren einer SQL-Anfrage würde ich mit wenigstens 100 bis 1000 ansetzen (in Token zerlegen, auf die Grammatik matchen, beteiligte Feldnamen raussuchen, diverse Bedingungen überprüfen, Rechte überprüfen, Indices raussuchen, herausfinden wie die Query schnellstmöglich abgewickelt wird, etc.). Nehmen wir weiter an, der Thread würde n Beiträge enthalten (das ist eine Variable, damit kommst du doch klar?).
Für Datenstrukturen im RAM ergibt sich damit eine Zeitkomplexität[1] von ca. 5 + 1*n, für das RDBMS ca. 100 + 5*n[2]. Verstanden? (Preisfrage: Für welche n ist das RDMBS schneller?)
[1] Da sind noch Aktionen dazwischen die ich nicht berücksichtigt habe, wie das Kopieren aus dem Speicher in den Antwortbuffer. Das müssen aber beide Implementationen machen, würde sich also eh am Ende 'rauskürzen'.
[2] Man beachte dass ich hier zugunsten des RDBMS die jeweils kleineren Zeiten meiner Schätzung gewählt habe.
Hi,
Was ich noch nicht ganz verstehe ist, wie Datenverlust effizient unterbunden wird, denn die Jobs werden ja vor der Ausfuehrung in eine Datei gespeichert. Dazu noch die regelmaessigen Speicherdumps.
Wie kann es sein, dass du etwas nicht verstehst was du im nächsten Halbsatz erklärst?
Dein Problem ist, dass Du mich nicht verstehst bzw. nicht verstehen willst. Ich wuerde mir wuenschen, wenn ich Deinen Mist nicht mehr lesen muesste.
Vielleicht habe ich mich nicht optimal ausgedrueckt, aber mit 'effizient' habe ich gemeint "ohne signifikante Performanceeinbussen". Mr.Check gibt mir halbwegs recht: http://app.mr-check.de/a31db05310e9661a316a6a618b708208/v2.0/Mrcheck.php?CID=tanto1&SB=effizient
Gespaltene Persönlichkeit?
Zeckenartiges beleidigendes Verhalten dieser Art verbitte ich mir.
Ach, jetzt auf einmal traust du dich Beispiele für Entitäten zu geben die du siehst und für relevant hältst?
Gewoehn Dir dieses Verhalten wirklich ab.
Na gut, dann kann ich dir ja jetzt endlich antworten und erklären warum ich da keine nutzbringend einzusetzenden Relationen sehe: Sitzungen gibt es (da HTTP) schonmal gar nicht, das war ein Brainfart deinerseits.
Ich beschrieb die Anforderung "Forum" im Allgemeinen und Dein Hinweis darauf, dass es diese 'da HTTP' nicht gibt, erfuellt mich mit Bitternis.
Die Nutzer und die Beiträge stehen in keiner Beziehung (hier[tm], anderswo ist das anders).
Soso, damit habe ich genug Dummes gelesen. Erstmalig breche ich ein Beantworten eines Postings beim Versuch der Beantwortung ab. Wenn Du einfach nicht kapierst, dass man mit IT relevante Sachverhalte der Realitatet nachbaut, dann scheidest Du als mein Diskussionsparter aus. Selbstverstaendlich stehen _auch_hier_ Nutzer und Beitraege in einer Beziehung ("1:n" bzw. "n:m" um praezise zu sein).
[...]
Bitte nicht mehr auf meine Postings antworten (wg. rotzloeffelhaftem Studi-Verhalten und Soziopathentum und so).
Uebel, uebel...
Gruss,
Ludger
Moin,
Dein Problem ist, dass Du mich nicht verstehst bzw. nicht verstehen willst. Ich wuerde mir wuenschen, wenn ich Deinen Mist nicht mehr lesen muesste.
So schwer ist der Blacklisting-Filter nun auch nicht zu bedienen.
Vielleicht habe ich mich nicht optimal ausgedrueckt, aber mit 'effizient' habe ich gemeint "ohne signifikante Performanceeinbussen". Mr.Check gibt mir halbwegs recht: http://app.mr-check.de/a31db05310e9661a316a6a618b708208/v2.0/Mrcheck.php?CID=tanto1&SB=effizient
Gut, an der Stelle "effizient verhindern" habe ich tatsächlich "'besonders wirksam' verhindern" gelesen (das ist der erste Teil des Eintrags zu effizient).
Ach, jetzt auf einmal traust du dich Beispiele für Entitäten zu geben die du siehst und für relevant hältst?
Gewoehn Dir dieses Verhalten wirklich ab.
Wieso? Ist es etwa nicht so, dass du auf die Aufforderung Beispiele zu geben sinngemäß mit "och noe, keine Lust" geantwortet hast? Was ich mir in dem Kontext als "wenn ich es dir nicht sage kannst du mir auch nicht zeigen dass ich unrecht habe" zu interpretieren erlaubt habe.
Ich beschrieb die Anforderung "Forum" im Allgemeinen und Dein Hinweis darauf, dass es diese 'da HTTP' nicht gibt, erfuellt mich mit Bitternis.
Mit Bitternis, soso. ;-)
Soso, damit habe ich genug Dummes gelesen. Erstmalig breche ich ein Beantworten eines Postings beim Versuch der Beantwortung ab.
Och wie schade. Oder muß ich das wieder als Verdrängung interpretieren weil hiernach harte Fakten kommen die du nicht einfach wegreden kannst. Jaja, der gute alte jedi mind trick funktioniert in der Realität leider nicht so gut.
Wenn Du einfach nicht kapierst, dass man mit IT relevante Sachverhalte der Realitatet nachbaut, dann scheidest Du als mein Diskussionsparter aus. Selbstverstaendlich stehen _auch_hier_ Nutzer und Beitraege in einer Beziehung ("1:n" bzw. "n:m" um praezise zu sein).
Noe, tun sie nicht. Es gibt keine Beziehung zwischen den Nutzern hier und den Beiträgen (ausser vielleicht im access-log), die Felder "Name" und "E-Mail" sind einfach nur Textfelder in denen drinstehen kann was will. Die Tatsache dass die Felder bei einem eingeloggten Benutzer vorbelegt werden können hat damit nicht viel zu tun. Ja, es gibt sogar Beiträge die nicht von eingetragenen Benutzern verfasst werden - und das nicht zu knapp - stell dir das mal vor! Das ist die Realität (hier, wie gesagt), und wenn man sie nachbaut wird man feststellen dass die Relation Name/email:Beitrag eine 1:1-Relation ist.
Bitte nicht mehr auf meine Postings antworten (wg. rotzloeffelhaftem Studi-Verhalten und Soziopathentum und so).
Ich lasse mir von niemandem das Antworten verbieten. Schlimmstenfalls werden meine Antworten von einem Moderator gelöscht, aber irgendwie glaube ich nicht so richtig dass das in diesem Fall passieren wird.
Uebel, uebel...
Also ich find es eher lustig, vor allem deine Reaktion. ;-)
Hi,
ich bin ja nicht nachtragend. ;-)
So schwer ist der Blacklisting-Filter nun auch nicht zu bedienen.
So schlimm war es auch wieder nicht, was da von Dir kam. Aber sag mir sowas besser nicht im RL - wegen der hohen Backpfeifenverdaechtigkeit meine ich. ;-)
Gut, an der Stelle "effizient verhindern" habe ich tatsächlich "'besonders wirksam' verhindern" gelesen (das ist der erste Teil des Eintrags zu effizient).
Du arbeitest leider immer mit der Abstraktion, die mir ein allerduemmstes Wesen unterstellt.
Wenn Du einfach nicht kapierst, dass man mit IT relevante Sachverhalte der Realitatet nachbaut, dann scheidest Du als mein Diskussionsparter aus. Selbstverstaendlich stehen _auch_hier_ Nutzer und Beitraege in einer Beziehung ("1:n" bzw. "n:m" um praezise zu sein).
Noe, tun sie nicht. Es gibt keine Beziehung zwischen den Nutzern hier und den Beiträgen (ausser vielleicht im access-log), die Felder "Name" und "E-Mail" sind einfach nur Textfelder in denen drinstehen kann was will.
Man kann, so wie ich, der Meinung sein, dass ein Forum im grossen und ganzen so funktioniert wie ein schwarzes Brett im Aldimarkt.
Oder man kann, so wie Du anscheinend, anderes im Sinn haben.
Manche Foren sind tatsaechlich so der Realitaet nachgebildet, wie Du angibst. Allerdings gehen dann manche Sachen eben nicht, bzw. "nicht so gut". Das liegt daran, dass z.B. die nateurlichen Entitaeten der Realiatet und deren Relationen eben nicht nachgebildet sind. Das ist ja auch nicht schlimm, ich habe ja auch weiter oben diesen Thread versucht zu nutzen eine etwas hoehere Bearbeitungsebene unserer kleinen Fragestellung zu erreichen. Leider bisher vergeblich.
Die Tatsache dass die Felder bei einem eingeloggten Benutzer vorbelegt werden können hat damit nicht viel zu tun.
Also ich persoenlich wittere schon, dass da Identifikation (Tabelle 'Sitzungen'), Authentifikation (Tabelle 'Nutzer') und Autorisierung (Tabelle 'rechte') am Start sein koennte. Aber gut, ich gebe es zu, dass ich weiss, dass es hier keine Sitzungen gibt. Aber schoen waer's doch, oder?
Ja, es gibt sogar Beiträge die nicht von eingetragenen Benutzern verfasst werden - und das nicht zu knapp - stell dir das mal vor! Das ist die Realität (hier, wie gesagt), und wenn man sie nachbaut wird man feststellen dass die Relation Name/email:Beitrag eine 1:1-Relation ist.
Moment, das ist nicht die Realitaet. Der richtige Moment fuer eine kleine Schulungsmassnahme: die Realitaet gleicht in etwa dem schwarzen Brett des Aldi-Markts (natuerlich nur, wenn ich recht habe, was ich aber der Einfachheit halber mal unterstelle ;-), das was moeglicherweise in einigen Foren am Start ist, ist eine unvollstaendige, eigentlich tendenziell unbrauchbare (wenn ich mal auf die Weiterentwicklungsfaehigkeit solcher Konstrukte anspielen darf) Nachbildung der Realitaet, eine Relationen unterstuetzende Loesung (ein RDBMS ?) wuerde die Realitaet besser nachbilden. Und die Nachbildung der Realitaet steht dann wieder in der Realitaet - ist doch faszinierend. Also, was ich zum Ausdruck bringen moechte, dass das was "laeuft" zwar real ist aber immer nur eine Nachbildung der Realitaet ist. Verweisen sollte man darauf im Sinne von "Siehe, das ist die Realitaet!" besser nicht. ;-)
Ich fuehle mich eigentlich verpflichtet das schwarze Brett des Aldimarkts jetzt noch etwas naeher auszufuehren, aber da bitte ich Dich um guten Willen und die Vorstellungskraft, dass es da schon gewisse Aehnlichkeiten zu einem Forum gibt.
Bitte nicht mehr auf meine Postings antworten (wg. rotzloeffelhaftem Studi-Verhalten und Soziopathentum und so).
Ich lasse mir von niemandem das Antworten verbieten. Schlimmstenfalls werden meine Antworten von einem Moderator gelöscht, aber irgendwie glaube ich nicht so richtig dass das in diesem Fall passieren wird.
Na, da lasst mich mal hier nicht Moderator werden. ;-)
Uebel, uebel...
Also ich find es eher lustig, vor allem deine Reaktion. ;-)
Seit dem Ende der legendaeren Duos Laurel & Hardy bzw. Hauser & Kienzle und dem vorlaeufigen Ende der Harald Schmidt-Show hat man ja heutzutage im Bereich der anspruchsvollen Unterhaltung leider nicht mehr so viel zu lachen.
Gruss,
Ludger