

# Descripción de las particiones en Babelfish
<a name="babelfish-partition"></a>

A partir de la versión 4.3.0, Babelfish introduce la partición de tablas e índices con una compatibilidad limitada. En las siguientes secciones, se proporciona información sobre la creación de funciones de partición, la definición de esquemas de partición y la implementación de tablas e índices particionados en Babelfish. 

**Topics**
+ [Introducción a las particiones en Babelfish](#babelfish-partition-function-views)
+ [Limitaciones y soluciones provisionales](#babelfish-partition-limitations)

## Introducción a las particiones en Babelfish
<a name="babelfish-partition-function-views"></a>
+ **Funciones de partición:**
  + `CREATE PARTITION FUNCTION:` define cómo se particiona una tabla o un índice especificando el tipo de columna de partición y el rango de valores de cada partición.
  + `DROP PARTITION FUNCTION:` elimina una función de partición existente.
+ **Esquemas de partición:**
  + `CREATE PARTITION SCHEME:` define la asignación entre particiones y grupos de archivos.
**nota**  
En Babelfish, los grupos de archivos se tratan como objetos ficticios y no representan ubicaciones físicas de almacenamiento.
  + `DROP PARTITION SCHEME:` elimina un esquema de partición existente.
+ **Función del sistema:**
  + `$PARTITION:` es una función del sistema que devuelve el número de partición al que pertenecería un valor especificado en una columna de particiones de una determinada tabla con particiones.
+ **Tablas e índices con particiones:**
  + `CREATE TABLE ... ON partition_scheme_name (partition_column_name):` crea una tabla con particiones basada en un esquema de particiones y una columna de particiones específicos.
  + `CREATE INDEX ... ON partition_scheme_name (partition_column_name):` crea un índice con particiones basado en un esquema de particiones y una columna de particiones específicos.
+ **Vistas del sistema para la partición de metadatos:**

  Se han añadido las siguientes vistas del sistema para proporcionar metadatos relacionados con la partición:
  + `sys.destination_data_spaces`
  + `sys.partitions`
  + `sys.partition_functions`
  + `sys.partition_parameters`
  + `sys.partition_range_values`
  + `sys.partition_schemes`

## Limitaciones y soluciones provisionales
<a name="babelfish-partition-limitations"></a>

Babelfish aún no admite las siguientes capacidades de particionamiento de SQL Server:
+ `ALTER PARTITION FUNCTION` y `ALTER PARTITION SCHEME`.
**nota**  
Babelfish no es compatible con las operaciones de división y fusión. Defina todas las particiones en las funciones de partición durante la creación, ya que no podrá agregar ni eliminar particiones posteriormente.
+ Columnas calculadas como columnas de particionamiento.
+ Utilidad de `INSERT BULK` y `BCP` para tablas particionadas.
+ Opción de límite `LEFT` para funciones de partición.
+ Tipo de datos `SQL_VARIANT` para las funciones de partición.
+ `TRUNCATE TABLE ... WITH PARTITION`.
+ `ALTER TABLE ... SWITCH PARTITION`.
+ Índices con particiones no alineados, como, por ejemplo, el esquema de particiones y la columna de particiones que difieren de la tabla con particiones.
+ La migración de DMS desde el origen de Babelfish solo se admite para tareas de carga completa en tablas con particiones.
+ Uso de la intercalación en la función de partición.
+ Uso de una columna de particionamiento con una intercalación distinta de la intercalación predeterminada de la base de datos.
+ Babelfish no admite estas opciones de sintaxis, pero ofrece soluciones alternativas: 
  + Uso del esquema de particiones con restricciones o índices en la instrucción CREATE TABLE.
  + ALTER TABLE... ADD CONSTRAINT... ON partition\_scheme\_name (partition\_column\_name).
**nota**  
Puede configurar la escotilla de escape `babelfishpg_tsql.escape_hatch_storage_on_partition` para omitirlo. Esto permitirá que el analizador omita la opción de esquema de particiones utilizada con las restricciones o los índices, y el backend creará restricciones o índices individuales para cada partición.