Aunque he trabajado con bases de datos durante mucho tiempo, no me considero un experto, y ésta es la prueba.
Sabemos que en una base de datos relacional lo recomendado es normalizar las tablas para evitar tener datos nulos, vacíos o repetidos en una sola tabla, y usando la primary key creamos relaciones entre las tablas para poder recuperar los datos cuando sea necesario. Pero cuando se tiene una cantidad de datos que comienza a ser grande (hablamos del order de millones de registros), ¿hacer un join para obtener los datos es la mejor opción?
Seguramente habrán escuchado sobre las key-value stores o bases de datos con tablas key-value , en las que se deja todo el control al programador con tal de evitar esos join y así “ganar” velocidad. Yo aprendí a usar siempre bdd relacionales, pero siempre he estado abierto a mejores propuestas, sobre todo cuando se tienen millones de registros y la velocidad del query es primordial. Sé que los join son lentos, pero el mantenimiento de una key-value store también es una tarea que puede ser desgastante. ¿A qué tirarle?
Si alguien tiene experiencia en esto, se aceptan sugerencias 🙂
Por acá un artículo que analiza los pros y contras de las bdd relacionales vs. las key-value stores: Is the Relation Database Doomed?
Hay veces que las relaciones dan más problemas que ayuda, te lo digo por experiencia, pero claro puede que se debio a un mal diseño de base de datos.
Yo nunca he manejado tantos datos, a lo mucho he llegado a los 10 mil registros, tampoco me considero un expero, pero es bien sabido que si quieres “VELOCIDAD EN LAS CONSULTAS” si es (MYSQL) usar tablas no relacionados (INNODB), es mejor usar MyISAM debido a que supera en gran velocidad las consultas al no tener relaciones los resultados los arroja más rapido, de hecho este blog si esta usando wordpress usa MYISAM al igual que joomla y otros poderosos CMS.
Nota: Llevo 2 años siguiendo tu blog sobre Japon y solo he comentado como 2 veces xD…pero como soy desarrollador web, creo que pintare más en este nuevo Blog, felicidades!!
Utilizar una tabla Hash es recomendable para esas situaciones, ya que proveen un tiempo de búsqueda constante en promedio O(1). Entonces, las búsquedas son muy rápidas.