- Migração
- Mudanças no servidor que afetam a migração
Introdução de um novo parâmetro do $ONCONFIG (DISK_ENCRYPYION)
Introdução de uma nova variável de sessão (USE_SHARDING)
Introdução de uma nova variável de ambiente (IFX_LO_READONLY)
Este fixpack força mudanças na estrutura interna. Para voltar atrás será necessário efetuar uma reversão (onmode -b) - Administração
- Ver e re-executar comandos do DBAccess
O dbaccess tem agora uma opção (-history) que pode ser usada em modo direto (sem menus). Esta opção faz com que os comandos executados sejam numerados, para mais fácil re-execução de um comando anterior (run #). A lista de comandos já executados e o seu respetivo número pode ser obtida com o comando "history" - Compatibilidade JSON
- Operações (INSERT/UPDATE/DELETE) em shards de forma consistente
Quando trabalhamos com uma sharded collection, e inserimos uma linha que deverá pertencer a outro nó que não aquele a que estamos ligados, o registo deveria ser movido para o destino de forma assíncrona para o servidor correto. Agora, se assim o desejarmos, podemos pedir que a movimentação seja síncrona (two phase commit) e só então nos seja retornado o COMMIT - Pesquisa de texto utilizando expressões regulares
Finalmente introduzimos as funcionalidades dadas pelas expressões regulares no motor. Trata-se de um novo datablade que se auto-regista quando usamos as suas funções pela primeira vez (já existia um bladelet não oficialmente suportado). Funciona no MongoDB API e em SQL normal, com a introdução de uma série de funções como regexp_match(), regexp_split() etc. - Melhorias de compatibilidade JSON
Várias novidades em clientes MongoDB API: - Podem utilizar cursores nativos, o que permite maior eficiência em queries para efetuar paginação. Anteriormente o cliente teria de enviar uma query para cada página
- Os cursores referidos anteriormente têm um timeout para evitar que fiquem abertos mesmo após longos períodos de inatividade dos clientes
- Nova opção para fechar conexões inativas no listener de JSON
- Um novo parâmetro do listener (listener.http.headers.size.maximum) permite controlar o tamanho máximo dos cabeçalhos dos pedidos HTTP recebidos
- Enterprise replication
- Operações (INSERT/UPDATE/DELETE) em shards de forma consistente
Como a nota anterior para sharded collections, mas para tabelas tradicionais - Listar comandos de Enterprise Replication
Novo comando "cdr list catalog" permite obter uma lista de comandos CDR necessária para duplicar o ambiente corrente (para testes ou cópia para produção) - Desenvolvimento aplicacional
- Renomear índices gerados pelo sistema
Um índice gerado automaticamente pelo sistema é um índice criado pelo Informix para suportar uma constraint como chave primária, chave estrangeira, ou unique constraint.
Se removermos a constraint o índice é automaticamente eliminado. Estes índices distinguem-se dos normais porque o seu nome começa com um " " (espaço).
Agora temos a possibilidade de renomear estes índices o que tem duas vantagens: - Podemos querer standardizar os nomes dos índices
- Podemos querer remover a constraint mas manter o índice (o que tornará mais rápida a recriação da constraint se for essa a intenção)
- Utilização de espaço temporário
Uma das minhas favoritas! Era quase impossível obter a identificação das sessões que estavam a consumir espaço temporário na instância. Recentemente criei um script chamado ixtempuse para contornar essa dificuldade). Agora foi adicionada uma nova coluna (SID) à view da sysmaster chamada sysptnhdr. A coluna será preenchida para objetos temporários como hash tables, sorts, materialização de views etc. Portanto a partir deste fixpack será trivial obter a informação de que sessão(ões) está a consumir espaço temporário. - Suspender a validação de check constraints
Tals como as chaves estrangeiras, agora as check constraints também aceita a cláusula "no validate". Isto é muito importante nos seguintes cenários: - Quando importamos dados e sabemos que os mesmos estão corretos
- O
Informix verifica que os dados de uma tabela que está a ser adicionada
como fragmento de uma tabela fragmentada/particionada, validam a
expressão de fragmentação em uso.
Isto pode consumir muito tempo e recursos durante a execução da instrução ALTER FRAGMENT ATTACH, dado que força um full scan na tabela que é consumida. Uma solução para isto era criar uma check constraint na tabela que vamos adicionar que correspondesse à expressão de fragmentação. O otimizador tem inteligência para detetar a relação e evitar a verificação (dado que a constraint já o garante). Isto evita o tempo durante o ATTACH, mas implicava gastar os recursos na validação quando se criava a constraint. Ora agora com o "no validate" podemos criar a constraint instantaneamente, e evitar por completo o desperdício de tempo. Claro que a responsabilidade de garantir que os dados carregados estão corretos fica inteiramente a cargo do utilizador. - Conformidade com JDBC 4.0
Finalmente melhoramos a compatibilidade do driver nativo com o standard JDBC. Eu penso que termos drivers nativos e DRDA coloca o Informix numa situação delicada: Por um lado os drivers DRDA estão mais adequados aos vários standards e são mais frequentemente atualizados pois podem ser usados em várias bases de dados da IBM. Mas por outro lado não suportam algumas funcionalidades específicas do Informix e para corrigir isto o standard DRDA teria de ser modificado. Sendo um standard aberto isto não é fácil. Por isso é muito bom ver investimento feito nos drivers nativos. - Acesso a smart large objects em modo de leitura apenas
Uma aplicação pode optar por abrir smart large objects apenas em modo de leitura o que evita a sobrecarga que a gestão de locks traz. - Segurança
- Encriptação de ficheiros de dados
A partir deste fixpack poderemos usar encriptação de dados transparente ao nível dos dbspaces. Não irei entrar em detalhes muito técnicos, mas esta encriptação é totalmente transparente para as aplicações e utilizadores da base de dados. Destina-se a proteger os dados de administradores de sistema e possíveis cópias ou roubos de disco ou de problemas de privacidade levantados pela descontinuação de uso de discos antigos.
A forma como funciona é muito simples. Após configurar um novo parâmetro (DISK_ENCRYPTION) com o nome de uma keystore, qualquer dbspace novo será encriptado. Existe uma opção para os criar sem encriptação.
A encriptação de dbspaces já existentes pode ser alcançada através de backup/restore. Desencriptação de dbsapces já encriptados pode ser obtido da mesma forma.
Cada dbspace terá a sua própria chave de encriptação. O espaço ocupado não crescerá por via da encriptação. Encriptação de uma tabela ou conjunto de tabelas específico pode ser conseguido pela movimentação das mesmas para um dbspace encriptado - Time series
- Analítica avançada sobre dados timeseries
Novas funções para analisar dados timeseries, como pesquisa de padrões ou anormalidades, incluindo quantificação de similaridade, distância e correlação entre duas sequências - Melhorias em funções de timeseries
Várias melhorias no que pode ser usado como expressões para as funções CountIF e Apply - Embeddability
- Distribuição "embebida" mais fácil
O ifxdeploy pode ser usado como non-root e o seu ficheiro de configuração foi descontinuado em favor de parâmetros na linha de comandos, que foram expandidos
http://informix-technology.blogspot.com.br/2016/12/informix-1210xc8-is-out-informix.html