Uz saturu

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%

Testēšanas skriptelis.

Komentāri (11)

  1. Laiks:
    1. asdf @ 2007.06.29. 15:05, teica:
    Komentārs:

    Hmm un ADOdb?

  2. Laiks:
    2. laacz @ 2007.06.29. 15:32, teica:
    Komentārs:

    asdf, lūdzu.

  3. Laiks:
    3. Sandy @ 2007.06.29. 15:32, teica:
    Komentārs:

    Laacz noslinkoja :) asdf un vispaar, kursh tad to lieto, tikai kaut kadiem hibriidrisinaajumiem:)

  4. Laiks:
    4. laacz @ 2007.06.29. 15:33, teica:
    Komentārs:

    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)

  5. Laiks:
    5. laacz @ 2007.06.29. 15:47, teica:
    Komentārs:

    OK. Par ekstensiju nokļūdījos. Tā anyway ir kā addons (aizvieto konkrētas koda daļas ar C kodu)

  6. Laiks:
    6. Danaki @ 2007.06.29. 18:07, teica:
    Komentārs:

    Возьми еще ADODB_lite и Propel, который часть Simfony.

  7. Laiks:
    7. laacz @ 2007.06.29. 18:31, teica:
    Komentārs:

    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.

  8. Laiks:
    8. actek @ 2007.07.02. 19:14, teica:
    Komentārs:

    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 :)

  9. Laiks:
    9. Danaki @ 2007.07.03. 11:34, teica:
    Komentārs:

    Ну да, 3-4%, нафиг его тогда вобще писать надо было? Посмотри бенчи http://adodblite.sourceforge.net/benchmark.php.

  10. Laiks:
    10. Danaki @ 2007.07.03. 11:36, teica:
    Komentārs:

    actek, раз сравнивать ORM, тогда уж лучше сразу фреймворки, типа CakePHP против Symfony.

  11. Laiks:
    11. TrusisBannijs @ 2007.07.03. 20:43, teica:
    Komentārs:

    būtu interesanti salīdzināt ar java bāzētiem rīkiem, Hibernate vai Toplink

Ierakstīt savu sakāmo


XHTML: Tu vari izmantot šos tagus (un to atribūtus): <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Moderācija: Daži vārdi var gadīties, ka ir iz melnās listes (viagra and stuff). Tādi komentāri tiek premoderēti, pirms parādās lapā. Ja Tavs komentārs neparādās uzreizi, būs vien jāpagaida, līdz es jamo izlasīšu.