Tetszik a bejegyzés? Iratkozz fel, oszd meg!


Webadmin rövidhírek #5

A webadmin rövidhírek sorozat keretében ezúttal is MySQL fókusz, memcached kiegészítéssel, PostgreSQL-ből is használható adatbázis proxy-val.

Mire jó a view?

A MySQL nem túl régóta használható lehetősége a view támogatás. Az eddigi munkáim során valahogy sohasem hiányzott a lehetőség, hirtelen még olyan esetet sem tudok felidézni, hogy kellett volna, de kliens oldalon megoldottam. A view-k pedig többféle érdekes dologra is használhatóak, ezeket sorolja fel a belinkelt cikk is: adat tisztításra, “döntéshozatalra”, bonyolult táblák egyszerűsítésére, adattartalmak “szebbé tételére”, stb.

Memcached Wiki

A memcached jó dolog. A belinkelt róla szóló wiki is, különös tekintettel a FAQ részekre, ahol elég jó kérdés-válasz párokat gyűjtöttek össze.

MySQL pager

Az talán senkinek nem újdonság, hogy ha a MySQL konzolban a pontosvessző helyett \G-t írunk a lekérdezés végére (így simán, két karakterrel), akkor másfajta megjelenítésben nézegethetjük a lekérdezés eredményét (ez akkor jó, ha az oszlopos nézet használhatatlan, mert sok az oszlop). Ami számomra újdonság volt, hogy az adatbázis válaszok megjelenítőjét “pager”-nek hívják, és hogy írhatunk sajátot is.

MySQL WITH ROLLUP

Egy érdekes lehetőséget biztosít a MySQL a GROUP BY használatakor, főként mikor több oszlop szerint is csoportosítunk. Én valami olyan hasznos alkalmazását tudom elképzelni, hogy több oszlop szerint csoportosítás után még HAVING segítségével leszűkítjük a kört úgy, hogy csak pár sor maradjon, olyanok, melyeket amúgy nehéz lenne összehozni egy lekérdezésben, de célszerű együtt megjeleníteni. Másik érdekes alkalmazási terület az, amikor a szerveren olyan alkalmazásunk fut ami korlátozottan engedi csak az SQL lekérdezések eredményeinek manipulációját (pl. egy lekérdezést egy az egyben képes csak megjeleníteni, és nem engedi összeadni a sorokat), így kénytelenek vagyunk mindent SQL-ből megoldani.

URL kódolás és dekódolás MySQL-ben

Ha egy SQL lekérdezés során szeretnénk egy kész URL-t előállítani, akkor jöhet jól ez az UDF, avagy User Defined Function MySQL kiegészítés, amivel a PHP-ben megszokott urldecode/urlencode függvényeket használhatjuk SQL lekérdezéseken belül is.

Myosotis Connector (MySQL & PostgreSQL)

Többször emlegettem már a különböző proxy lehetőségeket, ezekkel legfőképpen az a baj, hogy kimutatható módon lassítják az adatbázis műveleteket. A Myosotis Connector nevű proxy ezzel szemben azt ígéri, hogy gyors – a saját tesztjeik alapján gyorsabb, mint a MySQL Proxy és az uni/cluster megoldások.

2 Hozzászólás - “Webadmin rövidhírek #5”


  • GROUP BY WITH ROLLUP jó dolog, éppen tegnap használtam. Ami tetszett benne, hogy minden szuper-aggregált sort külön kiértékel és nem simán összead. A MySQL doksiban persze egy SUM()-os példa van, ahol ez nem látszik, de ha mondjuk AVG()-et vagy COUNT(DISTINCT)-et használunk akkor más a leányzó fekvése.

    Pölö: egy táblában kattintásokat számolunk és eltároljuk a datumot meg az IP-t ahonnan jött a katt.

    Ekkor:
    SELECT datum, COUNT(DISTINT ip) FROM tabla GROUP BY datum WITH ROLLUP

    esetén lehet ez a válasz:
    2008-07-14 | 30
    2008-07-15 | 35
    NULL | 57

    Utolsó sor a lényeg, hogy nem 65 van ott. És ez nekem tetszik :)

  • Hát már több éve van view. Két ténylegesen is használt usecase-t nem taglal a cikk: az egyik (talán a fontosabb) a hozzáférés engedélyezés (egy adott usernek csak egy view-t engedünk látni), a másik pedig egyfajta adapter felhasználási mód: mondjuk egy third party rendszer csak adott néven, adott formában szeretne adatokat kiolvasni, ilyekor tudunk nyujtani a meglévő sémánk felett egy view-t.

    Amire viszont vigyázni kell, hogy azért a MySQL-ben a view még olyan “mysqles”, simán előfordulhat, hogy view használata rosszabb végrehajtási tervet eredményez, mintha csak használnánk a definicióját. Ezt érdmes szem előtt tartani.

    Üdv,
    Felhő

Te mit gondolsz?