DB abstrakcijas leijeri
- 2007.06.29. 14:45
- Techy
Veicu testus ar dažiem datubāžu abstrakcijas leijeriem. Testa būtība bija vienkārša – pieslēdzamies DB (mysql šai gadījumā), atlasām 10 ierakstus, ciklā tos nolasām, atslēdzamies no DB. Ar katru draiveri/klasi to veicu 10 identiskus testus ar 5 minūtes ilgu pauzi starp katru no tiem. Katrā testā šīs darbības norādītajā secībā tika atkārtotas 1000 reizes.
- PEAR DB
- Lai arī morāli novecojis, šo izmantoju ieraduma pēc. Testēju gan mysql gan mysqli draiverus.
- PEAR MDB2
- Rekomendētākais DB abstrakcijas veids.
- PDO_mysql
- Runā, ka iekš PHP 5.1 PDO būs iekšā. PHP dabistiskais DB abstrakcijas veids.
- ADOdb
- Lielās ar to, ka ir pats ātrākais datubāžu abstrakcijas leijeris. Diemžēl, nepiedāvā iespēju izmantot tik ļoti ierasto objektu notāciju, operējot ar rezultātu laukiem.
- mysql_* un mysqli_*
- Jautrībai paņēmu un palaidu šo visu arīdzan ar iebūvētajām mysql/mysqli funkcijām.
Testos izpalika Zend freimworka datubāžu adapteri (PDO_mysql un mysqli), jo tie nestrādāja (pie atslēgšanās no DB PHP mira ar segfaultiem, bet pie pieslēgšanās jamais lamājās par nespēju piekļūt protected īpašībām).
Šiem testiem ir tikai teorētiska un tīri karmiska nozīme. Mili un mikrosekundēs mērāmā starpība ir absolūti nenozīmīga WEB aplikācijām. Tiem, kam ātrums ir svarīgs, attiecīgās vietas jau nu nebūs iekš PHP. Un galu galā – lētāk ir iegādāties vēl vienu serveri, nekā cīnīties par nieka sekundes daļām, lai beigu beigās jebkurā gadījumā nāktos iegādāties vēl vienu serveri. Labi, nu jau 80% no servera.
Protams, ka lēnākais ir arī vecākais – PEAR DB (izmantojot mysql draiveri). Amizanti, bet faktiski tik pat ātrs (3% lēnāks) ir MDB2. 10% ieguvuma, salīdzinot ar PEAR DB mysql, iegūsti, izmantojot to pašu PEAR DB, tikai ar mysqli. Bet tie, kam ir PHP5, var priecāties par PDO_mysql, jo viņiem tas strādās vidēji par 23% ātrāk, nekā PEAR DB mysql.
Papildināts ar ADOdb. Ātrdarbība tāda pati, kā PDO mysql un mysqli (konkrētajā gadījumā – par 2% ātrāks par pirmo un par 1% lēnāks, nekā otrais). Ne sūda. Nokļūdījos. Ātrdarbība ir par 10% labāka, nekā tā ir PEAR DB mysql. Faktiski tāda pati, kā PEAR DB mysqli.
Ā. Nuja. PHP 5.2.3 (laists caur CLI, ne apaci), DB uz citas kastes. Gan klienta, gan servera versija ir 5.0.26.
Tabuliņa ar mērījumiem (katra testa izpildes laiks sekundēs):
| PEAR DB mysql | PEAR DB mysqli | PEAR MDB2 | PDO mysql | ADOdb | mysql | mysqli |
|---|---|---|---|---|---|---|
| 10,60 | 9,68 | 10,43 | 8,80 | 9,05 | 9,47 | 8,36 |
| 10,97 | 10,24 | 10,83 | 8,24 | 8,94 | 9,10 | 8,02 |
| 10,25 | 9,28 | 9,91 | 7,72 | 9,07 | 7,87 | 7,11 |
| 9,22 | 8,38 | 9,35 | 7,62 | 9,23 | 7,79 | 7,28 |
| 9,68 | 8,73 | 9,76 | 7,66 | 9,17 | 8,61 | 7,68 |
| 10,71 | 9,99 | 10,48 | 7,96 | 8,99 | 8,64 | 7,64 |
| 10,03 | 9,49 | 9,37 | 8,34 | 10,15 | 8,98 | 7,34 |
| 11,36 | 9,512 | 10,77 | 7,97 | 9,53 | 8,47 | 7,70 |
| 11,33 | 9,52 | 10,64 | 8,40 | 9,63 | 9,53 | 7,99 |
| 10,23 | 8,94 | 10,12 | 7,58 | 9,95 | 8,61 | 7,94 |
| Vidējā (aritmētiskā) vērtība | ||||||
| 10,44 | 9,38 | 10,17 | 8,03 | 9,37 | 8,71 | 7,71 |
| % no maksimālā izpildes laika | ||||||
| 100% | 90% | 97% | 77% | 90% | 83% | 74% |
| % no minimālā izpildes laika (ja tā vienkāršāk saprast) | ||||||
| 135% | 122% | 132% | 104% | 122% | 113% | 100% |

Komentāri (11)
Hmm un ADOdb?
asdf, lūdzu.
Laacz noslinkoja :) asdf un vispaar, kursh tad to lieto, tikai kaut kadiem hibriidrisinaajumiem:)
Sandy, adodb bija spēcīgs php4 laikos. Tagad, kad tuvojās php5+, PDO jamo pogā ārā. Ātrums tāds pats, bet funkcionalitāte PDO ir labāka. Pieņemu, ka Adodb varētu būt ātrs extensijas formā, bet tā ir pieejama tikai uz win (vismaz es neatradu linux variantu)
OK. Par ekstensiju nokļūdījos. Tā anyway ir kā addons (aizvieto konkrētas koda daļas ar C kodu)
Возьми еще ADODB_lite и Propel, который часть Simfony.
Danaki, propel nav gluži salīdzināms ar manis minētajiem. Propel ir kaut kas vairāk. ADOdb_lite ir diezgan maz – 3-4% ātrāks nekā ADOdb vulgaris.
propel jau ir ORM, bet Creole (tas verķis kas sēdēja apakšā propelim) gan pie šitiem testiem derētu.
arī salīdzinājums ar testiem, grafikiem un orķestri starp propel un ezpdo būtu interesanti palasīt :)
Ну да, 3-4%, нафиг его тогда вобще писать надо было? Посмотри бенчи http://adodblite.sourceforge.net/benchmark.php.
actek, раз сравнивать ORM, тогда уж лучше сразу фреймворки, типа CakePHP против Symfony.
būtu interesanti salīdzināt ar java bāzētiem rīkiem, Hibernate vai Toplink
Ierakstīt savu sakāmo