Az imént egy érdekes MySQL Storage Engine megjelenésével találkoztam, segítségével PHP nyelven valósíthatunk meg adatbázis tároló motort. A PHP alapú MySQL Storage Engine ötlete egy kicsit őrült (hiszen a PHP meglehetősen lassú erre a feladatra), ellenben vannak olyan lehetőségek, melyek kapcsán érdekes megoldás lehet. Például egy távoli API MySQL-es reprezentációját lehet így megvalósítani.

Nem mondom hogy a kódot valaki próbálja meg élesben használni, ahhoz egy kicsit még kezdeti állapotban van – az irány az érdekes, amit meg lehet majd esetleg csinálni a motorral ha felnő.
Kérdés lehet persze, hogy mi a fenének hozzuk be a MySQL-t a képbe, miért ne direktben PHP-ben valósítsunk meg inkább egy feladatot, ha már. Számos oka lehet egy ilyen iránynak mely miatt hasznos lehet egy ilyen motor számos hátránya ellenére:
- Mindenekelőtt a PHP kód ebben az esetben egy szerver szolgáltatásba épül be, állandóan a memóriában van, szemben egy webes PHP-val, ahol egyszer lefut, és el is felejt utána mindent. Ennek már így vannak előnyei, például hogy cache-elhetőek a lekérdezésekre adott válaszok. Persze egy memcached segítségével is meg lehet valósítani ugyanezt.
- A MySQL szerver lehet egy különálló gépen is, és nem feltétlenül csak PHP-ből használhatjuk a kódját. Vagyis kvázi távoli eljáráshívásokat is megvalósíthatunk ezzel a megoldással. Persze vannak kész szabványaink távoli eljáráshívásra.
- MySQL-en belülre hozhatunk be adatokat, és azokat kombinálhatjuk “igazi” MySQL táblákkal, támaszkodva a MySQL ezirányú képességeire. Nem tűnik rossz ötletnek egy JOIN-t rábízni a MySQL ahelyett hogy saját magunk valósítanánk meg.
- Az előző ponthoz kapcsolódva, például az Amazon S3-at (vagy bármely más, adatbázis szerű Webes API-t) tudjuk MySQL-es lekérdezéseken keresztül elérni, összekapcsolni más táblákkal. Persze nagy csodát ne várjunk, mert jellegéből adódóan ez csak limitáltan fog működni, ellenben el lehet gondolkodni a lehetőségeken.
- Az absztrakció sohasem elvetendő ötlet, egy adattárolási réteget hozhatunk be az alkalmazásba – ha az jó.
Több pontot is “persze”-vel fejeztem be, így látszik, hogy ez a motor azért eléggé öszvér megoldás. Az ilyen ötletek mozdítják viszont előre az innovációt, hiszen ki tudja kinek mi jut eszébe vagy mire tudja hasznosítani majd ezt a lehetőséget.
Ami szerintem zseniális elgondolás: http://developer.yahoo.com/yql/
Nóra: tényleg az, köszönöm a hozzászólást!
Jópofa dolog, kíváncsi vagyok, hogy találnak-e neki valamilyen tényleg hasznos felhasználási lehetőséget. Én inkább fejlesztés során tudom elképzelni hasznosnak, illetve a 3. pont lehet érdekes. Pl. tesztelés során tud programozottan válaszokat adni, nem kell egy előzetes állapotot beállítani.
1. Írhatsz PHP-ben is is daemont, de ha alkalmazásszerver irányba akarsz elmenni, akkor a Quercus nyerőbb választás. Lokálba cachelni pedig nem a legoptimálisabb memcachebe (ez elosztott cache), inkább shared memory.
4. Nem a SimpleDB-re gondoltál? (S3 storage, nem DB.)