Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

788
Views
Diseño de base de datos para un sistema de chat.

Sé que hay muchas publicaciones que discuten el diseño de DB para un sistema de chat, pero no explicaron nada sobre la escalabilidad de ese diseño, así que aquí mi pregunta.

Quiero diseñar una base de datos de un chat en tiempo real entre 2 o más usuarios, primero tomemos 2 usuarios, esto es lo que se me ocurrió.

Tabla 1:

nombre: Usuario

campos: id, nombre

Tabla 2

nombre: Sala de chat

campos: id, usuario1, usuario2

Tabla 3 :

nombre: Mensaje

campos: Chat_room_id, user_id, mensaje

Ahora, teniendo en cuenta a Facebook, tiene alrededor de 2 mil millones de usuarios activos por mes y digamos que mil millones de ellos se dedican a chatear y cada usuario envía 100 mensajes.

que hacen 100 mil millones de entradas en la tabla: Mensaje , por lo que la pregunta es,

"¿Mysql o Postgres podrán manejar esta gran cantidad de entradas y mostrar mensajes particulares de la sala de chat en tiempo real?" si no, cuál debería ser la mejor práctica para seguir eso, sé que también depende del servidor en el que está instalado RDBMS, pero aún quiero saber la arquitectura óptima.

PD: estoy usando Django como backend y AngularJs para comportamiento asíncrono

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

100 mil millones de filas en una tabla nunca funcionarán en línea. No solo se aplican todas las formas de partición posibles para reducir los tamaños, sino también la separación de estrategias de datos activas/pasivas. Pero sin embargo todos los asuntos importantes, la respuesta:

Postgres es de hecho efectivo trabajando con big data en sí mismo.

y todavía:

Postgres no tiene una estrategia lo suficientemente efectiva para combatir el diseño deficiente

Mire su ejemplo: la tabla chat_room enumera dos usuarios en columnas separadas, ¿para qué? Tienes user_id en los mensajes que hacen referencia a users.id. Y tiene chat_room.id en él, por lo que tiene datos de qué usuarios estaban en esa sala de chat. Ahora, si su idea era preagregar qué usuarios participaron en chat_room a lo largo del tiempo o en absoluto, conviértalo en una columna de matriz, como (chat_room.id int, users_id bigint[]) o si desea unirse al tiempo y dejar el tiempo, agregue el correspondiente atributos Los datos activos/pasivos se pueden implementar utilizando salas de chat archivadas en una relación diferente a las activas. Por cierto, la agregación de quién participó en esa sala de chat se puede realizar en dicho archivo...

Arriba no hay instrucciones para la acción, solo expresión. No hay mejores prácticas para el esquema de base de datos. Primero haga un plan claro de lo que hará su chat, luego haga un esquema de base de datos, pruébelo, mejore, intente, mejore, intente, mejore y así sucesivamente, hasta que todo funcione. Si tiene dudas sobre cómo funcionará con 100 mil millones de filas, llénelo y verifique...

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!