Jump to content
php.lv forumi

Bilde MySql tabulā


Recommended Posts

Vēl ieguvums ir, ja webu servē vairāki serveri, attēli ir vienā vietā, tobiš datubāzē, nevis izmētāti pa serveru failsistēmām (syncing problems).

 

Un jau minetātais vienkāršais backups. Un saglabāt attēlu datubāzē ir ātri un vienkārši — ja tas sāk radīt problēmas, var domāt tālāk par efektīvāku risinājumu.

Link to post
Share on other sites

Par datu integritāti nebiju iedomājies - iespējams tas ir viens no lielākajiem plusiem.. Esmu redzējis sistēmas kur lietotāju dzēšana notiek vienkārši izdzēšot DB ierakstu, bet par failiem uz HDD ir pofig, jo tāpat tiek izmantoti tikai kādi 10% no maksimālās atmiņas. Tā viņi tur arī paliek pūstot mūžīgi.

Link to post
Share on other sites

(╯°□°)╯︵ ┻━┻

 

Galīgi saspiedušies... 

 

Tātad - normāli, sevi cienoši, cilvēki izdala divas lietas - blob storage un META storage, jo blobs un bloba metadati ir divas atšķirīgas lietas. 

  • Blob storage - block/cloud/something vide, kura optimizēta glabāt blobus. Tā nav datubāze. Tā nav datubāze. Tā nav datubāze.
  • META storage - insert/delete (vai nu append only, vai nu append-delete) ātra DB. Šeit glabājam visu META informāciju - oriģin. nosaukums, izveides datums, etc. etc. Ja failus vajag dzēst pēc laika, dēmons fonā lasa META storage un izlasa expired failus pēc datumiem un citām dimensijām, un dara citus darbus.

Un tagad par iemeslu kāpēc: FS ir optimizētas failu glabāšanai un FS pamatā nav visa milzīgā overheed kas ir DB. DB blobus glabā nu ļoti specifiskos gadījumos. 

 

Tālāk: syncing problems, ko daGrevis minēja. Šī problēma vienkārši neeksistē. Tam domātas asinhronas operācijas, availability callbacki utml. brīnumainas un maģiskas lietas. Tas arī viss ko gribēju te piebilst. 

 

Par to kešošanu es vispār nesaprotu. Būtu jau labi redzēt kaut kādu result cache šeit, kas varētu apsvērt šito abstrakto mākslu :D

 

Kas būs tālāk, rakstam moduli uz Nginx lai vilktu statiskus failus no MySQL? Nu nē nu. 

 

So:

FileSystem => Database Engine => DatabaseDriver => PHP?Whatever => Web Server => User => :(

 

FileSystem => Web Server => User => :)

Edited by F3llony
Link to post
Share on other sites

Tā daļa par kešošanu, ko tu nesaprati, te bija viens no main pointiem.

 

Proti, dati (attēla dati arī ir dati) glabājas DB. Kad useris pieprasa konkrēto attēlu konkrētā izmērā, tad ielasa attēla datus, uzģenerē vajadzīgo bildi, iebāž kešā, padod userim.

 

Visās nākamajās reizēs uzreiz atgriež jau iekešoto attēlu no FS, ja vien nepieprasa jaunu modifikāciju.

 

Ilgstoši nepieprasīti attēli tiek nahrenizēti no keša (būtībā der pat "rm -rf *") jeb FS un paliek tikai DB, ja nu kādreiz tomēr savajagas. Kā rezultātā visi dati ir vienā vietā - datu bāzē, bet FS netiek piedirsta ar thumbnaiļiem bildēm no 2011. gada, kuras nekad vairs neviens nemēģinās pieprasīt.

Link to post
Share on other sites

Var jau netaisītu kešu pats vispār, servējam failus no db ar vienalga kādu backend-u, priekšā pieliekam Varnish, kurš tad arī visu automātiski kešo. Primo reizi attēlu paņems no db, pēc tam, kamēr vien regulāri tiks pieprasīts, nāk no Varnish.

 

P.S.

Piemēram, saliekot Varnish priekšā, Elasticsearch ar šo pluginu pakaļā,  var ar pāris rindiņām un bez nekādām baigām zināšanām uztaisīt milzīgi lielu, viegli platumā skeilojamu bilžu glabāšanas klasteri. (Ne optimālākais variants, bet ļoti ātri radāms).

 

Protams, ideālā gadījumā būtu jāņem distributētas failu sistēmas, bet tās konfigurēt ir par kārtu sarežģītāk kā Elasticsearch-u.

Edited by codez
Link to post
Share on other sites

Nē, nu saprotams, ka standarta web projektam es nekad tā nedarītu, bet teiksim, ja ir jāuztaisa kāds viegli šipojams produkts, kuram prasības pēc apjoma nav tik lielas un var pat izmantot kādu embedojamu db, tad, lai viss projekts būtu vienā .jar failā, varētu arī atļauties failus glabāt db.

Link to post
Share on other sites

Nē, nu saprotams, ka standarta web projektam es nekad tā nedarītu, bet teiksim, ja ir jāuztaisa kāds viegli šipojams produkts, kuram prasības pēc apjoma nav tik lielas un var pat izmantot kādu embedojamu db, tad, lai viss projekts būtu vienā .jar failā, varētu arī atļauties failus glabāt db.

Tas tiesa gan. Labs arguments. 

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...