¿Qué sitios web principales utilizan combinaciones de tablas SQL en producción con un rendimiento rápido?

Me temo que su comprensión de las bases de datos y SQL tiene fallas. Por lo tanto, la premisa misma de su pregunta es errónea. Primero debe entenderse, cuál es el propósito de una unión y qué significa realmente.

Sus datos residen en una base de datos, en un servidor de base de datos dedicado. Luego tiene un servidor de aplicaciones que tiene su lenguaje de programación del lado del servidor, digamos PHP. Y tiene validación de Javascript del lado del cliente en sus páginas web.

Ahora, necesita extraer datos de la base de datos para mostrarlos en su página web. Digamos que hay tres tablas: “usuarios” y “transacciones”. Hay 1 millón de usuarios y 2000 transacciones para cada usuario. En la página web, debe mostrar los detalles de los usuarios y sus transacciones.

Es mejor emitir una consulta SQL a la base de datos para devolver los datos que necesita. De lo contrario, tendrá que arrastrar 2000 X 1 millón = 2 mil millones de registros a su servidor de aplicaciones y filtrar esos datos. Confía en mí, esta es la peor, más terrible y horrenda manera de hacer programación.

Las bases de datos relacionales han existido desde la década de 1970 y los gustos de Oracle, MS SQL Server y DB2 son inmensamente eficientes. Nacieron para hacer uniones y recuperar datos de una manera extremadamente eficiente y rápida. Con todas las restricciones de integridad de datos y otras cosas.

Para responder a su pregunta, cada sitio web en el MUNDO que usa bases de datos relacionales usa uniones. Cada uno de ellos. Simplemente elija cualquiera de ellos para su “prueba”. Es diferente que muchos de ellos estén usando MongoDB y similares. Pero si tiene una base de datos relacional, la mejor manera, la más eficiente y libre de errores para obtener datos en la aplicación es emitir consultas SQL con combinaciones.

Porque recuerde, cualquier código que escriba como desarrollador es probable que tenga errores, tendrá un rendimiento inferior y esencialmente se escribirá en un lenguaje como PHP, etc. Mientras que la funcionalidad de la base de datos comercial se ha probado durante décadas y se sabe que ser libre de errores y eficiente. Y el sello distintivo de un programador pobre es que reinventa la rueda. Un buen programador reutilizará la funcionalidad existente que está bien probada.

Por cierto, la informática es algo donde la “prueba” se puede encontrar fácilmente sentado en el asiento. Puede configurar una base de datos con 5 tablas, sembrarla con datos aleatorios que contengan millones de filas e intentar mostrar datos filtrados en una página web con filtros dinámicos. Pruébelo primero colocando todos los datos en la capa de aplicación y escribiendo su propia lógica de “unión”, y luego emitiendo una consulta ajustada a la base de datos. Obtendrás tu prueba.

Airbnb e Instacart los usan.

Las uniones son, en cierto sentido, triviales y omnipresentes: es realmente difícil usar una base de datos relacional durante un período de tiempo prolongado sin unir dos tablas. “Muéstrame todos los hosts para todos los listados en los que este usuario se ha quedado”, eso es una combinación. ¡No almacena (ni restaura) la totalidad de esa información en un registro de usuario, cada vez que un usuario o actualizaciones de la lista! Disk I / O no es tan barato.

Por otro lado, las tablas a menudo pueden tener cien columnas o más. En lugar de dividir las distintas preocupaciones en tablas distintas, que requerirían una unión, todas están alineadas. Estos “modelos gordos” se consideran una mala práctica, pero no son raros.

Entonces las uniones son comunes pero no tan comunes como podrían ser. ¿Hay un escenario de diseño específico que le gustaría evaluar?

Si está utilizando bases de datos relacionales, está utilizando combinaciones.

La unión es la parte relacional . La lentitud se arrastra como un exponente. ¿Cuánto tiempo para seleccionar X ?, ¿cuánto tiempo para X * Y ?, ¿cuánto tiempo para X * Y * Z …? Cuanto mayor sea el número de registros, más lento será. Cuantas más uniones se usan, más lento. Cuanto más amplio se une, más lento (unión interna vs. izquierda / derecha vs. producto cartesiano, etc.)

El verdadero problema es que cuanto más desee almacenar, más lento será por su diseño.

Una forma funcional de evitar la desaceleración es reducir el tamaño de cada entidad utilizada en la unión. subsetX * subsetY * subsetZ … pero todavía se ralentiza con adiciones sin un diseño cuidadoso (alguna forma de limitar el tamaño inicial de la entidad).

Las alternativas NoSQL a las bases de datos relacionales hacen algo parecido a hacer tres selecciones en lugar de una selección con dos uniones. Un documento almacenado en una colección obtendría un puntero a un documento en otra colección. Después de recuperar los documentos que desea de X, luego recupere los documentos que desea de Y usando los punteros en X, luego recupere los documentos que desea de Z usando los punteros en Y.

La verdadera diferencia de velocidad es que el diseño desnormalizado no sufre la expansión ‘exponencial’.

More Interesting

¿Cuánto costará lograr que el sitio web sea 100% similar a 'Groupon.com' o 'Scoopon.com.au'?

¿Cómo se pueden hacer más efectivas las ventanas emergentes o los mensajes incrustados en los sitios web?

Después de construir un sitio web, necesito tener un control completo del mismo. ¿Cómo evito que el creador del sitio acceda al sitio web una vez finalizado?

¿Cuáles son algunas de las peores prácticas de desarrollo de sitios web y aplicaciones?

Comencé un sitio web de preguntas y respuestas con un diseño único. ¿Qué me puede sugerir para lograr más usuarios?

¿Cuáles son los pros y los contras de Amazon EC2 frente al Servidor dedicado? Tenemos 5 servidores dedicados y estamos debatiendo la migración a EC2 de Amazon. ¿Cuál ha sido la experiencia para las personas que migran en términos de rendimiento y costo?

¿Cómo es mi sitio web www.metrikhive.in?

¿Qué es mejor para construir un sitio web en chino (80% chino, 20% inglés) que ofrece 50 millones de visitas mensuales: Drupal o Ruby on Rails?

¿Cuál es el mejor marco de JavaScript?

¿Qué tan difícil es crear un sitio web con un método de pago?

¿Cuáles son las empresas de diseño web más populares que ofrecen servicios a nivel mundial?

¿Cuáles son algunas formas en que desearía que Wattpad cambie?

¿Cómo se generan las contraseñas de un solo uso para los sitios web?

¿Cuál es la forma más fácil de hacer una copia duplicada de mi sitio web de WordPress? Quiero una copia exacta de mi sitio web duplicada a otro hosting y nombre de dominio.

¿Qué sitios web son similares a la tienda PLR?