✉️ Saņem šito visu e-pastā. Tā vietā, lai palaistu garām kaut ko no tā, ko es rakstu savā blogā, tagad vari pierakstīties un saņemt e-pastā visu, ko es te rakstu. Tas nav bieži.

← Uz sākumu

DB abstrakcijas leijeri

2007. gada 29. jūnijā, 11 komentāri

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.

Tu atbildi augstāk redzamajam komentāram. Atcelt

Gravatar Sandy

2007. gada 29. jūnijā, plkst. 15:32

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

Gravatar laacz Autors

2007. gada 29. jūnijā, plkst. 15:33

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)

Gravatar laacz Autors

2007. gada 29. jūnijā, plkst. 15:47

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

Gravatar Danaki

2007. gada 29. jūnijā, plkst. 18:07

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

Gravatar laacz Autors

2007. gada 29. jūnijā, plkst. 18:31

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.

Gravatar actek

2007. gada 2. jūlijā, plkst. 19:14

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

Gravatar Danaki

2007. gada 3. jūlijā, plkst. 11:34

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

Gravatar Danaki

2007. gada 3. jūlijā, plkst. 11:36

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

Gravatar TrusisBannijs

2007. gada 3. jūlijā, plkst. 20:43

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