Mysql vs FB
2012-01-27T08:05:36+01:00
2012-01-30T21:54:14+01:00
2022-07-19T05:13:10+02:00
  • A PHP ORM-et biztos nem.
    Mutasd a teljes hozzászólást!
  • Az általad írt (emlék) problémákat szerintem már mind megoldották
    Mutasd a teljes hozzászólást!
  • Én is nagyon szerettem a FB-öt, csak hát mióta PHP-zok kellene hozzá valami jó ORM. De sehol égen földön. Pedig talán rácuppannék újból. Én még az 1,5-ben dolgoztam vele, de biztos csomó dolgot megoldottak azóta.

    Nekem ami nagyon nem tetszett annó benne, ha néha néha előfordult hogy egy tábla helyett egy lekérdezésből kellett dolgoznom, akkor eléggé macerásnak tűnt, hogy hozzak létre egy tárolt eljárást és akkor abból. Mióta MySQL-t használok egyetlen tárolt eljárást kellett írnom, FB alatt meg elég sokat kellett legyártanom. Például ami nagyon hiányozna az a group_concat. De az is jó, hogy a having használható group nélkül is. Például amikor egy Case direktívát használok, akkor tudok hivatkozni a kalkulált mezőre. Meg a limit is jobban bejön, mint a first, már csak az sql szabványok miatt is. Az autoincrement is sokkal egyszerűbb MySQL alatt. Amire szintén nem jöttem rá (attól még lehet hogy megoldható), hogyan lehet egy triggerben, tárolt eljárásban, vagy nézetben egy másik adatbázis tábláira hivatkozni.

    Viszont pont az autoincrement sokkal kevésbé használható mint a generátorok. Az sokszor jól jönne, hogy két táblának legyen egyedi azonosítója, ez mysql-ben nagyon rossz. A kettő kombinációja lenne az igazi. A triggerek is elég vackok MySql-ben, nem beállítható hogy insertkor és updatekor is fusson, ráadásul eseményenként csak 1 futtatható. A tárolt eljárás is sokkal egyszerűbb Firebirdben, de mint mondtam, erre egyszer volt szükségem az utóbbi 4-5 évben.
    Mutasd a teljes hozzászólást!
  • INSERT

    Fb2.1tol megy, de alap a 2.5 használata.
    Mutasd a teljes hozzászólást!
  • Symboltech-nél fb-t használunk. Eddig minden ok, triggerek müködnek embed modban is.

    Egy lépésben kinyerhetö id-k az INSERT INTO... RETURNING körül keresgélj.
    Mutasd a teljes hozzászólást!
  • Nem használok (már) Delphit, Zeos-t soha nem próbáltam...

    Gondolom nem tisztem helyetted guglizni, de talán a 3. találat! [De az első ígéretes a rövid találati szöveg szerint]

    Getting last insert id (ZEOS or SQLdb)

    "Getting last insert id (ZEOS or SQLdb)

    For Firebird (and others)
    you can use insert an return primary key in one step, with RETURNING clause.

    with DBQuery do begin
    SQL.Text := 'INSERT INTO t1 (...) values (...) returning pk';
    Open;
    Result := FieldByName('pk').AsInteger;
    end;


    Tested with Firebird 2.1.4 and fpc 2.3.1 (SQLDB)"
    Mutasd a teljes hozzászólást!
  • És ezt kezeli pl a Zeos? Mert mit sem ér az egész, ha delphiben nem kapom vissza vagy nem úgy ahogy kéne az eredményt...
    Vagy nem tudom a jól bevált gridjeimben használni, mert nem kompatibilis, hibásan vagy lassan működik :)
    Mutasd a teljes hozzászólást!
  • Még egyszerűbb, még használhatóbb, még rugalmasabb

    Firebird for winner!


    CREATE SEQUENCE someTableSeq; CREATE TABLE someTable ( ID INTEGER NOT NULL DEFAULT NEXT VALUE FOR someTableSeq, .... ) insert into someTable (firstname, lastname, address, phone, email) values ('Henry', 'Higgins', '27A Wimpole Street', '3231212', null) returning lastname, fullname, id
    Mutasd a teljes hozzászólást!
  • meg is van :)
    http://firebird.1100200.n4.nabble.com/Simplify-MySQL-migration-LAST-..
    Mutasd a teljes hozzászólást!
  • A már elkészített lib-ekben sajnos a mysql logika van beépítve:
    1. Beszúrom
    2. kiolvasom

    A fene gondolta, hogy FB-t fogok használni :D

    Azon gondolkodtam, hogy megcsinálom a last_insert_id függvényt.
    Csak kell hozzá valami amivel azonosítom ezt a szálat/kapcsolatot meg egy olyan változó amit csak ezen a kapcsolaton érek el :)
    Minden táblához hozzárakok egy triggert (már ha van) és kész.
    Így a delphi úgy látja, mintha Mysql lenne és nem kell átírnom az egészet.
    Megvalósítható? (ha igen utánajárok aminek kell csak feleslegesen nem akarok kutatni :D).
    Mutasd a teljes hozzászólást!
  • "A generátornál pedig fordítva van a művelet:
    először kiveszem az értéket (és növelem) utána használom.

    A kettő nem ugyanaz."

    Nem bizony. Azt kell, hogy mondjam, a FireBird megoldása messze a legjobb, amivel valaha is találkoztam, pedig volt dolgom egy-két RDBMS-sel. A generátorok segítségével tulajdonképpen tetszőleges feltételeken alapuló automatizált szerveroldali üzleti logikát lehet kialakítani. Te (azaz az üzleti logika) döntöd el, hogy mikor is kell növelni egy generátor értékét és mennyivel, nameg, hogy mire használod az értékét és hol használod azt (pl. az AUTOINC csak az egyik általános felhasználása). Bármikor beállíthatod egy konkrét értékre, lényegében azt csinálsz vele, amit akarsz. Lényegében én úgy tekintek a generátorokra, mint az adatbázisban globális hatókörrel rendelkező változókra, amelyeket bárhol fel lehet használni.

    A használatot illetően pedig inkább tárolt eljárás javasolt, legalábbis INSERT esetén, ekkor a visszatérési érték nálam mindig a beszúrt ID.

    Konklúzió: a generátorral létrehozott kvázi autoinkrement működés tökéletesen szimulálja a valódi AUTOINC típust, viszont sokkal, de sokkal több annál.
    Mutasd a teljes hozzászólást!
  • kb 15 éve mást sem csinálok és több ezer eladott szoftver és elégedett ügyfél után valószínűleg jól csinálom :)

    Az elsődleges szempontok: gyors fejlesztés (vagyis megszokott jól bevált eszközök) és olcsóság (ez utóbbi a termék jellege miatt).

    Ezért kérdeztem, hogy szerintetek melyiket.

    Mysql-ben így használom:
    create table x (id int autoinc stb..., nev char(20))
    insert into x set nev='Első';
    select last_insert_id();

    Ez 100%-ig biztosan a 2. sorban lévő rekord ID-jét adja vissza.

    A generátornál pedig fordítva van a művelet:
    először kiveszem az értéket (és növelem) utána használom.

    A kettő nem ugyanaz.

    De a kérdésemre akkor a válasz, hogy nem létezik ingyenes változata a mysql-hez?

    Mutasd a teljes hozzászólást!
  • Nekem az autoincrement hiányzott nagyon


    Pedig szinte az ősidőktől van az FB-ben...

    Csak úgy hívják, hogy generátor (szekvencia: FB 2)
    Mutasd a teljes hozzászólást!
  • Van autoincrement, csak nem teljesen így. Szekvenciát kell létrehozni.
    Mutasd a teljes hozzászólást!
  • Már bocs!

    Csináltál már programot adatbáziskeléssel???

    Azokat sem irigylem, akik megveszik majd ezt a dobozos software-t...

    Egyébként FireBird!!!! (+ IBExpert...)
    Mutasd a teljes hozzászólást!
  • Zeos-t használtam eddig az egész jól elboldogul.
    Nekem az autoincrement hiányzott nagyon, ha jól emlékszem kb 3 hónapja foglalkoztam vele.
    Mutasd a teljes hozzászólást!
  • A szoftvert telepítés nélkül szeretném futtatni XP-n is és Win7-en is. Egy exe plusz az adatbázis és a dll-ek.
    A hálózatosnál természetesen telepítés és beállítások szükségesek, sőt az már lehet fizetős is.

    Egy 8.000 Ft-os szoftverhez természetesen nem fognak 500-1000$-os adatbázis kezelőt venni :)
    Mutasd a teljes hozzászólást!
  • A FireBird pont jó erre. Használhatod a Delphi IB komponenseit az eléréséhez, de ha szánsz rá egy kis pénzt, akkor az IBDAC-ot ajánlom. Én ezzel dolgoztam, nagyon meg voltam vele elégedve. A mindennapi munka megkönnyítésére pedig ott van a FlameRobin.
    Az igaz, hogy az embedded nem használható hálózatban, de pl. az InnoSetup-pal könnyű olyan telepítőt készíteni, ami felrakja a FireBird-öt, ha szükséges.
    Mutasd a teljes hozzászólást!

  • Mysql vs FB

    Ez nem is kérdés. FB forever!

    Mutasd a teljes hozzászólást!
  • Mutasd a teljes hozzászólást!
  • A FireBird-t kipróbáltam, de nem nagyon tetszett

    Na most erre mit mondhatnánk...

    Pedig ez lesz a Te barátod, meg kell szoknod!

    Az FB embeded változata igaz, nem igényel telepítést, de hátránya, hogy hálózatból nem is használhatod.
    Ha elsőre nem szükséges a hálózati elérés, nyugodtan használhatod, hálózatossá tenni meg elegendő lesz a teljes változatát használni, a programod maradhat a régi, csak az elérési útvonalát változtatod.

    a felhasználónak ne kelljen semmit csinálni a telepítésnél

    Erre szolgál az általad összeállított Telepítőcsomag!

    Ha jól emlékszem, valamikor úgy olvastam itt, hogy a MySQL-t nem rakhatod a terméked mellé, azt külön kell telepíteni.
    De majd kijavítanak, ha nem így volna.

    Mutasd a teljes hozzászólást!
  • Üzleti szoftvert kell készítenem és ehhez keresek adatbázis kezelőt.
    Fő szempont, hogy telepítés nélkül is lehessen használni (Embedded vagy hogy hívják) és, ha úgy alakul hálózatról is.
    Mivel a szoftver dobozos lesz csak olyan adatbáziskezelő jöhet szóba ami ingyenes legalább is mellé tudom rakni úgy, hogy a felhasználónak ne kelljen semmit csinálni a telepítésnél.
    A FireBird-t kipróbáltam, de nem nagyon tetszett, mysql-hez vagyok szokva, az gyorsabban megy sok kész lib-em van hozzá.
    Nézegettem a mysql oldalát, hogy mi mibe kerül, de eléggé titokzatosak, tud erről valaki valamit?
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd