Firestore กับข้อมูลสูงกว่า 1Mb?

0

คำถาม

ฉันกำลังใช้ Firebase องการจะจัดเก็บบทความที่เขียนโดยของผู้ใช้และกองข่าวที่อาจจะเป็นมากกว่า 1 เมกะไบต์ของเนื้อหาได้ที่นี่

ฉันรู้ว่า Firestore ขีดจำกัดของเอกสารขนาดที่ 1 เมกะไบต์และฉันกำลังพยายามคิดหาทางที่จะทำงานแถวนั้น

ฉันเห็น มันโพสต์บน Stackoverflow แต่มันก็ไม่ได้ใช้อยู่ที่นี่เพราะมันเกี่ยวข้องกับรายชื่อของรายการเป็นใหญ่เกินไป

ฉันเริ่มต้นความคิดที่จะเก็บเนื้อหาในคลาวด์แทนที่จะเป็นห้องเก็บของและตอนที่กำลังโหลดบทความเอกสารถ้าเนื้อหาเริ่มจาก gs://ฉันโหลดเอกสารจากห้องเก็บของและตั้งค่ามันต้อง"เนื้อหา"โดยตรงแต่ผมเกรงว่ามันจะช้าเกินไป

ยังไงฉันเตรียมกำหนทางที่ไปร้านขายมากกว่า 1 เมกะไบต์เนื้อหาใน Firestore?

2

คำตอบที่ดีที่สุด

2

ของฉันกฏของนิ้วคือต้องใช้ Firestore เดียวสำหรับ structured ข้อมูลที่คุณต้องการที่จะสืบค้นในใช้-คดีอย่างเช่นนของคุณ

อีกข้อมูลของฉันแน่นอนเข้าสู่คลาวด์เก็บของแฟ้มที่คุณตอนนั้นร่วมงานกับเอกสาร(e.g. ใช้บัตรประชาชนหรือจัดเก็บเส้นทางที่อยู่ในสนาม).

ถ้าคุณต้องฟัง realtime ต้องปรับปรุงข้อมูลอยู่ในห้องเก็บของแฟ้ม,ปรับปรุงเป็นสนามในเอกสาร(e.g. lastUpdated)หลังจากที่คุณเขียนการปรับปรุงไปโรงเก็บของเพื่อแจ้งให้ทราบที่ listeners ว่าพวกเขาต้องการจะโหลดข้อมูลจากห้องเก็บขอเหมือนกัน


เพียงทางเลือกฉันใช้เป็นที่เอ่อล้นออกมาข้อมูลของต้นเอกสารกันแบบต่อเนื่องชื่อต่อท้าย(ดังนั้นแค่เพิ่ม -1, -2เป็นต้นไปเอกสารชื่อ)แต่มันเป็นเพียงทางเดียวคดีที่ฉันอยากจะบการค้นหาเอกสารก็น่าจะเป็นบัตรประจำตั(แทนของช่องข้อมูลในนั้นและต้อง realtime เป็นนักฟังที่อยู่ในเนื้อหาของเอกสารต่างๆ

2021-11-23 18:09:12
1

ฉันเรื่องส่วนตัวตอบคำถามนั้นและใช่มันเอ่ยถึงต้องการรายชื่อของรายการ. ในกรณีของคุณถ้ามีข่าวจะบรรจุข้อความเช่นเดียรูปฉันจะแน่นอนเพิ่มภาพทั้งหมดที่ Firebase ห้องเก็บขและข้อความต้อง Firestore และเชื่อมโยงพวกเขาเป็นไปแล้ว@FrankvanPuffelen พูดถึงในคำตอบของเขา อีกอย่างนั้นอย่างที่@ToddKerpelman อเมริกาอยู่ในการต่อคำตอบ:

ไม่เพิ่มรูปภาพที่จะ Firestore. คลาวด์เก็บของ เป็นหมายถึงสำหรับเรื่องนั้น

คิดเรื่องของคุณใช้กรณีต้องได้"จ"นั่น limitation มีอีก(คล้ายกัน)ใกล้เข้ามาแล้ว แทนที่จะพยายามที่จะบันทึกข้อมูลทั้งหมดด้วยการโดดครั้งเดียวเอกสารฉันจะเพิ่มมันไปหลายเอกสารแบบนี้:

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

และอย่างที่คุณเห็นกันและบทความต้องใช้มาหลายส่วนประกอบ ทำให้ทุกอย่างที่บทความจากฐานข้อมูลคุณต้องสร้าง collectionGroup query นั่นดูเหมือนนี้:

db.collectionGroup("articleParts");

ต้องอ่านบทความแยกกันแค่ concatenate ส่วนต่างๆทั้งหมดสำหรับแต่ละข่าวจาก articleId และส่วนหนึ่งหมายเลข

ที่อยู่อีกด้านหนึ่งถ้าคุณเป็นคนเดียวที่อยากจะอ่านบทความเดียวสร้างเป็นข้อมูลนั้นย่อมชี้ไปหา:

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

และทำอย่างเดียวกับปฏิบัติการที่อยู่ด้านบน

หรือคุณสามารถใช้:

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

แต่ที่นี่ไม่ก็ต้องลืมที่จะสร้าง ดัชนี.

ในวิธีนี้คุณสามารถสร้างที่หลายเอกสารอย่างที่คุณต้องการสำหรับนัดเดียวข่าวได้ สำหรับ Android ฉันต้องสร้างขึ้นห้องสมุดโทร FirestoreDocument-Androidซึ่งจะช่วยเธอเสมอตรวจดูขนาดของเอกสารกับคน จำนวนมากที่สุดที่ 1 เมกะไบต์(1,048,576 ไบต์)เต็มพื้นที่ที่ได้รับจัดสรร. ดังนั้นถ้าข่าวใหญ่กว่าคนสูงสุดของ limitation,แยกออกข่าวและเพิ่มเนื้อหาภายในหลายเอกสารต่างๆ

2021-11-24 08:56:17

ในภาษาอื่นๆ

หน้านี้อยู่ในภาษาอื่นๆ

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

ดังอยู่ในนี้หมวดหมู่

ดังคำถามอยู่ในนี้หมวดหมู่