Autor Téma: MS SQL - FireBird  (Přečteno 10026 krát)

Online Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 2873
  • Karma: 27
    • Verze Delphi: XE7 professional
MS SQL - FireBird
« kdy: 29-09-2012, 11:42:46 »
Stále ma máta, aby som v novom projekte opustil MS Access a zvolil skutočnú DB  :) Najviac sa mi pozdávajú MS SQL a FB.

Som v tom úplný laik a mám v tom poriadny zmätok. Momentálne si potrebujem vyjasniť dve otázky, aby som sa rozhodol. Samozrejme chcem, ako sa to teraz nosí, "free" riešenie. To sa netýka nejakého základného nástroja na správu DB (hlavne vytváranie tabuliek a SQL príkazov) v grafickom prostredí.

1) Inštalácia DB alebo DB servera u mňa a zákazníka. U zákazníka to musí zbehnúť automaticky. Teraz pozerám do FB a som z toho vedľa. Ale to založím samostatnú tému, ak sa rozhodnem pre FB.
Rozhoduje inštalácia nejakým spôsobom o rozhodovaní pri voľbe DB?

2) Možnosť výberu "server" oproti "embeded" verzia.

a - Pri FB by nemal byť problém. Buď inštalujem server, alebo nie a tu len dokopírujem patričné knižnice. DB sa nijakým spôsobom nemení.

b - MS SQL. Každá verzia má inú DB - nie sú navzájom zameniteľné (?).  To ma dosť odrádza. A hlavne, pri mojom pokuse o pripojenie k embeded DB som nepochodil DXE2.

Viem, že už som v minulosti s podobným otravoval, ale prosím o zľutovanie. Chcem urobiť definitívne rozhodnutie, či do toho vôbec ísť. A ak áno, tak ktorým smerom.

Ešte otázočka. Podporuje DXE2 formát Access 2007? Alebo mi stačí 2003?
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline Fala

  • Plnoletý
  • ***
  • Příspěvků: 168
  • Karma: 2
    • Verze Delphi: XE2
    • Software pro poskytování technické podpory
Re:MS SQL - FireBird
« Odpověď #1 kdy: 29-09-2012, 13:22:14 »
MSSQL je dokonalá databáze a jde tam pomocí SQL příkazů udělat prakticky cokoliv. Nicméně si myslím, že je náročnější na instalaci a s Embed nemám zkušenosti. PS. do 2GB za DB je ve verzi Express taky grátis.

FB je pervektní, jednoduchá instalace a to včetně Embed. Nicméně mám v současné chvíli takový drobný problém http://forum.delphi.cz/index.php/topic,13104.0.html

Nelze obecně říct, co je lepší, proto to nechávám na zákazníkovi. Já podporuji obě

Online Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 2873
  • Karma: 27
    • Verze Delphi: XE7 professional
Re:MS SQL - FireBird
« Odpověď #2 kdy: 29-09-2012, 13:45:14 »
V mojom prípade, ak by došlo k vývoju programu (robím základné veci, aby som zistil, či to zvládnem), tak zákazníka DB zaujímať nebude.

Inštaláciu musím zvládnuť ja. Zákazník nebude vedieť o DB, a vlastne o PC ako takom, nič. Má to byť na správu domov (SVB). Včítane jednoduchého účtovníctva (toho sa obávam najviac, aj keď to bude prísne len pre potreby SVB) ale so zápismi na pozadí ako v podvojnom. Špekulujem nad viacnásobným prístupom k DB. Vzhľadom na účel nemusím riešiť veľkosť DB. 1 - 2 GB nenaplnia ani za celý život.

Mnohí zákazníci budú používať výhradne sólo prístup. Z PC na ktorom to bude nainštalované.

PS: Rozhodol som sa, že je načase rezať frajera  :o
« Poslední změna: 29-09-2012, 13:47:00 od Stanislav Hruška »
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline pepak

  • Guru
  • *****
  • Příspěvků: 1290
  • Karma: 28
    • Pepak.net
Re:MS SQL - FireBird
« Odpověď #3 kdy: 29-09-2012, 16:48:25 »
1) Inštalácia DB alebo DB servera u mňa a zákazníka. U zákazníka to musí zbehnúť automaticky. Teraz pozerám do FB a som z toho vedľa. Ale to založím samostatnú tému, ak sa rozhodnem pre FB.
Rozhoduje inštalácia nejakým spôsobom o rozhodovaní pri voľbe DB?
Může a nemusí. U MSSQL například musíš počítat s tím, že to bude muset instalovat někdo, kdo tomu rozumí, a nebo kdo je schopný sledovat úchylně dlouhý návod. Naproti tomu u Firebirdu zaprvé můžeš použít Embedded verzi, kdy není potřeba instalovat vůbec nic (prostě k aplikaci přidáš jedno DLL a je nainstalováno), nebo použiješ kompletní instalaci, kterou lze v extrémním případě shrnout do "spusťte Setup.exe a klikejte na Další Další Další až do konce". Zbytek případných úprav (nadefinování uživatelů a jejich hesel) už si můžeš udělat sám z aplikace.

Citace
b - MS SQL. Každá verzia má inú DB - nie sú navzájom zameniteľné (?).  To ma dosť odrádza. A hlavne, pri mojom pokuse o pripojenie k embeded DB som nepochodil DXE2.
Věnoval jsem zprovoznění embedded MSSQL (MSSQL Compact) dost času a došel k závěru, že musím použít third-party knihovnu. Pokud to z Delphi jde přes ADO, tak nikdo neví jak.

Osobně se mnohem víc vyznám ve Firebirdu než v MSSQL, takže bych ho z toho titulu preferoval, ale pokud začínáš a je ti to jedno, tak IMHO:

- Firebird je mnohem jednodušší na instalaci, správu a konec konců i používání. Nemáš žádná licenční omezení ("max. X uživatelů" nebo "max. X paměti"), databází si můžeš vytvořit a používat kolik chceš. Osobně si myslím, že Firebird lépe pracuje s triggery a uloženými procedurami.

- MSSQL engine toho umí mnohem víc než Firebird. Pokud to dokážeš použít a zaplatit, tak si klidně můžeš rozchodit třeba cluster. Nebudeš narážet na to, že "nejde DROPnout pohled X, protože ho někdo používá", nebudeš muset psát uložené procedury na to, abys "chci vložit do tabulky záznam s ID 1, ale jen pokud tam ještě neexistuje".

Offline pepak

  • Guru
  • *****
  • Příspěvků: 1290
  • Karma: 28
    • Pepak.net
Re:MS SQL - FireBird
« Odpověď #4 kdy: 29-09-2012, 16:50:15 »
Nelze obecně říct, co je lepší, proto to nechávám na zákazníkovi. Já podporuji obě
To je podle mě vůbec nejhorší přístup - pak nevyužíváš pořádně možností ani jedné z databází. Já vím, zákazník je pán, ale v mé realitě zákazník stejně neví, v čem se která databáze liší, a vezme tu, kterou mu doporučím.

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 1796
  • Karma: 77
    • Verze Delphi: D2007, XE3, DX10
Re:MS SQL - FireBird
« Odpověď #5 kdy: 29-09-2012, 19:05:49 »
To je podle mě vůbec nejhorší přístup - pak nevyužíváš pořádně možností ani jedné z databází. Já vím, zákazník je pán, ale v mé realitě zákazník stejně neví, v čem se která databáze liší, a vezme tu, kterou mu doporučím.

Nooo, je otazka, jestli cilem programatora je poradne vyuzivat moznosti konkretniho RDBMS  :D

My jsme v minulosti museli podporovat nekolik ruznych stroju pocinaje DB/2 na AS400 a tenkrat konce Interbasi (na te jsme to primarne vyvijeli)  navrhovali jsme to pro nejvetsi spolecnou mnozinu operaci. Byl to humus, ale bez nej by se takovej byznys nedal vubec udelat.

A ted nas ceka preklapeni projektu z ptaka ohnivaka na MSSQL, protoze se ptak ohnivak ukazuje pro byznys jako silne omezujici (chteli by oracle, a kdyz ne, tak v nejhorsim MS SQL, ale ptaka ohnivaka ani zadarmo...). A to bude zase humus, protoze jde o stovky tabulek, triggeru a SP. Zrejme jeste pridame dalsi SP a pojedeme pres jejich spolecne rozhrani jak proti FB, tak proti MS SQL.

A kdyz treba vezmes persistenci a ORM, treba Hibernate, tak tam je naprosto normalni, ze muzes vymenit typ DB, aniz bys zmenil cokoli jineho nez par radku v konfiguracnim XML... totez Python & Django...
« Poslední změna: 29-09-2012, 19:30:18 od pf1957 »

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 1796
  • Karma: 77
    • Verze Delphi: D2007, XE3, DX10
Re:MS SQL - FireBird
« Odpověď #6 kdy: 29-09-2012, 19:22:53 »
Může a nemusí. U MSSQL například musíš počítat s tím, že to bude muset instalovat někdo, kdo tomu rozumí

Je pravda, ze jsem se pred lety snazil udelat unattended instalaci MSSQL Express a musel jsem parsovat logy instalatoru, protoze se muselo osefovat, ze na stroji muze byt instalovano nekolik MS SQL. Nakonec jsme ten MSSQL zavrhli a presli na SQLite.

Ale plati ta slozitosti instalace i pro Compact server? Ja uz si to nepamatuju.

Věnoval jsem zprovoznění embedded MSSQL (MSSQL Compact) dost času a došel k závěru, že musím použít third-party knihovnu. Pokud to z Delphi jde přes ADO, tak nikdo neví jak.

To me docela prekvapuje. Asi pred dvema roky jsem si to instaloval a nejak to pracovalo - narazil jsem, ze to umi jen NCHAR & spol. tj. jen unicode a neumi SP. Ale uz si bohuzel nepamatuju, jestli jsem na to lez pres ADO nebo pres SDAC, ktere jsem pozdeji musel poridit, protoze u ADO jsem narazil (u bezneho MSSQL) na problemy s transakcemi pres vice serveru.
« Poslední změna: 29-09-2012, 19:31:09 od pf1957 »

Online Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 2873
  • Karma: 27
    • Verze Delphi: XE7 professional
Re:MS SQL - FireBird
« Odpověď #7 kdy: 30-09-2012, 13:22:43 »
Z týchto odpovedí je jasné, že voľba pre mňa môže byť jedine FB. Jeho "obmedzení" sa obávať nemusím, lebo nepredpokladám, že by som musel používať niečo extra.
Štve ma len Autoincrement, ale na ten som našiel niekoľko riešení. Ďalšie otázky budú už priamo v sekcii FB.

Veľmi ďakujem.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline Fala

  • Plnoletý
  • ***
  • Příspěvků: 168
  • Karma: 2
    • Verze Delphi: XE2
    • Software pro poskytování technické podpory
Re:MS SQL - FireBird
« Odpověď #8 kdy: 30-09-2012, 13:41:27 »
mě by zajímalo, když tak využíváte storované procedury a další specialitky, jak děláte aktualizaci těchto procedur, jak to debugujete a jak hledáte Bugy  :)
věřím, že to nějak zvládnete, ale dá to sakra práci

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 1796
  • Karma: 77
    • Verze Delphi: D2007, XE3, DX10
Re:MS SQL - FireBird
« Odpověď #9 kdy: 30-09-2012, 13:52:11 »
Z týchto odpovedí je jasné, že voľba pre mňa môže byť jedine FB. Jeho "obmedzení" sa obávať nemusím, lebo nepredpokladám, že by som musel používať niečo extra.
Tak Ptak ohnivak snad ani zadna prakticka omezeni nema. Jedine na co si vzpominam, je problematicka prace s GUID, Ptak ohnivak si to dava do CHAR(), takze se s nim neda pracovat v UDF, protoze ta dostava argument jako ASCIIZ, Jedine vylucovat hodnoty obsahujici 0x00. Absence modernejsich SQL konstrukci je stejne casto nejjednoduzsi, rychlejsi a srozumitlnejsi proceduralne prepsat do SP.

Take byval problem sehnat k nemu rozumnou konektivitu zadarmo, takze jsme kdysi koupili FIB+, a tak nevim, jak to s ni dnes nevim.

Štve ma len Autoincrement, ale na ten som našiel niekoľko riešení. Ďalšie otázky budú už priamo v sekcii FB.
No to je opruz. Standardni reseni jsou:
  • generator + before insert trigger + k insert prikazu pridat klauzuli returning
  • stored procedure pro vkladani novych zaznamu ke kazde tabulce vracejici PK

a pak mene obykla jako dopredu generovane ID a nebo jako PK pouzit GUID prevedene do Base64 bez paddingu jako char(22)

Offline pepak

  • Guru
  • *****
  • Příspěvků: 1290
  • Karma: 28
    • Pepak.net
Re:MS SQL - FireBird
« Odpověď #10 kdy: 30-09-2012, 13:55:57 »
Poté, co jsem si zvykl na Firebirdovský přístup, mi autoincrementy přijdou jako naprostá zhovadilost, samá nevýhoda a žádná výhoda (dokonce ani ten jednodušší zápis ne, protože zase musím hlídat, že do klíčového pole nesmím zapisovat, ani NULL ne).

Btw., používám ten "méně obvyklý" přístup.

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 1796
  • Karma: 77
    • Verze Delphi: D2007, XE3, DX10
Re:MS SQL - FireBird
« Odpověď #11 kdy: 30-09-2012, 13:56:25 »
mě by zajímalo, když tak využíváte storované procedury a další specialitky, jak děláte aktualizaci těchto procedur, jak to debugujete a jak hledáte Bugy  :)
věřím, že to nějak zvládnete, ale dá to sakra práci

Treba na Ptaka ohnivaka mame koupeny IBExpert, ktery umoznuje ladit/krokovat SP a umi vyrabet rozdilove skripty pro evoluci schematu. Nekdy se tomu musi rucne pomoct. A  v podstate ke kazde DB neco takoveho existuje, akorat to byva docela drahe.  Ostatne mam dojem ze primo EMB je company puvodne zalozena na takovem nastroji.

Jinak bugy se hledaji dost blbe, jako v kazde relacni DB, ktera neni postavena na flat tabulkach a pouziva trochu slozitejsi dotazy.

Offline pepak

  • Guru
  • *****
  • Příspěvků: 1290
  • Karma: 28
    • Pepak.net
Re:MS SQL - FireBird
« Odpověď #12 kdy: 30-09-2012, 13:58:13 »
mě by zajímalo, když tak využíváte storované procedury a další specialitky, jak děláte aktualizaci těchto procedur, jak to debugujete a jak hledáte Bugy  :)
věřím, že to nějak zvládnete, ale dá to sakra práci
To je zrovna jedna z věcí, které se mi líbí na MSSQL, že nemusím napřed DROPnout všechny závislosti, pak předělat proceduru a pak zase všechno naCREATEit.

Jak to dělám - no jednoduše, když potřebuju něco změnit, tak si vygeneruju skript, který všechny ty kroky udělá. Sice pak kvůli jedné blbé změně, která se projeví jen uvnitř (řekněme, že číslo zaokrouhlím na čtyři místa místo na dvě), musím provést skript o 120 příkazech, ale co už...

Online Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 2873
  • Karma: 27
    • Verze Delphi: XE7 professional
Re:MS SQL - FireBird
« Odpověď #13 kdy: 30-09-2012, 14:20:45 »
// Poté, co jsem si zvykl na Firebirdovský přístup, mi autoincrementy přijdou jako naprostá zhovadilost,
Fajn, a čo to je ten "Firebirdovský přístup". Ako jednoznačne spojím/vytvorím reláciu medzi dvoma tabuľkami. Rád sa nechám poučiť.

//Take byval problem sehnat k nemu rozumnou konektivitu zadarmo
Poväčšinou odporúčajú ZEOS

//Treba na Ptaka ohnivaka mame koupeny IBExpert,
Cena 80€ je celkom prijateľná. Už som vyhodil viac za väčšie nezmysly, ktoré som nikdy nepoužil.
Nateraz požadujem len vizuálnu tvorbu tabuliek a SQL. Pre mňa akosi SQL nie je natívne :(

Tak som zvyknutý z Access-u a viac som ešte nepotrebova. Ovšem, vždy som riešil zásadne len jeden prístup. Čo mi samozrejme vyčítali, ale tam to stačilo.

Už ho mám aj nainštalovaný. Uvidím čo z toho bude..

Predsa ešte jedna otázka. Oplatí sa mi vytvárať aplikáciu s podporou Accessu a aj FB zároveň?
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline pepak

  • Guru
  • *****
  • Příspěvků: 1290
  • Karma: 28
    • Pepak.net
Re:MS SQL - FireBird
« Odpověď #14 kdy: 30-09-2012, 14:28:31 »
// Poté, co jsem si zvykl na Firebirdovský přístup, mi autoincrementy přijdou jako naprostá zhovadilost,
Fajn, a čo to je ten "Firebirdovský přístup". Ako jednoznačne spojím/vytvorím reláciu medzi dvoma tabuľkami. Rád sa nechám poučiť.
Vytvořím si generátor:
Kód: SQL [Vybrat]
  1. CREATE GENERATOR ID
A potom si z toho generátoru mohu vytahovat neustále rostoucí čísla:
Kód: SQL [Vybrat]
  1. INSERT INTO tabulka VALUES (GEN_ID(ID, 1), ...)
Tzn. typicky to udělám tak, že si napřed z databáze vyzvednu unikátní ID něčím jako:
Kód: SQL [Vybrat]
  1. SELECT GEN_ID(ID, 1) FROM rdb$database
a pak už to číslo můžu použít, kde a kolikrát chci. Novější Firebirdy to umějí i přímo v rámci toho prvního INSERTu:
Kód: SQL [Vybrat]
  1. INSERT INTO tabulka VALUES (GEN_ID(ID, 1), ...) RETURNING tabulka_id
ale protože stále potřebuju podporovat i Firebird 1.5, který to neumí, tak tu syntaxi vůbec nepoužívám a možná jsem ji sem zapsal blbě.

Citace
Predsa ešte jedna otázka. Oplatí sa mi vytvárať aplikáciu s podporou Accessu a aj FB zároveň?
Podle mě se skoro nikdy nevyplatí podporovat víc než jednu databázi. Leda že bys chtěl DB redukovat skutečně jen na čisté úložiště bez jakékoliv inteligence, pak to smysl mít může.

 

S rychlou odpovědí můžete používat BB kódy a emotikony jako v běžném okně pro odpověď, ale daleko rychleji.

Upozornění: do tohoto tématu bylo naposledy přispěno před 120 dny.
Zvažte prosím založení nového tématu.

Jméno: E-mail:
Ověření:
Datový typ v Delphi, který má True a False: