To by mě zajímalo, jak budou řešit zpětnou kompatibilitu. No asi nijak. Takže pokud použiji novější verzi databáze, tak mi přestane starý program fungovat. Bezva...
Drizzle nedovolí implicitní kartézský součin
Poměrně záludnou ale typickou copy/paste chybou v SQL dotazech je nechtěný kartézský součin. Záludnost této chyby spočívá v tom, že se projevuje se značným zpožděním – někdy i po několika letech provozu. Jeden z nových a velice aktivních forků MySQL Drizzle řeší tento problém velice přímočaře (a já jim v tom fandím) – implicitní kartézský součin v SQL dotazech neumožňuje.
Tato zprávička byla zaslána čtenářem serveru Root.cz pomocí formuláře Přidat zprávičku. Děkujeme!
Dále čtěte…
- MySQL: Master - Slave replikace 26. 4. 2012 0:00
- Oracle představil MySQL 5.6 13. 4. 2012 10:22
- Virtuální hosting pomocí Proftpd a MySQL 16. 3. 2012 12:43
- Vyšel phpMyAdmin 3.4.9 23. 12. 2011 13:52
- Google App Engine rozšiřuje nabídku o SQL databázi 10. 10. 2011 8:03
Zpětná kompatibilita?
celé vláknoRe: Zpětná kompatibilita?
celé vláknoStarý zápis povolený je. Jen nesmí vést ke kartézskému součinu. Osobně jsem ještě neviděl kód, který by nebyl zabugovaný a kartézský součin obsahoval. A k tomu ještě Drizzle kompatibilitu řešit nemusí - je kompatibilní sám se sebou a ještě teď ještě nevyšla finální verze. Co se týče funkcionality, tak se Drizzle pohybuje někde mezi 4 a 5 verzí MySQL. Takže apriori není kompatibilní s žádnou verzí MySQL, přičemž ovšem typické www aplikace by neměly mít zvláštní problém.
Re: Zpětná kompatibilita?
celé vlákno1. U produkčního kódu máte víceméně pravdu, ale u testů a datových analýz je "plný" kartézský součin běžně používán. A protože žijeme v době, kdy testy jsou součástí produkčních kódů...
2. Chyb s kartézským součinem tak jak je ukázán ve článku je minimum. Taková chyba bude unikat vaší pozornosti jen pokud v jedné z těch tabulek bude právě jeden záznam. A pak je otázkou, proč taková tabulka vůbec existuje. Drtivá většina (víceméně všechny) chyb s kartézským součinem je neúplná reference. Mou noční můrou byl uživatel ERP systému, který provedl duplicitní příjem a ručně přepsal číslo šarže na již existující. Teprve v té chvíli se ukázalo, že pole "release_no" skutečně smysl má a "batch_no" nemusí být vždy unikátní (což evidentně řada programátorů nevěděla). To je právě ta chyba, která 10 let nevystrčí růžky. A s tou si Drizzle beztak neporadí :-)
Re: Zpětná kompatibilita?
celé vláknoJá mám trochu jinou zkušenost. Řada programátorů si všimne problematických řádků, ale jednoduše je eliminuje klauzulí DISTINCT - dokonce jsem narazil na programátora, který DISTINCT psal všude - preventivně. Jinak bezezbytku souhlasím s tím, že neúplná reference je vážnější problém. V prostředí, pro které je Drizzle zamýšleno si myslím, že blokování kartézského součinu (při starém zápisu) má smysl. Velká část programátorů webu SQL nerozumí, používá jej mechanicky - a tohle může pomoci.
Re: Zpětná kompatibilita?
celé vláknodokonce jsem narazil na programátora, který DISTINCT psal všude
vona je v tomhle se SQL legrace, místo toho, aby DISTINCT byl default i pro SELECT (protože v relační db by to tak mělo bejt), tak je to default jen u UNIONu

