Puncte:0

Cum să sincronizați metadatele GCP Cloud Storage Bucket cu o bază de date?

drapel us

Am un număr mare de obiecte, în prezent în jur de 1 milion, stocate într-un bucket GCP Cloud Storage. Obiectele sunt adăugate cu o rată de 1-2 mii pe zi. Aș dori să rulez eficient interogări pentru a căuta obiecte din găleată pe baza metadatelor pentru acele obiecte, inclusiv numele fișierului infix/sufix, data creării, clasa de stocare și așa mai departe.

API-ul Cloud Storage permite căutarea după prefixul numelui fișierului (docs), dar apelul inapoi durează câteva secunde. Pot face interogări infix cu gsutil, ca gsutil ls gs://my-bucket/foo-*-bar.txt, dar acest lucru este și mai lent. În plus, aceste interogări sunt luate în considerare Operațiuni de clasa A, care aduc costuri.

În loc să mă ocup de API-ul Cloud Storage pentru a-mi căuta compartimentul, mă gândeam că aș putea adăuga o listă cu toate obiectele din compartimentul meu la o bază de date precum Bigtable sau SQL. Baza de date ar trebui să rămână sincronizată cu toate modificările aduse găleții, cel puțin atunci când obiectele sunt create sau șterse și, în mod ideal, atunci când sunt modificate, clasa de stocare schimbată etc.

Care este cel mai bun mod de a realiza acest lucru?

Puncte:2
drapel cn

Primul pas este să proiectați tabelul și coloanele pentru baza de date, să determinați cum vor fi stocate metadatele, să proiectați instrucțiunile de interogare și instrucțiunile de actualizare.

Apoi implementați declanșatoarele de stocare în cloud pentru a notifica un serviciu pe care îl scrieți pentru a procesa evenimente din stocare în cloud. Cloud Functions și Cloud Run sunt adesea folosite pentru a procesa evenimente. Ca parte a procesării evenimentului, codul dvs. va actualiza baza de date.

Ultimul pas după ce declanșatoarele funcționează corect, este să scanați întreaga găleată și să actualizați baza de date cu metadate pentru fiecare obiect Cloud Storage.

Întrebarea dvs. nu include detalii. Este mai bine să folosiți declarații numerice în loc de Am un număr mare de obiecte stocate într-un bucket GCP Cloud Storage. Pentru mine, asta înseamnă cel puțin zeci de milioane de obiecte. Întrebarea dvs. nu include informații despre cât de repede apar modificările în Cloud Storage sau interogările reale pe care trebuie să le efectuați.

Rețineți că Cloud Storage este un spațiu de nume plat. Conceptul de ierarhie (dosare/directoare) este emulat în software. Dacă stocați spațiul de nume în baza de date la fel ca cel stocat în Cloud Storage, atunci performanța ar putea să nu fie mai bună.

Am implementat tipul dvs. de design de mai multe ori pentru AWS, Google Cloud și Azure. Dacă nu doriți cu adevărat complexitatea unui sistem bazat pe evenimente, vă recomand să citiți din când în când găleata de stocare și să creați o foaie de calcul text simplă care poate fi procesată cu grep, awk etc.

drapel us
Mulțumesc pentru răspuns! Mi-am editat întrebarea pentru a adăuga mai multe numere. Cloud Storage Triggers este o soluție viabilă; Speram doar că există o soluție mai ieșită din cutie.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.