Solución:
No es una respuesta completa a la pregunta, pero responde lo que se pregunta en el título de la pregunta. Entonces, el significado general de la partición de base de datos horizontal y vertical es:
Partición horizontal implica poner diferentes filas en diferentes tablas. Quizás los clientes con códigos postales menores a 50000 se almacenan en ClientesEast, mientras que los clientes con códigos postales mayores o iguales a 50000 se almacenan en ClientesWest. Las dos tablas de particiones son ClientesEast y ClientesWest, mientras que se puede crear una vista con una unión sobre ambas para proporcionar una vista completa de todos los clientes.
Partición vertical implica la creación de tablas con menos columnas y el uso de tablas adicionales para almacenar las columnas restantes. La normalización también implica esta división de columnas en tablas, pero la partición vertical va más allá y divide las columnas incluso cuando ya están normalizadas.
Vea más detalles aquí.
Una proyección crea un subconjunto de atributos en una relación, por lo tanto, una “partición vertical”
Una selección crea un subconjunto de las tuplas en una relación, por lo tanto, una “partición horizontal”
Dada una mesa (r)
como
a : b : c : d : e
-----------------
1 : 2 : 3 : 4 : 5
1 : 2 : 3 : 4 : 5
2 : 2 : 3 : 4 : 5
2 : 2 : 3 : 4 : 5
Una expresión como
PROJECT a, b (SELECT a=1 (r))
-- SELECT a, b FROM r WHERE a=1
Haría”
a : b | c : d : e
-----------------
1 : 2 | 3 : 4 : 5
1 : 2 | 3 : 4 : 5
================= < -- horizontal partition (by SELECTION)
2 : 2 | 3 : 4 : 5
2 : 2 | 3 : 4 : 5
^ -- vertical partition (by PROJECTION)
Resultando en
a : b
------
1 : 2
1 : 2
Nigromante.
Creo que las respuestas existentes son demasiado abstractas.
Así que aquí mis intentos de una explicación más práctica:
Particionar desde el punto de vista de un desarrollador tiene que ver con el rendimiento.
Más exactamente, se trata de lo que sucede cuando tiene grandes cantidades de datos en sus tablas y aún desea consultar los datos rápidamente.
Aquí algunos extractos de diapositivas de Bill Karwin sobre qué es exactamente horizontal la partición se trata de:
Lo anterior es malo, porque:
La solución:
PARTICIÓN HORIZONTAL
La partición horizontal divide una tabla en varias tablas. Cada tabla contiene el mismo número de columnas, pero menos filas.
La diferencia: rendimiento de consultas y simplicidad
Ahora, sobre la diferencia entre particiones horizontales y verticales:
Los “Tribbles” también se pueden acumular en columnas. Ejemplo:
La solución a ese problema es PARTICION VERTICAL
La normalización adecuada es UNA forma de partición vertical
Para citar technet
La partición vertical divide una tabla en varias tablas que contienen menos columnas.
Los dos tipos de particiones verticales son la normalización y la división de filas:
La normalización es el proceso de base de datos estándar que consiste en eliminar columnas redundantes de una tabla y colocarlas en tablas secundarias que están vinculadas a la tabla principal mediante relaciones de clave primaria y clave externa.
La división de filas divide la tabla original verticalmente en tablas con menos columnas. Cada fila lógica en una tabla dividida coincide con la misma fila lógica en las otras tablas identificadas por una columna CLAVE ÚNICA que es idéntica en todas las tablas particionadas. Por ejemplo, unir la fila con el ID 712 de cada tabla dividida vuelve a crear la fila original. Al igual que la partición horizontal, la partición vertical permite que las consultas escaneen menos datos. Esto aumenta el rendimiento de las consultas. Por ejemplo, una tabla que contiene siete columnas de las que generalmente solo se hace referencia a las cuatro primeras puede beneficiarse de dividir las últimas tres columnas en una tabla separada. El particionamiento vertical debe considerarse con cuidado, porque el análisis de datos de múltiples particiones requiere consultas que unan las tablas.
La partición vertical también podría afectar el rendimiento si las particiones son muy grandes.
Eso lo resume muy bien.
Ahora en SELECT vs. PROJECT:
Esta publicación SO describe la diferencia como tal:
Seleccione Operación: Esta operación se utiliza para seleccionar filas de una tabla (relación) que especifica una lógica dada, que se llama como
predicate
. El predicado es una condición definida por el usuario para seleccionar filas a elección del usuario.Operación del proyecto: Si el usuario está interesado en seleccionar los valores de unos pocos atributos, en lugar de seleccionar todos los atributos de la Tabla (Relación), entonces debe optar por
PROJECT
Operación.
SELECT es una operación (declaración) SQL real, mientras que PROJECT es un término usado en álgebra relacional.
A juzgar por la publicación de esto en SO y no en MathOverflow, le sugiero que no lea libros de álgebra relacional si solo desea aprender SQL para desarrollar aplicaciones.
Si necesita urgentemente una recomendación para un bien libro sobre (avanzado) SQL, aquí hay uno
Antipatrones SQL: evitar las trampas de la programación de bases de datos
Bill Karwin
ISBN-13: 978-1934356555
ISBN-10: 1934356557
Ese es el único libro sobre SQL que vale la pena leer.
La mayoría de los otros libros sobre SQL que he visto se pueden resumir en esta declaración cínica sobre los libros de Photoshop:
Hay más libros sobre Photoshop que personas que realmente usan Photoshop.