Igazából Delphivel való egygépes adatbázis-kezelésre (tehát nem szerveres megoldásra, mert arra egyértelműen MySQL, ugye) a legjobb megoldás szerintem a Firebird. A Delphihez – jobb esetben – járó alap InterBase komponensekkel kényelmesen kommunikál, és a kész programhoz mindössze egy DLL fájlt (gds32.dll, vagy fbclient.dll), és az fdb kiterjesztésű adtabázis-fájlt kell csatolni. Létezik neki szerveres változata is, de kisebb megvalósításra az embedded verzió is tökéletesen megfelel. (Ilyenkor, mint ahogyan azt előbb említettem, nincs szükség külön programok, szolgáltatások futtatására, csak a DLL fájl elhelyezésére.) Az egyébként teljesen ingyenes rendszer egyetlen hátránya, hogy az adatbázist egyszerre csak egy alkalmazás nyithatja meg.
Ha pedig valaki be akar ruházni egy komolyabb adatbázis-kezelőre, akkor ott van az SQLManager ami ezen a téren az egyik legjobb szoftver, csak ez a potom 500 USA dolláros induló(!) árán meg is látszik.>
mcbuddha
2007. május 20. — 12:36:48
Szerintem meg SQLite. Natív, gyors (leggyorsabb?), ehhez sem kell szerver, egy fájlban van az egész adatbázis, teljesen zeroconf, 30K sornyi c-kód az egész (legkisebb?), szépen fejlesztik . És ami a legjobb: most implementálták az ADO.NET részét mono-ba.
erenon
2007. május 20. — 12:38:23
Ilyenkor mindig megmosolygom a wines rendszereket. Beágyazandó dll-ek satöbbi. Unix alaőú rendszeren nagy előny, ha felraksz egy csomagot, akkor az már ~mindenki számára elérhető, és nem lesz a gépedre telepítve 100x ugyanaz a lib.
mcbuddha
2007. május 20. — 12:41:28
[re=30302]erenon[/re]:Ezek a .dll-ek a .NET keretrendszerhez kellenek IMHO, olyanok mint a shared library-k, vagy a header-állományok.
Maerlyn
2007. május 20. — 12:48:52
[re=30302]erenon[/re]:nem kell százszor telepíteni ezt sem, berakod a system32-be és látja minden app.
Amúgy egyetértek mcbuddha-val: sqlite.
gaz
2007. május 20. — 13:11:20
delphi egy szemet, pascal meg egyenesen szornyu
saxus
2007. május 20. — 13:46:08
“(tehát nem szerveres megoldásra, mert arra egyértelműen MySQL, ugye)”
MySQL max egy részleges SQL támogatással kiegészített tárolómotor. Ha már [i]adatbázis-kezelő[/i] kell, akkor legalább PostgreSQL.
És az még mindig messze van a nagyobbacskáktól…
Mefi
2007. május 20. — 23:36:29
[re=30301]mcbuddha[/re]: régebben láttam, próbálgattam, valami miatt nem jött be (tényleg nem tudom mért).
[re=30313]saxus[/re]: persze, komolyabb rendszerekre nem jó a MySQL de azért azt sem kell leszólni, jócskán megfelelő a tudása, ahhoz képest meg pláne, hogy ingyenes. De olyan megoldásokra, ahol viszonylag kevés adat van, de mégis adatbázisra építkezik (pl. egy nyilvántartó alkalmazás), szerintem a MySQL és a Firebird is jó. 🙂 Bár a Delphi adatbázis-kezelését eléggé szidják, a beépített BDE-t legalábbis nagyon.
saxus
2007. május 21. — 15:41:37
[re=30343]Mefi[/re]: azért megjegyezném, hogy komolyabb halmazműveletekkel még mindig gondban van és még mindig nem tud pl belső select-t. Meg még sorolhatnék pár dolgot, ami az SQL’99-ben benne van és nem tudja a MySQL. (Bár az 5-s verzió elérelépés, az tény.)
Egyébként nem ingyenes, ha kereskedelmi célokra akarod használni, akkor bizony jócskán fizetős.
Mefi
2007. május 21. — 15:46:42
[re=30364]saxus[/re]: jah, azt néztem, hogy kereskedelmi célokra kemény pénzeket kérnek el érte, de ez valahol érthető. A Firebird-öt pont ezek miatt imádom, igazából csak egy dolog hiányzik, az autoincrement.
Maerlyn
2007. május 21. — 16:50:25
[re=30364]saxus[/re]:mármint ilyen selectet pl? select * from valami where id in (select id from másikvalami);
Hogyne tudna, rendszeresen használom is.
saxus
2007. május 21. — 17:52:29
[re=30376]Maerlyn[/re]: bocs, visszaszívom, tényleg tudja. Akkor folytatom: mező kezdőértéknek függvény kimenet? pl.:
postdate INT(10) UNSIGNED DEFAULT UNIX_TIMESTAMP()
[re=30365]Mefi[/re]:, tud, csak ne a MySQL saját megoldásából indulj ki:
CREATE GENERATOR phpbb_attachments_gen;;
SET GENERATOR phpbb_attachments_gen TO 0;;
CREATE TRIGGER t_phpbb_attachments_gen FOR phpbb_attachments
BEFORE INSERT
AS
BEGIN
NEW.attach_id = GEN_ID(phpbb_attachments_gen, 1);
END;;
Ezt a phpbb sql sémájábül kopiztam. Igazából nekem kicsit fura megoldás, de alapvetően pgsql-ben is hasonlóan van megoldva.
Ott vagy csinálsz egy SERIAL tipusú mezőt (ilyenkor a pgsql megcsinálja hozzá a megfelelő sequence-t, default értéket beállít, stb.) vagy csinálsz kézzel egy sequence -t (előnye, hogy te adod meg, hogy mettől meddig milyen közökkel léptetheted) és DEFAULT nextval(sequencianev) -t használsz.
Mefi
2007. május 21. — 19:23:00
[re=30382]saxus[/re]: igen, meg is csinálja a generátort, aztán nem esz meg semmit, NULL-ra hibát ír, másra pedig vagy létrehozza az adott ID-t, vagy csipog, hogy már létezik ilyen.
emel
2008. január 30. — 00:13:05
“A Firebird-öt pont ezek miatt imádom, igazából csak egy dolog hiányzik, az autoincrement.”
Hát az autoincrement teljesen felesleges, hiszen triggerből tökéletesen megvalósítható és még jobban kézben is tartható
Én Firebird párti vagyok, mert nincs olyan hogy “garantáltan” egyfelhasználós progi. Mi van ha mégis több user akarja használni?
A Firebird Embed erre zseniális.
Ha egyfelhasználós, akkor elegendő egyetlen DLL, ha meg többfelhasználós, akkor szervert telepíteni (ez sem olyan nagy varázslat mint sok más adatbázis kezelőnél, csupán pár file (4-5Mb) bemásolása egy alkönyvtárba és egyetlen service registrációs progi futtatása win alatt).
Szóval a progi nem is veszi észre, hogy hirtelen többfelhasználós környezetben megy 😉
eMeL