El uso de "matriz contiene" Consulta de estructura de nubes Firestore Social Media

tccpg288:

Tengo una estructura de datos que consiste en una colección, llamada "Encuestas". "Encuestas" tiene varios documentos que han generado al azar de identificación. Dentro de esos documentos, hay un conjunto de recopilación adicional llamado "respuestas". Voto de los usuarios en estas encuestas, con los votos todos escritos a la subcolección "respuestas". Yo uso el método .runTransaction () en el nodo "respuestas", con la idea de que este subscollection (para cualquier encuesta dada) se actualiza constantemente y se escribe en los usuarios.

He estado leyendo sobre la estructura de los medios de comunicación social para Firestore . Sin embargo, hace poco encontré con una nueva característica para Firestore, la opción de consulta "array_contains".

Si bien las referencias anteriores se analizan en colocar un "seguimiento" de alimentación para la estructura de las redes sociales, que tenía una idea diferente en mente. Me imagino a los usuarios escribir (voto) a mi nodo principal encuesta, por lo tanto, la creación de otra "siguiente" nodo y también que los usuarios escriben en este nodo para recuento de votos actualización de la encuesta (utilizando una función de la nube) parece terriblemente ineficaz puesto que tendría que estar constantemente copiando desde el nodo principal, donde se están contando votos.

Serían los "array_contains" Query ser otra opción práctica para los medios de comunicación social estructura de escalabilidad? Mi pensamiento es:

  1. Si el usuario A continuación el usuario B, escribir a un niño matriz directa en mis "Usuarios" nodo llamado "seguidores".
  2. Antes de cualquier encuesta es creado por el usuario B, el dispositivo del usuario B lee "seguidores" matriz de Firestore para obtener una lista de todos los usuarios y rellena tras ellos en el lado del cliente, en un objeto Array
  3. Entonces, cuando el usuario B escribe un nuevo sondeo, añadir que la matriz "seguidores" de la encuesta, por lo que cada nueva encuesta de usuario B tendrá una matriz que se le atribuye que contiene todos los ID de los usuarios siguientes.

¿Cuáles son las limitaciones de la consulta "array_contains"? ¿Es práctico tener una matriz almacenada en Firebase que contiene miles de usuarios / seguidores?

introducir descripción de la imagen aquí introducir descripción de la imagen aquí

Alex Mamo :

Serían los "array_contains" Query ser otra opción práctica para los medios de comunicación social estructura de escalabilidad?

Yes of course. This the reason why Firebase creators added this feature.

Seeing your structure, I think you can give it a try, but to responde to your question.

What are the limitations on the "array_contains" query?

There is no limitations regarding what type of data do you store.

Is it practical to have an array stored in Firebase that contains thousands of users / followers?

Is not about practical or not, is about other type of limitations. The problem is that the documents have limits. So there are some limits when it comes to how much data you can put into a document. According to the official documentation regarding usage and limits:

Maximum size for a document: 1 MiB (1,048,576 bytes)

Como se puede ver, está limitado a 1 MiB total de datos en un solo documento. Cuando estamos hablando de almacenar texto, puede almacenar más o menos. Así, en su caso, si desea almacenar los identificadores únicos, creo que no habrá ningún problema. Pero en mi humilde opinión, que incluía la matriz GETTS más grande, tenga cuidado acerca de esta limitación.

Si va a almacenar gran cantidad de datos en las matrices y las matrices debe ser actualizada por una gran cantidad de usuarios, hay otra limitación que tiene que cuidar. Por lo que se limitan a 1 de escritura por segundo en cada documento. Así que si usted tiene una situación en la que una gran cantidad de usuarios al todos tratando de escritura de datos / actualización a los mismos documentos a la vez, puede empezar a ver algunos de esto escribe al fracaso. Por lo tanto, tener cuidado con esta limitación también.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=235345&siteId=1
Recomendado
Clasificación