También me he sumergido en esto y, aunque soy con mucho la referencia en el tema, hay algunos hechos clave que he reunido y puntos que me gustaría compartir:
Una partición es una división de una base de datos lógica o sus elementos constitutivos en distintas partes independientes. La partición de la base de datos normalmente se realiza por razones de capacidad de administración, rendimiento o disponibilidad, como por ejemplo, el equilibrio de carga.
https://en.wikipedia.org/wiki/Partition_(database)
Sharding es un tipo de particionamiento, como el particionamiento horizontal (HP)
También hay Particionamiento vertical (VP) por el que divide una tabla en partes distintas más pequeñas. La normalización también implica esta división de columnas en las tablas, pero la partición vertical va más allá de eso y divide las columnas incluso cuando ya está normalizado.
https://en.wikipedia.org/wiki/Shard_(database_architecture)
Realmente me gusta la respuesta de Tony Baco sobre Quora, donde te hace pensar en términos de esquema (en lugar de columnas y filas). Él dice que ...
" Particionamiento horizontal ", o fragmentación, es replicar [copiar] el esquema y luego dividir los datos en función de una clave de fragmento.
La " partición vertical " implica dividir el esquema (y los datos van a lo largo del recorrido).
https://www.quora.com/Whats-the-difference-between-sharding-DB-tables-and-partition-them
La Guía de particionamiento de bases de datos de Oracle tiene algunas buenas figuras. He copiado algunos extractos del artículo.
https://docs.oracle.com/cd/B28359_01/server.111/b32024/partition.htm
Cuándo dividir una tabla
Aquí hay algunas sugerencias sobre cuándo particionar una tabla:
- Las tablas de más de 2 GB siempre deben considerarse candidatos para la partición.
- Tablas que contienen datos históricos, en los que se agregan nuevos datos a la partición más nueva. Un ejemplo típico es una tabla histórica donde solo los datos del mes actual son actualizables y los otros 11 meses son de solo lectura.
- Cuando el contenido de una tabla debe distribuirse entre diferentes tipos de dispositivos de almacenamiento.
Poda de partición
La poda de partición es el medio más simple y también el más sustancial para mejorar el rendimiento mediante la partición. La poda de partición a menudo puede mejorar el rendimiento de la consulta en varios órdenes de magnitud. Por ejemplo, suponga que una aplicación contiene una tabla de pedidos que contiene un registro histórico de pedidos, y que esta tabla se ha dividido por semana. Una consulta que solicita pedidos para una sola semana solo accedería a una única partición de la tabla Pedidos. Si la tabla de pedidos tuviera 2 años de datos históricos, entonces esta consulta accedería a una partición en lugar de 104 particiones. Esta consulta podría ejecutarse 100 veces más rápido simplemente debido a la poda de partición.
Estrategias de partición
Puede leer su texto y visualizar sus imágenes que explican todo bastante bien.
Y, por último, es importante comprender que las bases de datos son extremadamente intensivas en recursos:
Muchos DBA se dividirán en la misma máquina, donde las particiones compartirán todos los recursos pero proporcionarán una mejora en el disco y la E / S al dividir los datos y / o el índice.
Mientras que otras estrategias emplearán una arquitectura de "nada compartido" donde los fragmentos residirán en unidades de cómputo separadas y distintas (nodos), teniendo el 100% de la CPU, disco, E / S y memoria para sí mismo. Proporcionando su propio conjunto de ventajas y complejidades.
https://en.wikipedia.org/wiki/Shared_nothing_architecture