Partición (base de datos) - Partition (database)

Opciones de particionamiento en una tabla en MySQL en el entorno de la herramienta Adminer .

Una partición es una división de una base de datos lógica o sus elementos constituyentes en distintas partes independientes. La partición de la base de datos se realiza normalmente por motivos de capacidad de gestión, rendimiento o disponibilidad , o para equilibrar la carga . Es popular en los sistemas de administración de bases de datos distribuidas , donde cada partición se puede distribuir en varios nodos, y los usuarios del nodo realizan transacciones locales en la partición. Esto aumenta el rendimiento de los sitios que tienen transacciones regulares que involucran ciertas vistas de datos, mientras se mantiene la disponibilidad y la seguridad.

Criterios de partición

Los sistemas actuales de administració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 un cierto rango. Un ejemplo podría ser una partición para todas las filas donde la columna "código postal" tiene un valor entre 70000 y 79999. Distribuye tuplas según los intervalos de valor (rangos) de algún atributo. Además de admitir consultas de coincidencia exacta (como en el hash), es adecuado para consultas de rango. Por ejemplo, una consulta con un predicado "A entre A1 y A2" puede ser procesada por los únicos nodos que contienen tuplas.
  • Partición de lista : a una partición se le asigna una lista de valores. Si la clave de partición tiene uno de estos valores, se elige la partición. Por ejemplo, todas las filas donde la columna Country es o bien Iceland , Norway , Sweden , Finland o Denmark podrían 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, aplicando primero una partición por rango y luego una partición hash. El hash consistente podría considerarse una combinación de hash y particionamiento de listas donde el hash reduce el espacio de la clave a un tamaño que se puede enumerar.
  • Partición round-robin : la estrategia más simple, asegura una distribución uniforme de los datos. Con las n particiones, la i tupla en el orden de inserción se asigna a la partición (i mod n) . Esta estrategia permite que el acceso secuencial a una relación se realice en paralelo. Sin embargo, el acceso directo a tuplas 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 que las consultas de coincidencia exacta sobre el atributo de selección sean procesadas por exactamente un nodo y todas las demás consultas sean procesadas por todos los nodos en paralelo.

Métodos de particionamiento

La partición se puede realizar creando bases de datos independientes más pequeñas (cada una con sus propias tablas , índices y registros de transacciones ) o dividiendo los elementos seleccionados, por ejemplo, una sola tabla.

  • La partición horizontal implica colocar diferentes filas en diferentes tablas. Por ejemplo, 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 Clientes Oeste. Las dos tablas de partición 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.
  • 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 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 que se utilizan con poca frecuencia, 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 particionamiento vertical es dividir los datos estáticos de los datos dinámicos, ya que el acceso al primero es más rápido que al segundo, particularmente para una tabla donde los datos dinámicos no se utilizan 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 el acceso a los datos estáticos solo mostrará un mayor rendimiento. Una base de datos en columnas se puede considerar como una base de datos que ha sido particionada verticalmente hasta que cada columna se almacena en su propia tabla.

Ver también

Referencias