Firestore s údajmi vyššia ako 1 mb?

0

Otázka

Ja používam Firebase na ukladanie články napísané od mojich používateľov, a tieto články môžu byť viac ako 1 MiB obsahu.

Viem, že Firestore limity dokument, veľkosť 1 MiB a snažím sa vymyslieť spôsob, ako obísť to.

Videl som , že príspevok na Stackoverflow ale to neplatí, tu, pretože to súvisí s zoznam položiek, je príliš veľké.

Moja prvá myšlienka bola na ukladanie obsahu v ukladacom priestore typu Cloud namiesto toho, a, pri vkladaní článku dokument, ak sa obsah začne s gs://, ja by som vložte dokument zo skladovania a nastavte ho na "obsah" priamo, ale obávam sa, že to bude príliš pomalé.

Ako môžem implementovať spôsob, ako uložiť viac ako 1 MiB obsah v Firestore?

2

Najlepšiu odpoveď

2

Moje pravidlo je použitie Firestore len pre štruktúrované údaje, ktoré chcete dotazu v use-case ako vy.

Ostatné údaje ja by som naozaj dať do Ukladacieho priestoru typu Cloud súbory, ktoré potom môžete priradiť k dokumentu (napr. pomocou rovnakého ID, alebo uložením cestu v poli).

Ak potrebujete, ak chcete počúvať v reálnom čase aktualizácie na údaje v úložiska súborov, aktualizovať pole v dokumente (napr. lastUpdated) po napíšte aktualizáciu Skladovanie - informovať poslucháčov, že je potrebné načítať údaje z Skladovanie príliš.


Jedinou alternatívou som použil je k pretečeniu údajov na dokumenty s sekvenčné ID prípona (tak len pridať -1, -2atď dokumentu ID), ale to bolo len v prípadoch, kde chcem dotaz dokumentu Id (namiesto polí v okolí) a potrebujete mať v reálnom čase poslucháč na obsah dokumentov.

2021-11-23 18:09:12
1

Ja osobne odpovedali na túto otázku, a áno, to sa odkazuje na zoznam položiek. Vo vašom prípade, ak článok obsahuje text, ako aj obrázky, budem naozaj pridať všetky obrázky na Firebase Skladovanie a text na Firestore, a prepojiť ich ako už @FrankvanPuffelen uvedené v jeho odpoveď. Okrem toho, ako @ToddKerpelman štátov v týchto odpoveď:

Nechcem pridať obrázky do Firestore. Cloud Storage je určený na to.

Myslenie o vašom používaní prípade, dostať "viac", že obmedzenie je tu ďalší (podobné) prístup. Namiesto toho sa snaží uložiť všetky dáta v jednom dokumente, ja by som ho pridať do viacerých dokumentov, ako je táto:

Firestore-root
  |
  --- articles (collection)
        |
        --- $articleId (document)
             |
             --- articleParts (collection)
                    |
                    --- $firestoreRandomId
                    |      |
                    |      --- text: "Text of the article"
                    |      |
                    |      --- part: 1
                    |      |
                    |      --- articleId: $articleId
                    |
                    --- $firestoreRandomId
                           |
                           --- text: "Remaining text of the article"
                           |
                           --- part: 2
                           |
                           --- articleId: $articleId

A ako môžete vidieť, každý článok sa skladá z niekoľkých častí. Ak chcete získať všetky články z databázy musíte vytvoriť collectionGroup dotaz, ktorý vyzerá podobne ako tento:

db.collectionGroup("articleParts");

Čítať každý článok individuálne, jednoducho zřetězit všetky diely pre každý článok podľa articleId a časť číslo.

Na druhej strane, ak si len chcete prečítať jeden článok, vytvoriť odkaz, ktorý ukazuje na:

db.collection("allArticles").document($articleId).collection("articleParts");

A to isté operácie, ako je uvedené vyššie.

Alebo môžete použiť:

db.collectionGroup("articleParts").whereEqualTo("articleId", someId);

Ale tu, nenechajte si tiež zabudnúť na vytvorenie indexu.

Týmto spôsobom môžete vytvoriť ako mnoho dokumentov, ako chcete pre jeden článok. Pre Android, som vytvorili knižnicu s názvom FirestoreDocument-Android, ktoré vám pomôžu vždy skontrolujte veľkosť dokumentu proti maximálne 1 MiB (1,048,576 bajtov) kvóty. Takže ak článku je väčšie ako maximálny obmedzenie rozdeliť článok a pridajte obsah vo viacerých dokumentov.

2021-11-24 08:56:17

V iných jazykoch

Táto stránka je v iných jazykoch

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................