Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

780
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda