Stocarea fișierelor este o caracteristică importantă necesară în mai multe procese din diferite tipuri de aplicații. Existența unor procese precum Content Delivery Networks (CDNs)
, configurate prin intermediul opțiunilor cloud de la terțe părți, precum Amazon Web Services, și a opțiunilor locale de stocare a fișierelor au facilitat întotdeauna construirea unei astfel de caracteristici.
Cu toate acestea, conceptul de stocare a fișierelor direct într-o bază de date prin intermediul unui singur apel API m-a intrigat de ceva timp. Aici a intrat în scenă GridFS pentru mine.
GridFS – A Layman’s Understanding
MongoDB are o specificație de driver pentru a încărca și a prelua fișiere din el numită GridFS. GridFS vă permite să stocați și să preluați fișiere, inclusiv cele care depășesc limita de dimensiune a documentelor BSON de 16 MB.
GridFS practic ia un fișier și îl împarte în mai multe bucăți care sunt stocate ca documente individuale în două colecții:
- colecția
chunk
(stochează părțile documentului) și - colecția
file
(stochează metadatele suplimentare consecvente).
Care bucată este limitată la 255 KB în dimensiune. Aceasta înseamnă că ultimul chunk este, în mod normal, fie egal, fie mai mic de 255 KB. Sună destul de îngrijit.
Când citiți din GridFS, driverul reasamblează toate chunks-urile după cum este necesar. Acest lucru înseamnă că puteți citi secțiuni ale unui fișier în funcție de intervalul de interogare. Cum ar fi ascultarea unui segment dintr-un fișier audio sau preluarea unei secțiuni dintr-un fișier video.
Nota: Este de preferat să se utilizeze GridFS pentru stocarea fișierelor care depășesc în mod normal limita de dimensiune de 16 MB. Pentru fișiere mai mici, se recomandă utilizarea formatului BinData pentru a stoca fișierele în documente unice.
Acesta este un rezumat al modului în care GridFS funcționează în general. Este timpul să ne băgăm picioarele în niște cod de lucru și să vedem cum se implementează un sistem ca atare.
Suficientă vorbărie, arată-mi codul
Pentru configurația noastră folosim Node.js cu acces la o instanță cloud de MongoDB. Puteți găsi depozitul de cod pentru aplicația de probă aici.