

# Noções básicas do particionamento no Babelfish
<a name="babelfish-partition"></a>

A partir da versão 4.3.0, o Babelfish introduz o particionamento de tabelas e índices com suporte limitado. As seções a seguir fornecem detalhes sobre como criar funções de partição, definir esquemas de partição e implementar tabelas e índices particionados no Babelfish. 

**Topics**
+ [Introdução ao particionamento no Babelfish](#babelfish-partition-function-views)
+ [Limitações e soluções alternativas](#babelfish-partition-limitations)

## Introdução ao particionamento no Babelfish
<a name="babelfish-partition-function-views"></a>
+ **Funções de partição:**
  + `CREATE PARTITION FUNCTION:` define como uma tabela ou um índice é particionado especificando o tipo de coluna de particionamento e o intervalo de valores de cada partição.
  + `DROP PARTITION FUNCTION:` remove uma função de partição existente.
+ **Esquemas de partição:**
  + `CREATE PARTITION SCHEME:` define o mapeamento entre partições e grupos de arquivos.
**nota**  
No Babelfish, os grupos de arquivos são tratados como objetos fictícios e não representam locais de armazenamento físico.
  + `DROP PARTITION SCHEME:` remove um esquema de partição existente.
+ **Função do sistema:**
  + `$PARTITION:` essa função do sistema exibe o número da partição à qual um valor especificado em uma coluna de particionamento pertenceria em uma tabela particionada especificada.
+ **Tabelas e índices particionados:**
  + `CREATE TABLE ... ON partition_scheme_name (partition_column_name):` cria uma tabela particionada com base em um esquema de particionamento e uma coluna de particionamento especificados.
  + `CREATE INDEX ... ON partition_scheme_name (partition_column_name):` cria um índice particionado com base em um esquema de particionamento e uma coluna de particionamento especificados.
+ **Visualizações do sistema para particionar metadados:**

  As seguintes visualizações do sistema foram adicionadas para fornecer metadados relacionados ao particionamento:
  + `sys.destination_data_spaces`
  + `sys.partitions`
  + `sys.partition_functions`
  + `sys.partition_parameters`
  + `sys.partition_range_values`
  + `sys.partition_schemes`

## Limitações e soluções alternativas
<a name="babelfish-partition-limitations"></a>

Os seguintes recursos de particionamento do SQL Server ainda não são aceitos no Babelfish:
+ `ALTER PARTITION FUNCTION` e `ALTER PARTITION SCHEME`.
**nota**  
O Babelfish não comporta operações de divisão e de mesclagem. Defina todas as partições nas funções de partição durante a criação, pois não é possível adicionar nem remover partições posteriormente.
+ Colunas computadas como colunas de particionamento.
+ Utilitários `INSERT BULK` e `BCP` para tabelas particionadas.
+ Opção de limite `LEFT` para funções de partição.
+ Tipo de dados `SQL_VARIANT` para funções de partição.
+ `TRUNCATE TABLE ... WITH PARTITION`.
+ `ALTER TABLE ... SWITCH PARTITION`.
+ Índices particionados não alinhados, como esquema de partição e coluna de partição que diferem da tabela particionada.
+ A migração do DMS da origem do Babelfish é possível somente com tarefas de carga total em tabelas particionadas.
+ Uso de agrupamento na função de partição.
+ Uso de uma coluna de particionamento com um agrupamento diferente do agrupamento padrão do banco de dados.
+ O Babelfish não aceita essas opções de sintaxe, mas fornece soluções alternativas: 
  + Uso do esquema de partição com restrições ou índices na instrução CREATE TABLE.
  + ALTER TABLE ... ADD CONSTRAINT ... ON partition\_scheme\_name (partition\_column\_name).
**nota**  
Você pode configurar o hatch de escape `babelfishpg_tsql.escape_hatch_storage_on_partition` para ser ignorado. Isso permitirá que o analisador ignore a opção de esquema de partição usada com restrições ou índices, e o backend criará restrições ou índices individuais para cada partição.