A proč nepoužít free verzi nějaké větší DB? Na Linuxu Oracle Express Edition (limit 4GB per DB, používá max 1GB RAM), na Windows MS SQL Server Express (limit 10GB per DB, používá nejvýše 1GB RAM). Když tyhle limity překročíte, znamená to, že váš projekt je stejně nejspíš zralý na standardní verzi toho DB enginu. Zaplatíte pár korun (které v té době už ze své aplikace stejně budete mít), a náklady na migraci budou nulové. Navíc mají obě tyhle DB kvalitní query optimizer, mají podporu transakcí, umí zálohovat za chodu, mají kvalitní fulltext search, nezbourají se při výpadku proudu atd.
Když naopak použijete nějaký engine typu MySQL, tak na začátku budete mít stejné náklady na pořízení DB engine (tedy nulové), ale víc problémů, a když snad jednou aplikace přeroste možnosti MySQL, budete ji muset komplet přepsat (mimo jiné protože varianta SQL použitá v MySQL je poněkud divoká). Ve výsledku to může být daleko dražší, než ten výše zmíněný přístup.
Ad „A proč nepoužít free verzi nějaké větší DB?“
Protože tahle verze není „free“ ve smyslu svobodná. Je pouze v určitých přísně omezených (časově, funkčně, výkonnostně…) případech zdarma.
Ad „Když tyhle limity překročíte… Zaplatíte pár korun“
Ono to jednak není pár korun a jednak podmínky předem neznáš – co platí dnes, za rok už nebude, některé edice produktů zaniknou, co bylo zdarma už je najednou placené, vyrojí se nová omezení např. na počet jader procesoru nebo faktický zákaz virtualizace… Takže si nemůžeš projekt naplánovat a učinit nějaké kvalifikované rozhodnutí, protože budoucnost je zcela v libovůli výrobce toho proprietárního softwaru.
Tahle obchodní politika připomíná drogového dealera, který dá (budoucímu) feťákovi první dávku zdarma – zpočátku se mu to zdá výhodné, ale pak – když se uživatel stane závislým – si to dealer mnohonásobně vynahradí.
Souhlas, to je přesně ten argument, který se musí prodiskutovat na začátku vývoje projektu. Proprietální software je skoro vždy problém.
Postavíme projekt na free verzi komerčního produktu a pak se budeme modlit, aby výrobce nepřidal kurvítka a byl hodnej, až free řešení nebude stačit a nezmení se mezitím licencování. Kord u produktů M$ by do toho šel jen blázen, stačí jen to, že minimálně polovina obchoďáků M$ se nevyzná v tom bordelu, kterému říkají licencování.
A to má nějakou souvislost s mým příspěvkem ? Nebo došli argumenty ve vaší příručce "M$ is da best" ?
Proč například projekty, které neřídí ovce, které obchoďák z M$ nakecá cokoli, používají opensource ? Nechte si mauálové rady a odpovězte s použitím vlastního přemýšlení.
Kdyby byla pravda, co M$ tvrdí, tak by neprop. sw nikdo nepoužil, kord globální hráči jako Google,FB ..
Myslím že to souvislost má. Open source produkty jsou typicky svoji funkčností i komfortem daleko pozadu za komerčními produkty. Srovnejte třeba Ubuntu s Windows, Gimp s Photoshopem, OOo s MS Office, (null) s Exchangem atd. Jedinou výhodou open source pro firmy je nulová pořizovací cena.
Internet je specifické prostředí. Pořizovací náklady jsou důležitější než cokoliv jiného. Proto ISP, LAMP-bastlíři apod. často používají open source. Google i Facebook pocházejí z tohoto prostředí. A mají s tím mimochodem řadu problémů - vizte Facebook a HipHop for PHP, Cassandra, HBase a spoustu dalších projektů které museli napsat. Technicky by bylo možné Google i Facebook od začátku provozovat na technologiích Microsoftu (nebo třeba Oraclu). Nakonec na MS technologiích jedou live.com, godaddy.com, comcast.com a řada dalších, včetně české alza.cz. O situaci *uvnitř* firem se pak vůbec nemá smysl bavit; open source tam hraje marginální roli.
Pro úplnost je třeba dodat, že problémy mají i ti, co jedou na MS technologiích. Kdyby Google nebo Facebook měl jet na MS, tak by tady zřejmě vůbec nebyly - bo MS internet technologie nebyly ze začátku skoro vůbec použitelné - což říká pamětník, který zažil staré IISko a stará ASP - vůči kterým bylo PHPko a Apache zlaté.
Ad „Ještě jsem ale neslyšel, že by někdo musel z důvodu výkonu psát překladač ASP do C++“
Protože když dělá něco většího (ne intranet pro pět zaměstnanců), tak má buď dostatek soudnosti a MS technologii vůbec nezačne používat, nebo ji použije a zlomí mu to vaz, takže na psaní nějakého kompilátoru do C++ vůbec nedojde.
Ve světě komerčních řešení by se to dalo popsat jako vendor lock-in. Napíšete něco na PHP+MySQL, myslíte si že to bude stačit. Pak z toho vyroste obluda typu Facebooku, výkon nestačí, a máte problém. Můžete komplet zmigrovat na jiné prostředí (třeba ASP.NET nebo JSP), ale to je *velmi* drahé, protože byste musel všechno přepsat. Nebo můžete "jen" napsat nějaký menší projekt, kterým problém zalepíte. A pak "jen jeden" další projekt, a pak další...
Řešení od MS jsou široce používaná i na webu. A jak jsem psal, uvnitř firem je open source marginální záležitostí.
Určitý segment firem skutečně nepoužívá open source - ale dneska už to spíš vyjímka - je minimum firem, kde nemají linuxový server a vlastně i ten Postgres nebo MySQL dneska nejdu skoro všude. Aktuálně se migruje z Accessu a z FoxPro - takže i malé kanceláře, které typicky jely na MS dnes už částečně používají O.S.
Nicméně internet běží z 95% na Open Source a proprietární software je marginální záležitostí - myslím tím systémový sw - databáze, operační systém, jazyky, vývojová prostředí, ...
Docela hezký přehled si člověk může udělat na základě anket
Ještě nikde jsem neviděl uvnitř firmy MySQL nebo PostreSQL server, a to jsem těch firem prošel velikou spoustu. Linux se občas najde, typicky po migraci z nějakého profi UNIXU. Sníží se tím náklady, a adminy je možné snadno přeškolit na Linux.
95% čeho? Například eshopy a webové portály jedou často na komerčním SW. Samozřejmě stránky instalatéra Ládi jsou spolu s dalšími deseti tisíci stránkami umístěné na serveru postaveném zapékáním šrotu v troubě podle návodu z root.cz, tedy dokud to celé neshoří. Tam by cena Windows Web Edition mohla i několikanásobně převýšit cenu HW :)
http://www.root.cz/clanky/stavime-domaci-server-ze-supliku/
Pokud open source poskytuje dostatečnou funkcionalitu a je za ním fungující komunita tak cena je jenom jednou z výhod. U Postgresu máte patche opravující chyby do několika dní - díky tomu, že máte k dispozici zdrojáky, tak můžete zjistit v čem je problém - nikoliv usuzovat na základě chování - komunikaci a podporu dostanete od vývojáře, který danou funkcionalitu psal.
Pro firmy, které dokáží toto zužitkovat, je to přínosem - pro firmy, které to zužitkovat nedokáží je výhodou cena.
Přínos je vždy relativní a subjektivní - pro mne byl přechod na Linux a gnome přínosem - dostal jsem k dispozici konečně fungující terminál, jednoduchý a funkční systém a konečně jsem nemusel řešit viry. A v Gnome 2 jsem si mohl naskinovat dle libosti. Přechod na Postgres z MSSQL byl nádhera - konečně jsem měl pořádné uložené procedury a zbavil jsem se 8KB limitu na datové typy.
To souvisí spíš s minimálním počtem instalací. Kdybyste měli stejný počet zákazníků jako MS nebo Oracle, tak by zákazník podporu prvního stupně určitě nemohl dostat od vývojáře aplikace, protože to by ti vývojáři nikdy nemohli stíhat. Funkční komunitu najdete i okolo produktů MS a Oracle. Dostupnost zdrojáků sice není nic proti ničemu, ale když má DB engine problém, tak DB admin chce support, a ne několik měsíců studovat zdrojáky :D (nehledě na to, že DB admini často C neumí)
Windows si můžet také naskinovat podle libosti. Viděl jste WindowBlinds? Jsou k dispozici od roku 1998, umí to mimo jiné animované skiny. Za mě fuj :/, ale kdo si chce hrát, dobře mu tak.
Ad „Dostupnost zdrojáků sice není nic proti ničemu, ale když má DB engine problém, tak DB admin chce support, a ne několik měsíců studovat zdrojáky :D“
Jenže ve světě svobodného softwaru taky nemusí studovat zdrojáky – najme si na trhu někoho, kdo to udělá za něj. Vtip je v tom, že těch dodavatelů je víc a navzájem si konkurují – zákazník má na výběr, konkurence tlačí na snižování cen a zvyšování kvality. Nemusí tedy čekat, až si na něj někdo z MS milostivě udělá čas.
Budete se divit, ale i ve světě komerčního SW vám může podporu poskytovat firma, které aplikaci nenapsala. A může vám dát i garanci doby vyřešení problému. Naprostá většina případů technické podpory totiž končí bez zásahu do zdrojáku aplikace, a k jejich řešení není třeba přístup ke zdrojáku. Když už taková potřeba vyvstane, tak holt váš poskytovatel supportu musí využít svou smlouvu s autory aplikace.
Ad „ale i ve světě komerčního SW“
V první řadě by bylo dobré rozlišovat komerční a proprietární… pak se můžeme bavit dál.
Ad „i ve světě komerčního SW vám může podporu poskytovat firma, které aplikaci nenapsala“
Podporu ve smyslu „jak se co nakliká/nastaví“ sice poskytovat můžou, ale to jsou věci, které si člověk může najít sám na Internetu.
Ovšem podporu ve smyslu oprav chyb, prioritního dopsání potřebné funkcionality, úprava produktu tak, aby šel integrovat se zbytkem mého systému atd. – to nikdy poskytnout nemohou – na tyto činnosti má faktický monopol původní dodavatel (jednak tím, že si syslí zdrojáky, a jednak restrikcemi v licenčních podmínkách). U proprietárního softwaru konkurence na této úrovni neexistuje – ty jako zákazník jsi v pasti a nezbývá ti než držet hubu a platit (nebo všechno zahodit a začít úplně znova).
Oracle i MS mají free verze svých DB k dispozici již léta, a ty podmínky se nikdy neutahovaly. Právě naopak. MSDE měl limit 2GB na DB a workload governor. SQL Server Express 2008 měl limit 4GB na DB, a verze 2010 má 10GB na DB. A i kdyby SQL Server 2012 z nějakého těžko představitelného důvodu neměl free verzi, nic vám nebrání dál používat poslední free verzi po dobu mnoha dalších let (MSDE byl podporován 9 let).
Mějme tyto scénáře:
A. Budoucí velké DB enginy budou mít verzi zdarma, a vy se vejdete do limitů. Oproti MySQL je to výhra, protože toho engine umí víc, je daleko lépe optimalizovaný, a má lepší nástroje.
B. Budoucí velké DB enginy NEbudou mít verzi zdarma (což j VELMI nepravděpodobné), a vy se vejdete do limitů. Zůstanete příštích mnoho let na poslední free verzi DB engine, a pak jednou možná migrujete. Bylo by to pořád jednodušší než při migraci z MySQL, protože Oracle i MS používají "standardnější" variantu SQL. Navíc po těch X letech už bude aplikace stejně tak stará, že ji můžete přepsat. Podotýkám že tahle varianta je spíš hypotetická.
C. Do limitů se nevejdete, tj. máte projekt velikosti řekněme eshopu alza.cz. Koupíte tedy plnou verzi velké DB, nebo si od někoho pronajmete kus SQL serveru (umí to skoro každý ISP). Ani jedno vzhledem k velikosti vašeho businessu není (a ani v budoucnu nebude) nijak zásadně drahé. Alternativně můžete použít nějaký workaround: rozdělit data do více linkovaných DB, nainstalovat více instancí.
Kdybyste ovšem měl DB této velikosti na MySQL, musel byste aplikaci dávno komplet přepsat pro jiný DB engine (zvlášť pokud jde o typickou LAMP patlárnu). To by bylo řádově dražší.
Argument ohledně "free" mi připadá spíš ze světa politiky než businessu.
Jeste dodam, ze krome Oracle a MSSQL ma cost-free verzi i DB2 a vubec nejmensi restrikce ma free verze Informixu. On ten "free" SW zase nema az takove vyhody, jak by se mohlo na prvni pohled zdat. Realne jako prosty uzivatel nemate vliv ani na OS produkty.
Ja treba jeste pouzivam MySQL ver. 4.0. Verze 4.1 prinesla takovy chaos se znakovyma sadama, ze nemam sanci svoje databaze upgradovat.
jj, na MySQL se sice hodně nadává (taky jsem si s ní užil), ale to je tím, jak je rozšířená. Pak někteří lidé žijí s iluzí, jak je Oracle něco božského, protože s ním nikdy nepřišli do styku. Přitom tam je to úplně stejné. Taky jsme měli rozvrtanou databázi, kde bylo „rozbité kódování“ (klasický nesoulad mezi tím, jak je tabulka deklarovaná a co je v ní skutečně uložené). Nebo ty jejich JDBC ovladače… to si firma zaplatí X milionů za licence nebo podporu a Oracle si ani během několika let nenajde čas na opravu nahlášené chyby. Škoda mluvit… to už by se dřív zákazník naučil programovat a opravil si to sám, kdyby od toho ovšem byly zdrojáky.
Přiznám se, že neznám nikoho, kdo by používal Express edice - proč asi?
"Navíc mají obě tyhle DB kvalitní query optimizer, mají podporu transakcí, umí zálohovat za chodu, mají kvalitní fulltext search, nezbourají se při výpadku proudu atd." - přesně, totéž umí Postgres, který je zdarma - bez omezení - a v případě, že by Vám databáze nestačila, tak můžete nasadit 64bit a využít servery s 256G RAM - můžete použít servery s 32 nebo 64 CPU - cena hw Vás vyjde levněji než cena licencí.
XE edice měly smysl v době, kdy O.S. databáze byly podstatně slabší než dnes - tj cca před 10 lety. Dnes už osloví pouze firmy a zákazníky, kteří jsou zavedení na MS nebo Oracle technologii. Začínat nový projekt, tak jej rovnou navrhnu tak, aby efektivně používal cache a share nothing architekturu - tím velice efektivně a velice lacino dostanete výkon dostatečný pro globální aplikace bez nutnosti použít extrémně komplexní a extrémně drahé aplikace.
Pokud jde o výběr mezi MySQL a PostgreSQL, je to myslím celkem jednoduché :)
Složitější je to v případě kdy aplikaci kupujete. Většina firem (dodavatelů i zákazníků) jede buď MS nebo Oracle. BTW minimálně ta kvalita query optimizeru je u PostgreSQL slabší než u velkých DB.
Když tam nasadím PostgreSQL, mám tohle zajištěné také, bez limitů, zadarmo a svobodné.
Ty limity jsou absolutně směšné a vhodné tak pro studenta (který se zaháčkuje o to dřív).
Obečně "free" verze komerčních DB (a nejen db) jsou určené jen k tomu, že až se ten projekt dostane do fáze překročení těch limitů, tak už nezbyde vůbec žádná reálná možnost, jak dál pokračovat, než zaplatit (výpalné). Je to generátor peněz a zaháčkování zákazníka na jednom produktu a dodavateli.
Já nejsem proti používání velkých DB - pokud firmy a zákazníci mají tyto technologie adaptované, tak ať je používají - no trochu jsem u státních zakázek, kde se jedná o zbůhdarma vyhozené peníze - které kolikrát nejsou adekvátní dodanému výsledku.
Jsem ale proti idealizaci expres edicí - kdy dodavatelé nachytají zákazníka na nízkou cenu (zdarma), ale už při prvním provozu se ukáže, že pro několik málo uživatelů to nefunguje. A pak také se budu vymezovat proti tvrzení, že jedinou výhodou open source produktů je cena. Sám jsem používal MS technologie v devadesátých letech a po roce 2000 - jiné tady v ČR dostupné nebyly - byl jsem jeden z prvních, kdo programovali ve VBA a v .NETu - a jelikož jsem dělal ve firmách, které byly blízké MS, tak jsem měl přístup k celému portfoliu MS. A dobře si pamatuji, co jsem zažil s VB, ASP, MSSQL, vbscriptem. Tyto technologie se zlepšovaly ale nijak konzistentně - něco bylo brutálně špatné a nestabilní bez jakékoliv změny, něco bylo výborné. V živé paměti mám, jak MS několikrát zahodil rozjetou technologii a nutil firmy do migrace. Zažil jsem jak lokální sítě byly těžce zavirované kvůli děravosti MSSQL a NT - to je deset let zpátky. Takže na řeči, jak se korporace starají o své zákazníky a dodávají jim špičkové produkty, jsem možná přecitlivělý.
NoSQL DB mají relativně úzkou oblast využití - mám je ale raději než ORM a docela dobře se doplňují s relačními DB.