Depozitarea unui fișier într-o bază de date, spre deosebire de sistemul de fișiere?

În general, cât de rău a unui hit de performanță este stocarea unui fișier într-o bază de date (în special mssql) spre deosebire de sistemul de fișiere? Nu pot veni cu un motiv în afara portabilității aplicațiilor pe care aș dori să-mi stochez fișierele ca varbinari în SQL Server.

0
fr hi bn

10 răspunsuri

Aruncați o privire la acest răspuns:

Stocarea imaginilor în DB - Da sau nu?

În esență, loviturile de spațiu și de performanță pot fi destul de mari, în funcție de numărul de utilizatori. De asemenea, rețineți că serverele Web sunt ieftine și puteți adăuga cu ușurință mai mult pentru echilibrarea încărcăturii, în timp ce baza de date este cea mai scumpă și cea mai dificilă parte a unei arhitecturi web de obicei.

Există câteva exemple opuse (de exemplu, Microsoft Sharepoint), dar, de obicei, stocarea fișierelor în baza de date nu este o idee bună.

Cu excepția cazului în care este posibil să scrieți aplicații desktop și/sau să știți cât de mulți utilizatori veți avea vreodată, dar pe ceva la fel de întâmplător și neașteptat ca un site web public, puteți plăti un preț ridicat pentru stocarea fișierelor în baza de date.

0
adăugat

Supravegherea de a analiza o imagine de tip blob (imagine) într-o matrice de octeți și apoi să o scrieți pe disc în numele propriu-zis al fișierului și apoi să citiți-o suficient pentru a vă descuraja să faceți acest lucru prea des, mai ales dacă fișierele sunt destul de mare.

0
adăugat
Aceasta este o sarcină implicită atunci când imaginile trebuie să fie afișate ulterior, mai ales atunci când sunt stocate în diferite formate sau în scenarii în care nu pot fi ținute în memorie pentru perioade lungi de timp, în virtutea dimensiunilor mari.
adăugat autor Jon Limjap, sursa
Nu văd nicăieri că acest "fișier" trebuie scris pe disc și citit din nou.
adăugat autor Dave Van den Eynde, sursa

În experiența mea, este întotdeauna mai bine să stocați fișierele ca fișiere. Motivul este că sistemul de fișiere este optimizat pentru stocarea fișierelor, în timp ce o bază de date nu este. Desigur, există câteva excepții (de exemplu, sistemul de fișiere MS de ultimă generație, care se spune că ar trebui să fie construit pe serverul SQL), dar, în general, aceasta este regula mea.

0
adăugat

Aș spune că depinde de situația ta. De exemplu, lucrez în administrația locală și avem o mulțime de imagini cum ar fi mugshot-uri etc. Nu avem un număr mare de utilizatori, dar trebuie să avem o bună securitate și un audit în jurul datelor. Baza de date este o soluție mai bună pentru noi, deoarece face acest lucru mai ușor și nu vom trece la probleme de scalare.

0
adăugat

Dacă puteți trece la SQL Server 2008, puteți beneficia de suportul FILESTREAM care vă oferă cel mai bun din ambele - fișierele sunt stocate în sistemul de fișiere, dar integrarea bazei de date este mult mai bună decât stocarea doar un filepath într-un câmp varchar. Întrebarea dvs. poate întoarce un fișier standard de fișiere .NET, ceea ce face integrarea mult mai simplă.

Noțiuni de bază pentru stocarea FILESTREAM

0
adăugat
Scalabilitatea și disponibilitatea par să fi fost destul de bine gândite prin - a se vedea această albă: msdn. microsoft.com/en-us/library/cc949109.aspx
adăugat autor Jon Galloway, sursa
Am câteva rezervări aici. Mai exact, partea de scalabilitate și disponibilitate a lucrurilor: cum controlați unde sunt stocate aceste "bloburi"?
adăugat autor Dave Van den Eynde, sursa
O avertizare în acest sens este că trebuie să utilizați securitate integrată (de exemplu, autentificarea Windows) atunci când vă conectați la baza de date: blogs.msdn.com/b/psssql/archive/2008/04/10/…/a>

Sunt de acord cu @ ZombieSheep. Doar un singur lucru - în general, nu cred că bazele de date trebuie să fie portabile pentru că vă lipsesc toate funcțiile oferite de furnizor dvs. de DBMS. Cred că migrarea către o altă bază de date ar fi ultimul lucru pe care îl considerați. Doar $ .02

0
adăugat

Am luat decizia de a stoca ca VARBINARY pentru http://www.freshlogicstudios.com/Products/Folders/ pe jumătate așteptând probleme de performanță. Pot spune că am fost plăcut surprinși de cât de bine a fost rezolvată.

0
adăugat

Nu este vag sau altceva decât cred că tipul de "fișier" pe care îl veți depozita este unul dintre cei mai importanți factori determinanți. Dacă vorbim în esență despre un câmp de text mare care ar putea fi stocat ca fișier, preferința mea ar fi pentru stocarea db.

0
adăugat

Care este întrebarea aici?

DBMS-urile moderne SQL2008 au o varietate de moduri de a face față BLOB-urilor care nu se lipesc doar de ele într-o masă. Există argumente pro și contra, desigur, și ar trebui să te gândești puțin mai adânc.

Aceasta este o lucrare interesantă, de către întârziere (?) Jim Gray

Pentru a BLOB sau pentru a nu BLOB: Depozitare de obiecte mari într-o bază de date sau într-un sistem de fișiere

0
adăugat

În timp ce performanța este o problemă, cred că design-ul modern al bazei de date a făcut mult mai puțin o problemă pentru fișierele mici.

De asemenea, depinde de cât de strâns sunt datele. Dacă fișierul conține date care sunt strâns legate de câmpurile bazei de date, atunci ea aparține în mod conceptual aproape de acesta și poate fi stocată într-o pată. Dacă conține informații care ar putea avea legătură cu mai multe înregistrări sau ar putea avea o anumită utilizare în afara contextului bazei de date, atunci ea face parte din afara. De exemplu, o imagine de pe o pagină Web este preluată pe o solicitare separată de la pagina care leagă, astfel încât aceasta poate să aparțină în afara (în funcție de aspectele specifice de proiectare și de securitate).

Compromisul nostru, și nu-i promit că e cel mai bun, a fost să stocheze în baza de date fișiere xml mai mici, dar imagini și alte fișiere în afara acestuia.

0
adăugat
Ce considerați un dosar mic sau mare?
adăugat autor ubiquibacon, sursa