viernes, 27 de junio de 2008

Crear la base de datos de una red social

Crear la base de datos de una red social puede parecer en principio muy complicado, nada más lejos de la realidad, lo que seguramente sea más difícil es optimizar los accesos en caso de que obtenga un gran número de usuarios.

Suponiendo que usamos el modelo relacional, deberíamos crear una tabla de usuarios tal como:

id | datos

Dónde id es un identificador único para cada usuario y datos son los datos específicos que queremos guardar, nombre, apellidos, email, etc.

No todos los datos personales como tales pueden/deben ir ahí, si por ejemplo queremos guardar las aficiones y poder estudiarlas más tarde deberíamos tener una tabla aficiones.

id | aficion


Al igual que podemos crear grupos de usuarios de una forma similar.

id | grupo

Y otra tabla propia a la información de cada grupo.

grupo | informacion_relevante

Con unas consultas simples podemos reconstruir toda la información relativa a estos datos.

La mayor utilidad de las redes sociales es el enlace entre usuarios, así que también necesitaremos guardar esta información en una tabla llamada enlaces o amigos.

id1 | id2

Podemos tener otras si tenemos varios tipos de relaciones (por cierto no me ha parecido ver esto implementado en ninguna red social, tan solo amistad).

Una de las utilidades más usadas de las redes sociales es la de etiquetar a gente en las fotos.
Se me ocurren dos formas de implementarlo, teniendo una tabla global de fotografías (grandísima) o creando una tabla por fotografía (muchísimas tablas). Creo que la segunda escalaría peor que la primera, pero es cuestión de probarlo en un DBMS concreto.

Las otras aplicaciones como tablón, envío de mensajes, solicitudes pendientes de amigos...no difieren demasiado de estas.

Como se puede ver conceptualmente la base de datos de una red social no es nada complicada comparada con otras aplicaciones, sin embargo hay que tener en cuenta que optimizarla para soportar 80 millones de usuarios que tiene facebook debe ser algo más complicado.

2 comentarios:

Anónimo dijo...

felicidades por el blog, pero me ha dejado a la espera de saber mas de la creacion de la bdd, espero extiendan este tema que es muy interesante

TechBlog dijo...

Hola, en primer lugar buen blog :) aunque me gustaria que hicieras la base de datos de una red social completa (si quieres y puedes claro)
y la postearas en este excelente blog muchas gracias :)