Tam je zbytečný mít nějakej obří databázovej systém.A ty takové věci provozuješ na nějakých 486 počítačích nebo jiných šunkách, že potřebuješ něco extra light? Mně spíš přijde zbytečné se rozčilovat s MySQL, když můžu nasadit něco robustnějšího (a stále open source) s větší rozšiřitelností do budoucna. Protože výkon ušetřený odlehčenou DB je na dnešním železe zanedbatelný.
databází, která běží na nějakým intranetu, má 5 tabulek a nad sebou webovou aplikaci, kterou navštíví pár desítek lidí denně. Tam je zbytečný mít nějakej obří databázovej systém.Jasně, že se najdou případy, kdy je potřeba šetřit každou desetinu procenta výkonu, pak si třeba napíšeš/přepíšeš vlastní DBMS. Ale ve většině případů (jako např. ten, na který reaguji) není výkon to nejdůležitější (železo je levné a předimenzované) a klade se větší důraz na funkcionalitu, bezpečnost, dostupnost, rozšiřitelnost v budoucnu, cenu vývoje (drahá práce programátorů)... IMHO všelijaká odlehčená řešení přinesou z dlouhodobějšího hlediska víc škody než užitku.
Pro Vás jsou všechny databáze relační servery? Usuzuji tak ze zmínky o triggerech, pohledech, uložených procedurách a funkcích, které jsou třeba u embedded aplikací no-brainer, protože pak ta data prostě máte při ruce a všechny jmenované věci máte v dolní vrstvě aplikačního kódu.
Píšete, že jste dlouholetý vývojář. Dělal jste někdy více, než jednoduché aplikace. :-) Nemám na mysli velké versus malé, spíš jednoduché versus složité. Pak byste zjistil, že třeba databáze pro EDA software, storage adresářové služby, storage pro search engine a podobné věci mají úplně jiné nároky. V tu chvíli Vám žádný Oracle nepomůže.
Dlouholetí vývojáři některých typů aplikací zase "vědí", že "relační databáze jsou na nic". Samozřejmě že to není pravda a relační databáze na něco jsou. Jsou na spoustu věcí, dokonce bych řekl, že takových devadesát procent aplikací se do nich bez problémů narve. Jenže ty vlastnosti, jaké mají, mají jen díky hloupoučkému datovému modelu. (Nebo spíš metamodelu? :-)) Ten když člověku vystačí, tak nemusí sahat jinam, ale když se do něj nevejde, a potřebuje takové věci, jako složitější algoritmy (stromy, grafy...) nebo vysoký výkon, tak opravdu nemá smysl lámat data přes koleno a cpát je do tabulek. Případně je tu zase ta oblast "jednoduché a malé" a pak ten MetaKit nebo Tokyo Cabinet pořád bude jednodušší řešení, protože se kvůli tomu nemusí instalovat server, a je to v daném režimu i rychlejší. Někdo holt patří do těch deseti procent.
Dokumentace k Interbase 6 tvrdí, že Interbase 6 je na stroji třídy Pentium Pro použitelná pro zhruba sto padesát uživatelů používajících "běžné interaktivní aplikace" (asi aplikace typu POS a podobně). Nepředpokládám, že by výkon Firebirdu od té doby nějak výrazně poklesl. Sice tedy nějaké funkce přibyly, ale zase na druhou stranu vylepšili optimalizátor, takže by to mohlo být tak nějak nastejno. Aspoň pár uživatelů by určitě na 486ce mohl zvládnout. :-)
Jinak, pokud jde o "odlehčené databáze" (asi to mělo být spíš "specializované"?), věřím, že určitě smysl mají. Ale musíte vědět, co potřebujete a proč to tak děláte. :-) Jinak můžete třeba při nevhodném použití DataDraw nebo Tokyo Cabinetu místo SQL databáze pohořet úplně stejně, jako když u jiných aplikací zase místo DataDraw nebo Tokyo Cabinetu použijete SQL databázi. :-)
Pokud máte třívrstvou aplikaci, pak často přistupuje k celé databázi jeden proces. ... Jinak zvláštní, že sqlite se na webové projekty běžně používá, takže někde budete mít v úvahách asi chybu.Zajímalo by mě, kde vidíš ten přínos* při tomto použití sqlite oproti "klasické" třívrstvé architektuře s běžnou serverovou relační databází (MySQL, PostgreSQL, Oracle...), kdy se použije connection pooling a nemusím řešit z kolika procesů kam přistupuji a jestli dělám zápis nebo "jenom" čtení a tohle všechno za mě řeší middleware a vyspělý SŘBD. Neříkám, že nejde napsat webovou aplikaci nad sqlite, ale nějak vidím jen ty nevýhody a přidělávání si práce, než nějaké přínosy. Snadl leda, že bych chtěl jako webový server použít PDA :-) *) pokud myslíš, že je to přínosné.
To kde je problem pro nasazeni je v podstate situace kdy do jedne db zapisuje třeba 10 uživatelů najednou a dalších 10 z ní čtou. I kdyby tato situace nikdy nenastala, musí se řešit cosi jako hlídaní kolizí. A všude sem se dočetl / bylo mě sděleno že na toto prostě není SQLite stavěnej.Nemá cenu vymýšlet nějaká obskurní řešení, na web prostě je potřeba SŘBD, který podporuje víceuživatelský přístup - tudíž o jednouživatelských, byť kvalitních, databázích nemá cenu uvažovat. Vraťme se ale k původnímu tématu: předpokládejme, že máme MySQL, nějaký průměrný dnešní HW a běžnou webovou aplikaci. Co nám přinese přechod na odlehčené MySQL, které je osekané o spoustu funkcí? IMHO prakticky nic. Naopak nám ještě omezí možnosti do budoucna, zkomplikuje další rozvoj aplikace. Pro další rozvoj bude potřeba změnit DBMS, místo aby stačilo připsat trigger, nebo využít jinou pokročilejší funkci databáze. Když už uvažovat o změně, tak spíš směrem nahoru - třeba PostgreSQL. Ale taky si může člověk naběhnout, jako se to stalo mně s Drupalem - musel jsem se vrátit k MySQL, protože PostgreSQL nebylo dostatečně kvalidně podporované (jádro trochu fungovalo, ale hodně důležitých modulů bylo ušitých na míru MySQL).
To rozhodně nesnižuje jeho kvality - spíše asi naopak, ale musím říci, že pokud by existoval nějaký SQLite server - ve smyslu serverová nadstavba pro klient-serverový režim, myslím že by MySQL velmi rychle předběhla.V čem by ho předběhla? Ve výkonu, který dnes kvůli předimenzovanému HW hraje často velmi malou roli? V kvalitě? Tam možná, ale přechod z MySQL na "SQLite Server" by většinou* znamenalo přepsat aplikaci - což je jednak hodně práce a jednak, když už to přepisuju, tak to můžu přepsat na jiný DBMS, který už teď existuje a je dostatečně prověřný praxí. *) pokud si autor nedal tu práci a nenapsal aplikaci přenositelnou, nepoužil něco jako JDBC případně nějaké ORM atd. (Na což velká část PHP kodérů dlabe a používají funkce specifické pro MySQL)
Mezi námi, proč tedy se velice slušně uplatňuji při optimalizaci velmi přetížených databází, které spolu s velmi výkonným hw nestačí?Asi hlavně proto, že někdo neumí psát selekty, nebo ta databáze měla mizerného architekta, což znamená špatný návrh tabulek, chybějící nebo špatné indexy atd. Optimalizovat se dá kde co od sqlite po Oracle, ale změnou DBMS* se těžko ušetří tolik výkonu, jako změnou v datovém modelu a přístupu k datům (bez ohledu na DBMS). V tomhle jsou právě lepší ty vyspělejší SŘDB oproti těm odlehčeným, protože skýtají prostor pro pozdější zlepšování a optimalizace - funkce, které zpočátku vypadaly zbytečné se nám najednou mohou hodit. Zatímco u těch odlehčených SŘDB se člověk už na začátku pohybuje na hranici jejich možností. *) např. z MySQL na nějaké odlehčené MySQL očesané o potřebné funkce, nebo snad na sqlite