Memilih Struktur Data
Tetap teratur dengan koleksi
Simpan dan kategorikan konten berdasarkan preferensi Anda.
Ingat, saat menyusun data di Cloud Firestore, Anda
memiliki beberapa pilihan berbeda:
- Dokumen
- Beragam koleksi
- Subkoleksi dalam dokumen
Pertimbangkan keuntungan dari setiap pilihan karena hal tersebut berkaitan dengan kasus penggunaan Anda. Beberapa contoh struktur untuk data hierarkis diuraikan dalam panduan ini.
Data bertingkat dalam dokumen
Anda dapat membuat tingkatan pada objek-objek yang kompleks seperti array atau peta dalam dokumen.
- Keuntungan: Jika Anda memiliki daftar data sederhana dan tetap yang ingin Anda simpan di dalam dokumen, hal ini mudah untuk disiapkan dan akan menyederhanakan struktur data Anda.
-
Batasan: Tindakan ini tidak skalabel seperti opsi lainnya, terutama jika data Anda bertambah dari waktu ke waktu. Dengan daftar yang lebih besar atau berkembang, dokumen juga tumbuh, yang dapat menyebabkan waktu pengambilan dokumen menjadi lebih lambat.
- Apakah kasus penggunaan yang mungkin terjadi? Dalam aplikasi chat, misalnya, Anda dapat menyimpan tiga ruang chat yang baru dikunjungi oleh pengguna sebagai daftar bertingkat di profilnya.
|
- class alovelace
- nama :
depan : "Ada"
belakang : "Lovelace"
lahir : 1815
room :
0 : "Chat Software"
1 : "Tokoh Terkenal"
2 : "SWE Terkenal"
|
Subkoleksi
Anda dapat membuat koleksi dalam dokumen jika Anda memiliki data yang mungkin bertambah dari waktu ke waktu.
- Keuntungan: Seiring dengan perkembangan daftar Anda, ukuran dokumen induk tidak berubah. Anda juga mendapatkan kemampuan kueri penuh pada subkoleksi, dan Anda dapat menerbitkan
kueri grup koleksi di seluruh subkoleksi.
-
Keterbatasan: Anda tidak dapat menghapus subkoleksi dengan mudah.
- Apakah kasus penggunaan yang mungkin terjadi? Dalam aplikasi chat yang sama, misalnya, Anda dapat membuat koleksi pengguna atau pesan dalam dokumen ruang chat
|
- collections_bookmark sains
- class software
nama : "chat software"
- collections_bookmark
pengguna
- class
alovelace
depan : "Ada"
belakang : "Lovelace"
- class
sride
depan : "Sally"
belakang : "Ride"`
- class astrofisika
|
Koleksi tingkat root
Buat koleksi pada tingkat root database Anda untuk mengatur set data yang berbeda.
- Keuntungan: Koleksi tingkat root berguna untuk hubungan many-to-many dan memberikan pembuatan kueri yang andal dalam setiap koleksi.
-
Keterbatasan: Mendapatkan data yang hierarkis secara alami bisa menjadi semakin rumit seiring dengan perkembangan database Anda.
- Apakah kasus penggunaan yang mungkin terjadi? Dalam aplikasi chat yang sama, misalnya, Anda dapat membuat satu koleksi untuk pengguna dan satu koleksi lain untuk chat room dan pesan.
|
- collections_bookmark
pengguna
- class alovelace
depan : "Ada"
belakang : "Lovelace"
lahir : 1815
- class sride
depan : "Sally"
belakang : "Ride"
lahir : 1951
- collections_bookmark room
- class software
- collections_bookmark
pesan
- class
pesan1
dari : "alovelace"
isi : "..."
- class
pesan2
dari : "sride"
isi : "..."
|
Kecuali dinyatakan lain, konten di halaman ini dilisensikan berdasarkan Lisensi Creative Commons Attribution 4.0, sedangkan contoh kode dilisensikan berdasarkan Lisensi Apache 2.0. Untuk mengetahui informasi selengkapnya, lihat Kebijakan Situs Google Developers. Java adalah merek dagang terdaftar dari Oracle dan/atau afiliasinya.
Terakhir diperbarui pada 2025-08-16 UTC.
[null,null,["Terakhir diperbarui pada 2025-08-16 UTC."],[],[],null,["\u003cbr /\u003e\n\nRemember, when you structure your data in Cloud Firestore, you\nhave a few different options:\n\n- Documents\n- Multiple collections\n- Subcollections within documents\n\nConsider the advantages of each option as they\nrelate to your use case. A few example structures for hierarchical data\nare outlined in this guide.\n\n\u003cbr /\u003e\n\nNested data in documents\n\nYou can nest complex objects like arrays or maps within documents.\n\n|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------|\n| - **Advantages:** If you have simple, fixed lists of data that you want to keep within your documents, this is easy to set up and streamlines your data structure. - **Limitations:** This isn't as scalable as other options, especially if your data expands over time. With larger or growing lists, the document also grows, which can lead to slower document retrieval times. - **What's a possible use case?** In a chat app, for example, you might store a user's 3 most recently visited chat rooms as a nested list in their profile. | - class alovelace - name : first : \"Ada\" last : \"Lovelace\" born : 1815 rooms : 0 : \"Software Chat\" 1 : \"Famous Figures\" 2 : \"Famous SWEs\" |\n\nSubcollections\n\nYou can create collections within documents when you have data that might expand\nover time.\n\n|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| - **Advantages:** As your lists grow, the size of the parent document doesn't change. You also get full query capabilities on subcollections, and you can issue [collection group queries](../query-data/queries) across subcollections. - **Limitations:** You can't easily delete subcollections. - **What's a possible use case?** In the same chat app, for example, you might create collections of users or messages within chat room documents. | - collections_bookmark science - class software name : \"software chat\" - collections_bookmark users - class alovelace first : \"Ada\" last : \"Lovelace\" - class sride first : \"Sally\" last : \"Ride\"\\` \u003cbr /\u003e \u003cbr /\u003e - class astrophysics - ... |\n\nRoot-level collections\n\nCreate collections at the root level of your database to organize disparate data\nsets.\n\n|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| - **Advantages:** Root-level collections are good for many-to-many relationships and provide powerful querying within each collection. - **Limitations:** Getting data that is naturally hierarchical might become increasingly complex as your database grows. - **What's a possible use case?** In the same chat app, for example, you might create one collection for users and another for rooms and messages. | - collections_bookmark users - class alovelace first : \"Ada\" last : \"Lovelace\" born : 1815 - class sride first : \"Sally\" last : \"Ride\" born : 1951 - collections_bookmark rooms - class software - collections_bookmark messages - class message1 from : \"alovelace\" content : \"...\" - class message2 from : \"sride\" content : \"...\" |"]]