![]() |
AW: Fragen bezüglich Performance von Firebird in einer Anwendung
Hallo,
ja, Multi-Insert wäre eine schönes Sprach-Feature. Zitat:
|
AW: Fragen bezüglich Performance von Firebird in einer Anwendung
Zitat:
Dass jede DB anders ist bzw. funktioniert liegt in der Natur der Sache. Hier wäre mal bei fb record versioning zu nennen. Solche konzeptionellen Unterschiede bringen Vorteile und teilweise auch Nachteile, und wie so oft, sind bestimmte technische Ansätze ein Kompromiss... ich hab ja schon von der Tischdecke geschrieben. Z.B. sowas wie Locking und MS SQL, ich habe zuletzt auch noch von der 2014er "tolle" Sachen gehört. Manchmal glaube ich MS hat die ganze dot Net Datenhaltung nur erfunden, um seine DB zu schonen. Jedes System hat offenbar seine Schwächen, manche sogar kostenpflichtige. Die Argumente: Ich bin Entwickler, Firebird Nutzer, und sehe bestimmte Defizite bei der Implementierung der Datenbank Ich bin Berater, Firebird Fachmann und sehe bestimmte Defizite bei der Nutzung bzw. dem Entwickler-KnowHow Freibier oder "nem geschenkten Gaul, schaut man nicht ins Maul"! Man kann natürlich kritiklose Dankbarkeit erwarten, wenn man etwas verschenkt. Oder man hält Geschenke für selbstverständlich. Beides Extrempositionen, die hier durchklingen, aber nicht wirklich ernst gemeint sein können. Also wieso entschuldigt man sich, wenn man die Dinge so benennt, wie man sie sieht? Das hier ist doch kein Kindergarten. Der entscheidende Punkt ist doch, die Juckepunkte darzustellen und zu lernen. |
AW: Fragen bezüglich Performance von Firebird in einer Anwendung
Zitat:
|
AW: Fragen bezüglich Performance von Firebird in einer Anwendung
Zitat:
So seh ich das, das eine widerspricht dem anderen nicht und auch keineswegs den Erkenntnissen der vorherigen Beiträge anderer Autoren. Und bewahrt mich davor, das mir irgendjemand irgendeinen 20 Jahre alten Delphi/Interbase Code von mir unter die Nase hält und sagt, modernisiere das mal bitte eben nach deinen aktuellen Erkenntnissen. Aber es gibt eben sehr große Unterschiede in meinen Projekten von vor 20 Jahren und der generellen Architektur, mit der ich heute meine Software aufbaue. Vor 25 Jahren war der Weg auch in meinen Augen super, weil man unglaublich schnell zum funktionierenden Prototypen kam. Das lief aber schon sehr schnell an Grenzen, die mich zwangen, vieles zu hinterfragen. Da ich in den letzten 25 Jahren eben auch oft als externer Softwarearchitekt bei mehrjährigen Projekten gebucht wurde (meistens für 40-80 Tage pro Jahr) und dort mit entsprechenden Teams, bestehend aus Mitarbeitern des Kunden, die Möglichkeit hatte, immer wieder Projekte komplett neu aufzubauen und den immer wieder einen neuen Stempel aufzudrücken, war es für mich immer ein guter Weg, meine Kenntnisse aus der vorherigen Projekt zu verbessern und für die erkannten Probleme neue Lösungsstrategien aufzubauen. Diesen Vorteil haben die meisten Entwickler in Ihren Angestelltenverhältnissen leider meistens nicht, sondern sind vom eigenen Projekt oder den Vorgaben der Unternehmensleitung im System gefangen. Wir sind übrigens in Berlin auf der Firebird Konferenz auch mit dabei |
AW: Fragen bezüglich Performance von Firebird in einer Anwendung
Zitat:
|
AW: Fragen bezüglich Performance von Firebird in einer Anwendung
Zitat:
Der Inhalt wird per Upload in eine Tabelle mit einem Blob Feld inserted und dann per Execute Procedure mit Hilfe diverse Substring, Position, oder eigener Stored Functions serverseitig auseinander genommen , in Execute Statements übersetzt und von da in die realen Tabellen verteilt. Die Rohdaten sind dabei ca 150.000 zeilen und das geht auf dem Weg wesentlich schneller als man denkt, insbesondere weit schneller als 150.000 Einzelinserts. Ein anderer Weg: Du baust deine Execute Blocks lokal wie vermutlich auch schon jetzt in deiner Clientumgebung zusammen und berücksichtigst einfach nur die Limits, die Firebird da hat (maximal 32k source pro Block, maximal ca. 250 inserts oder max ca. 125 updates oder max ca. 83 update or inserts, etc. Die Blöcke kannst du dann mit einem Trenner deiner Wahl zum Beispiel auch in einen Blob auf den Server hochladen oder dort mit einer ähnlichen SP (siehe oben) dann serverseitig mit einzelnen execute statement der aufgeteilten execute blocks ausführen. Läuft alles in einem Transaktionskontext und rollback ist rollback etc. Wir haben in Ibexpert scripten eine Möglichkeit eingebaut, einen Reinsert zu integrieren, was ein simpler Ersatz für das vorher benutzte voll ausformuliert Insert ist. Das macht Scripte schon wesentlich kleiner. Und in einer für unserer Zwecke erweiterte Firebird Version auf Basis der 304 ist ein Vorabparser eingebaut, der Sqls serverseitig auseinandernehmen kann, bevor die firebird internen Instanzen den SQL Text überhaupt sehen. Mit dem ist auch deine Multirow insert syntax möglich, aber aus welchen gründen auch immer ist das aktuell nicht in der Public Firebird Version implementiert, obwohl die eben als Datenpumpe durchaus für kleinere Scripte sorgen kann. Technisch ist aber der weg upload als blob und execute auf dem Server nicht so viel anders und auch nicht wirklich langsamer, weil egal wie der text lautet, in dem man die Operationen zum Server sendet, am ende physikalisch inserts auf der db gemacht werden. Und auch da am Ende meine Zustimmung: Die von dir erwähnte Syntax für Massenimporte bietet viel potential und ist bei der Implementation für die Firebird Entwickler sicherlich keine Raketenwissenschaft, aber da es durchaus gleichschnelle Workarounds gibt, scheinbar auch nicht ganz so wichtig, aber es steht dir offen, das bei Bedarf im Bugtracker vom Firebird Projekt als Feature einzutragen oder falls schon vorhanden, deine Interesse zu bekunden, das du es für Wichtig hältst. Wenn es aber darum geht, möglichst schnell daten in die Datenbank zu bekommen, oder auch Daten aus der Datenbank zu exportieren, dann nimm besser ein Verfahren über external file tables, damit geht das auf schnellen Servern problemlos 50000-100000 import/export records pro Sekunde!! |
AW: Fragen bezüglich Performance von Firebird in einer Anwendung
Zitat:
|
AW: Fragen bezüglich Performance von Firebird in einer Anwendung
Dabei handelt es sich um die BLOBID. Die eigentlichen Daten werden ja getrennt von der Tabelle gespeichert.
|
AW: Fragen bezüglich Performance von Firebird in einer Anwendung
Zitat:
Einfache Installation! Ne ZIP auspacken, Batch starten, drauf isser - und runter genau so schnell. Wer mal MSSQL deinstallieren musste, weiß, dass Microsoft das vermutlich nicht ernsthaft vorgesehen hat :-D Bekomme ich MSSQL incl. EXE auf einen USB-Stick für den Außendienst? |
AW: Fragen bezüglich Performance von Firebird in einer Anwendung
Hallo,
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:01 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz