![]() |
Datenbank: Firebird • Version: 1.0.79 • Zugriff über: über BDE
Firebird DB nach MySql portieren
Hi Leute,
ich benutze momentan bei einem Projekt die oben genannte Firebird Datenbank. Die Datenbank -Datei ist ca. 500 MB groß und es arbeitem ca. 2-10 User simultan übers Netzwerk auf der datenbank. Umso größer die Datenbank wird, desto langsamer werden die Guis die auf die DB zugreifen. Deshalb würde ich gerne mal zum Test bei mir das ganze lokal auf MySql umstellen, jetzt stehe ich aber vor dem Problem wie ich meine Firebird Datenbank nach MySql portiere. Das MySQL Migration Programm hat in der Quelldatenbank leider keine Firebird Datenbank zur Auswahl. Und jetzt die Struktur von Hand anzulegen und die Daten dann per eigenem Programm rüber schieben wollte ich eigentlich vermeiden. Hat jemand eine Idee ? Greetz DataCool |
Re: Firebird DB nach MySql portieren
Mein Mercedes, welche ich mit meinem Fahrrad ziehe, ist mir zu langsam, deshalb kaufe ich mir jetzt einen Uno. :mrgreen:
Versuche mal die BDE zu beerdigen, den sie (das Fahrrad) ist das Problem. |
Re: Firebird DB nach MySql portieren
Hi,
das die BDE das ganze ausbremst, weiß ich auch. Ich muss die Datenbank aber so oder so nach MySql portieren! Deshalb bleibt die oben genannte Frage bestehn ;-) Greetz DataCool |
Re: Firebird DB nach MySql portieren
Schau dir mal die
![]() Grüße Mikhal |
Re: Firebird DB nach MySql portieren
Hi,
sieht ganz gut aus, leider lässt sich bei dem Tool nur bei der Source-DB die Art der Datenbank auswählen. Target/Destination DB ist immer Firebied/Interbase. Greetz DataCool |
Re: Firebird DB nach MySql portieren
Entscheidend ist die MySql-Version und die wurde nicht genannt. 8) Habe mal eine FB-DB ins Internet gestellt. Provider hatte aber nur MySql 3 oder eher 4. Das ging ganz einfach. Lokal geht aber wohl genauso. Zuerst wird mit IBExpert die Tabellenstruktr mitsamt den Daten in Datei exportiert. Also auch die Data Tables auswählen. Diese Datei habe ich dann ins Internet verfrachtet. Eventuell ist es bei MySQL 5 anders, aber bei mir begann dann ein Trauerspiel (alles zusammen hat allerdings auch nur ca. 30 Min. gedauert). Das Importtool meckerte über irgendeinen Datentyp. Gut, eben ersetzen durch passenden.
Und dann gings erst richtig los. Alle Trigger rausschmeißen und die Generatoren gleich mit. Danach dann die ca. 100 SPs, glaube da war noch was mit foreign Keys. Koste es was es wolle : bei Fehlermeldung -> raus damit. Delete and forget. :gruebel: Die DB wurde dann von MySql akzeptiert ohne Fehler. Die ist heute noch im Internet zu besichtigen, aber sie ist wirklich sehr zu gebrauchen. Nämlich für nichts. :mrgreen: Würde freiwillig niemals eine FB-DB durch MySql ersetzen. Lokal schon gar nicht. Wie mkinzler sagt, die BDE ist als Flaschenhals bekannt. Glaube kaum, dass MySql da was verbessert, eher umgekehrt. |
Re: Firebird DB nach MySql portieren
Hi,
das Riesenproblem, was meine Geschihte so langsam macht, ist das ich bei meiner Firebird Version kein AutoInc habe. Weiß nicht ab welcher Version das verfügbar ist. Die Idee das ganze nah MySQL zu portieren kommt daher, das ich in ein paar Monaten mit der DB sowieso ins Web(MySQL) möchte/muss. Greetz Datacool |
Re: Firebird DB nach MySql portieren
FB unterstützt autoinc mit Hilfe von Generatoren(Sequenzen) und einem Trigger/SP
|
Re: Firebird DB nach MySql portieren
Hallo,
tja, AutoInc laesst sich ersetzen durch einen Trigger+Generator ![]() Ich denke übrigens nicht, dass die Bde eine 500 MB Datenbank langsam macht (ich habe hier eine mit ~ 1GB). Abfrage dauert 2 Sec (jaja, kommt auf die Abfrage an). Wenn ein Programm mit steigender Grösse (mehr Records) langsamer wird, macht meist der Programmierer was verkehrt. Ein paar Dinge zum probieren: - FB 1.5 oder FB 2-0 - sql-monitor benutzen - kein TTable, nur TQuery - kein select * - prepared queries - stored procedures für grössere Sachen - manuelle Transaktionen database.starttransaction / database.commit Ich gebe allerdings zu, dass ne mysql3 meist schneller im Lesen ist, das wäre mir aber bei den ganzen anderen Vorteilen egal. Ich würde erst mal feststellen, warum die App so langsam ist, sonst kann es dir passieren, dass du nach einer aufwendigen Portierung feststellst, "Die DB war es nicht" Heiko |
Re: Firebird DB nach MySql portieren
Zitat:
|
Re: Firebird DB nach MySql portieren
Hi,
das mit den Trigger/SP schau ich mir mal an. Mein Problem bzw. der Arbeitsschritt der lange dauerd, ist eine Art Stapelverarbeitung wo ich 200-400 Datensätze per Insert in einen Table mit ca. 100.000 Datensätzen schreiben muss. Und für jeden Datensatz den ich schreibe lesen ich vorher mit : "Select max(pkfield) from tablename" Das Maximum aus und erhöhhe um 1. Greetz DataCool |
Re: Firebird DB nach MySql portieren
Aha, hab ich mirs doch gedacht. :mrgreen:
Zitat:
Falls die tatsächlich mit MySql 5 gehen (hast immer noch nicht die Version genannt :warn: ), dann geht das Trauerspiel direkt beim MySql-Hersteller weiter. Die wollen nämlich Kohle sehen, nachdem sie mit den alten kostenlosen Versionen eine gewisse Bekanntheit erlangt haben. Kenne keinen Provider, der bereit ist den geforderten Preis zu bezahlen. Das auf die paar MySql 5 Kunden umzulegen und aus 50 EUR/Mon. plötzlich Gebühren von 200 EUR zu machen ist wohl auch nicht sehr aussichtsreich. Folge : keiner hat MySql 5. Falls es einen gibt, der wird wohl sehr teuer sein. Vielleicht taucht ja mal ein bezahlbarer auf oder einer kommt auf die glorreiche Idee, FB als DB anzubieten. Habe hier übrigens eine Anleitung liegen, wie man FB ins Internet kriegt. Dazu braucht man aber einen Root-Server. Der ist zwar auch vorhanden (da liegt jetzt meine MySql-DB) aber es sind doch einige Schritte nötig, damit die DB richtig geht. Bei Dir gibts sowieso wichtigeres : die BDE eliminieren. :mrgreen: :duck: |
Re: Firebird DB nach MySql portieren
Also die Installation von FB auf einem Linuxserver dürfte nicht das große Problem darstellen, sondern die Erlaubnis das zu dürfen.
Mit was soll die Web-Version entwickelt werden? |
Re: Firebird DB nach MySql portieren
Hi,
eigener Windows Root-Server, habe auch noch MS-SQL Enterprise zur Verfügung und MySQL 5. Die Lizenzen sind nicht das Problem. Greetz DataCool |
Re: Firebird DB nach MySql portieren
Dann würde ich MSSQL nehmen oder FB manuell installieren.
|
Re: Firebird DB nach MySql portieren
Hallo DataCool,
das mit dem select max() ist hoffentlich nur ein Scherz !! siehe meinen Thread "viele Generatoren auf einmal "holen"" Bei meinem Link (ibphoenix) ist auch der Code der StoredProc. Ein Generator ist ein 32bit (Dialect) der 64bit Integer, der mit gen_id einfach ausgelesen/erhöht werden kann. mit select gen_id(generator_name,200) wird der Generator im 200 erhöht die neue Zahl und die 199 davor stehen als prim key für inserts zur Verfügung. Heiko |
Re: Firebird DB nach MySql portieren
Endlich. Ich glaubs trotzdem nicht. :mrgreen: Der Kerl hat ja alles zur Verfügung. Dann fange doch endlich an. Wie es geht habe ich bereits geschrieben. Schiebe die Rohdaten doch mal rüber ins Internet. Da sogar Trigger unbekannt sind dürfte es sich lediglich um kleinere Anpassungen handeln und deine DB läuft auf MySql 5. Die MySql-Lizenzfrage ist damit allerdings noch lange nicht geklärt !! Oder soll die DB nur im Internet laufen ?
Uff, roter Kasten geht wieder. @Hoika : glaube Du bist im falschen Film. :mrgreen: |
Re: Firebird DB nach MySql portieren
Hallo Hansa,
wieso ? ;) Ich bekomme für jeden neuen/alten Firebird-Nutzer ein Bonbon. Heiko |
Re: Firebird DB nach MySql portieren
Hi,
die DB soll nachher nur noch im Inet laufen ! Bin schon dabei zu portieren ;-) Allerdings codde ich mir jetzt zum portieren doch ein kleines Prog, den wenn ich die Tablestrukturen incl. Daten exportiere, darf ich nicht nur die Datentypen ändern, die " entfernen sondern auch bei jedem Float Wert "," durch "." ersetzen. Greetz DataCool |
Re: Firebird DB nach MySql portieren
Hi,
bin ich zu blöd ?
SQL-Code:
Dynamic SQL ErrorCREATE GENERATOR "GGEF_BUCHUNGEN"; CREATE PROCEDURE SP_NEW_KEY_GEF_BUCHUNGEN RETURNS (ID INTEGER) AS BEGIN ID = GEN_ID(GGEF_BUCHUNGEN, 1); END SQL error code = -104 Unexpected end of command Statement: CREATE PROCEDURE SP_NEW_KEY_GEF_BUCHUNGEN RETURNS (ID INTEGER) AS BEGIN ID = GEN_ID(GGEF_BUCHUNGEN, 1) |
Re: Firebird DB nach MySql portieren
Hallo,
womit erzeugst du die SP ? das "" beim Generator sollte weg. Das sind 2 Anweisungen, also 2 Queries. Benutzt du eine Scipt-Komponente ? Dann muss das so aussehen: SET TERM ^ ; CREATE PROCEDURE bla AS BEGIN Gen_id ; END ^ SET TERM ; ^ Heiko |
Re: Firebird DB nach MySql portieren
Hi,
ich benutze die IBConsole(Interactive SQL). Den Generator habe ich vorher seperat erzeugt, dieser wurde auch erfolgreich erstellt(oben nur die Meta-Daten vom Generator zur Vollständigleit). Aber das :
SQL-Code:
^^ Und das schlägt mit oben genannter Meldung fehl !
CREATE PROCEDURE SP_NEW_KEY_GEF_BUCHUNGEN RETURNS (ID INTEGER)
AS BEGIN ID = GEN_ID(GGEF_BUCHUNGEN, 1); END Greetz DataCool Nachtrag: Mit der Term ^ Geschichte ist das Create jetzt durchgelaufen !!! |
Re: Firebird DB nach MySql portieren
Hi,
kann ich die SP nicht wie bei MySQL mit :
SQL-Code:
In einer ganz normalen Query ausführen ?
CALL SP_NEW_KEY_GEF_BUCHUNGEN
Gretz DataCool |
Re: Firebird DB nach MySql portieren
Doch, nur wie ein ganz normaler Query:
SQL-Code:
Select * from <SP-Name>(<Params>);
|
Re: Firebird DB nach MySql portieren
Hi,
ok das funktionniert, allesdings bekomme ich als Rückgabewert nur ein Spalte ID mit Wert "null". Der Generator zählt aber hoch ! Greetz DataCool |
Re: Firebird DB nach MySql portieren
SQL-Code:
CREATE PROCEDURE SP_NEW_KEY_GEF_BUCHUNGEN RETURNS (ID INTEGER)
AS BEGIN ID = GEN_ID(GGEF_BUCHUNGEN, 1); suspend; END |
Re: Firebird DB nach MySql portieren
Hi,
dickes dankeschön an alle ! Greetz DataCool |
Re: Firebird DB nach MySql portieren
Hi,
doch noch einne dumme Frage : Wie ändere ich den Wert des Generators per SQL ? Greetz DataCool |
Re: Firebird DB nach MySql portieren
SQL-Code:
oder über dier Funktion GEN_ID()
Set Generator <name> to <wert>;
|
Re: Firebird DB nach MySql portieren
:dp: :hello:
Nochmals danke an alle |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:43 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 by Thomas Breitkreuz