Partición (base de datos)

Una partición es una división de una base de datos lógica o de sus elementos constituyentes en distintas partes independientes. La partición de la base de datos normalmente se realiza por motivos de capacidad de administración, rendimiento o disponibilidad, o para equilibrar la carga. Es popular en los sistemas de gestión de bases de datos distribuidas, donde cada partición puede distribuirse en varios nodos y los usuarios del nodo realizan transacciones locales en la partición. Esto aumenta el rendimiento de los sitios que realizan transacciones regulares que involucran ciertas vistas de datos, manteniendo al mismo tiempo la disponibilidad y la seguridad.
Criterios de partición
Los actuales sistemas de gestión de bases de datos relacionales de alta gama proporcionan diferentes criterios para dividir la base de datos. Toman una clave de partición y asignan una partición según ciertos criterios. Algunos criterios comunes incluyen:
- Partición de rango: selecciona una partición determinando si la clave de partición está dentro de cierto rango. Un ejemplo podría ser una partición para todas las filas donde la columna "zipcode" tiene un valor entre 70000 y 79999. Distribuye tuples basados en los intervalos de valor (rangos) de algún atributo. Además de apoyar consultas exactas (como en la piratería), es adecuado para las consultas de rango. Por ejemplo, una consulta con un predicado “A entre A1 y A2” puede ser procesada por los únicos nodos que contienen tuples.
- Partición lista: una partición se asigna una lista de valores. Si la clave de partición tiene uno de estos valores, la partición es elegida. Por ejemplo, todas las filas donde la columna
Country
oIceland
,Norway
,Sweden
,Finland
oDenmark
podría construir una partición para los países nórdicos. - Partición compuesta: permite ciertas combinaciones de los esquemas de partición anteriores, por ejemplo, primero aplicar una partición de rango y luego una partición de hash. El hashing consistente podría considerarse un composite de hash y partición de lista donde el hash reduce el espacio clave a un tamaño que se puede enumerar.
- Partición de la plataforma redonda: la estrategia más simple, asegura la distribución uniforme de datos. Con
n
particiones, lasi
t tuple en orden de inserción se asigna a la partición(i mod n)
. Esta estrategia permite el acceso secuencial a una relación que debe hacerse en paralelo. Sin embargo, el acceso directo a tuples individuales, basado en un predicado, requiere acceder a toda la relación. - Partición Hash: aplica una función hash a algún atributo que produce el número de partición. Esta estrategia permite consultas exactas sobre el atributo de selección para ser procesadas por exactamente un nodo y todas las demás consultas para ser procesadas por todos los nodos en paralelo.
Métodos de partición
La partición se puede realizar construyendo bases de datos más pequeñas (cada una con sus propias tablas, índices y registros de transacciones) o dividiendo elementos seleccionados, por ejemplo, solo una tabla.
Partición horizontal
La partición horizontal implica colocar diferentes filas en diferentes tablas. Por ejemplo, los clientes con códigos postales inferiores a 50000 se almacenan en CustomersEast, mientras que los clientes con códigos postales mayores o iguales a 50000 se almacenan en CustomersWest. Las dos tablas de partición son ClientesEste y ClientesOeste, 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
La partición vertical implica la creación de tablas con menos columnas y el uso de tablas adicionales para almacenar las columnas restantes. Generalmente, esta práctica se conoce como normalización. Sin embargo, la partición vertical se extiende más allá y divide las columnas incluso cuando ya están normalizadas. Este tipo de partición también se denomina "división de filas", ya que las filas se dividen por sus columnas y pueden realizarse de forma explícita o implícita. Se pueden utilizar distintas máquinas físicas para realizar la partición vertical: almacenar columnas muy anchas o poco utilizadas, que ocupan una cantidad significativa de memoria, en una máquina diferente, por ejemplo, es un método de partición vertical. Una forma común de partición vertical es dividir datos estáticos de datos dinámicos, ya que es más rápido acceder a los primeros que a los segundos, particularmente para una tabla donde los datos dinámicos no se usan con tanta frecuencia como los estáticos. La creación de una vista en las dos tablas recién creadas restaura la tabla original con una penalización en el rendimiento, pero acceder únicamente a los datos estáticos mostrará un mayor rendimiento. Una base de datos en columnas puede considerarse como una base de datos que se ha dividido verticalmente hasta que cada columna se almacena en su propia tabla.