Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

173
Vistas
¿La mejor manera de implementar la clasificación de una gran cantidad de registros en Mongo?

Estoy haciendo una aplicación aquí, los usuarios podrán publicar y dar me gusta/no me gusta. En el backend, estoy usando Node y Mongoose. Ahora, supongamos que tengo unas 500k publicaciones (o pueden ser millones, solo por el bien de la comprensión). Entonces, ¿cómo obtengo las publicaciones más populares? La clasificación requerirá una gran cantidad de tiempo, ¿verdad? ¿Cuál es la mejor manera de hacer esto?

Déjame explicarte un poco más. Supongamos que un usuario ha realizado una publicación en la categoría 'A'. Ahora, para obtener las publicaciones principales en esa categoría, primero tengo que encontrar las publicaciones enumeradas en esa categoría. Entonces tengo que ordenar. Esto tomará años.

¿Cuáles son sus sugerencias para esto? ¿Algún consejo sobre si Mongo es el candidato adecuado para este caso de uso?

Tengo dos cosas de las que ocuparme.

  • Los resultados deben obtenerse en un tiempo razonable.
  • La base de datos tiene que acomodar una gran cantidad de datos.

También busqué en Cassandra y Elasticsearch. Para el contexto dado, ¿crees que estos proporcionarían una mejor solución?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Esto es más como una pregunta de diseño del sistema para ser honesto. Incluso con la búsqueda elástica, tendrá que marcar el analizador sobre la base de ciertos elementos correctos, por lo que no se supone que funcione en todo, tendrá que definirlo de esa manera.

Con respecto a la base de datos, MongoDB, lo mejor que puede hacer es tener índices para ayudar en la clasificación, porque si no es así, el sistema tendrá que buscar esos valores en WiredTiger Cache (WiredTiger = Storage Engine) y luego clasificarlos en la memoria, imagínense la farsa que causará :D

La mayoría de las empresas mantienen un control más granular sobre este tipo de cosas, en función de las expectativas, la mayoría de las cosas están precompiladas, sobre la base de etiquetas, por ejemplo, en Twitter. Y después de que se haya ejecutado una vez, no necesita ordenar todo de nuevo.

He ordenado un conjunto de datos en el campo A, por ejemplo, ¿debo ordenarlo todo nuevamente para una nueva solicitud? No: solo ajuste las nuevas entradas. Este ajuste dependerá de lo que quieras mostrar al usuario.

En general, es un problema interesante de resolver pero que dependerá en gran medida del caso de uso. Patrón de acceso exacto. Habiendo dicho eso, ElasticSearch suena como un buen candidato pero... también tendrá su limitación. Concéntrese en los patrones de acceso exactos, como ya mencioné.

Editar según lo solicitado por OP.

Entonces, ¿cómo obtengo las publicaciones más populares?

Esto no depende completamente de ordenar los resultados, depende más de la explosividad del tema donde la tasa tiene más importancia.

Consulte este artículo aquí por Gilad.

Piénselo cuando verifica la tasa de etiquetas y palabras, mantiene un conteo basado en la tasa para eso.

De manera similar, para su categoría, según el algoritmo, mantenga esta pieza aislada de solo consultar todas las publicaciones.

Amazon no está clasificando productos sobre la marcha para una categoría para todo su conjunto de datos, ¿verdad? Piénsalo.

Cosas de rango previo y basadas en nuevas incorporaciones, mantenga esa parte dinámica y combínelas.

Por ejemplo, para la categoría x => tengo los 500 mejores listos según mi algoritmo, ahora para los nuevos datos que llegaron hoy, uso el algoritmo para obtener una clasificación relativa y luego combino los 500 principales con el contenido clasificado hoy y muestro los resultados.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda