Saturday, May 26, 2012

Informix 11.70.xC5: It's available / Já está disponível

This article is written in English and Portuguese
Este artigo está disponível em Inglês e  Portguês

English version:
The new fixpack of Informix 11.70 (xC5) is available and the Infocenter documentation was just updated as well as the PDF sets of manuals.
Taken directly from the release notes the new features and functionalities are (comments added after the bullet items):
  • Administration
    • Plan responses to medium-severity and low-severity event alarms
      Mainly a documentation improvement. By describing each possible event ID and the recommended action, IBM is continuing the improvement of the alarm handler allowing the end user to costumize the ALARMPROGRAM scripts
    • IFX_BATCHEDREAD_INDEX environment option
      The batched index read feature can now be controled using SQL through the SET ENVIRONMENT statement
  • Application development
    • Improvement to the keyword analyzer for basic text searching
      An improvement on the way the Basic Text Seach datablade (BTS) handles the keyword analysis to create it's indexes
    • Increased SQL statement length
      It may look a small feature if you never hit the 64KB limit, but it can be a must have if you ever faced that limit. Currently the limit was increased to an absurd 4GB with the exception of the CREATE VIEW which is 2MB
    • Enhanced query performance
      This can be misleading. What it is in fact is that the size of the client/server communication buffer can now be changed to 2GB by using the FET_BUF_SIZE variable. The driver for this was a competitive situation where it was identified that this could be a bottleneck. Note that this can be important for UNLOADs, exports etc.
    • The Change Data Capture API sample program
      Not really a feature. One program that was only found on the docs is now available in $INFORMIXDIR/demo/cdc for convenience
  • Enterprise replication
    • Replication errors on leaf nodes
      Since the leaf nodes in an ER topology can't have much information about errors on other servers, that errors are removed from the syscdrerror tables on leaf nodes
  • Global language support
    • Scan strings with the ifx_gl_complen() functions
      Performance improvement for GLS code
  • Time Series data
    • Count the time-series elements that match expression criteria
      COUNTIF function
    • Remove old time-series data from containers
      Allows the re-use of space after old data removal
    • New operators for aggregating across time-series values
      Improvement to the TSRollup function
  • Data warehousing
    • Refresh data quickly without reloading the whole data mart
      A single partition (fragment) of a fragmented table can be sent to the IWA in-memory database
    • Use high-availability secondary servers to accelerate queries
      HDR, RSS and SDS servers can now be used to create and load datamarts. Previously they could only be used to accelerate queries. This is a big improvement if you want to mix OLTP and BI workloads since you could offload a large part of the BI to the secondary node(s) leaving the primary to the main OLTP work
    • New options added for the use_dwa environment variable
      Several new options for this variable allow you to gain more control about how a session uses the Informix Warehouse Accelerator and to collect more data to understand it's behavior
    • Support for new functions is implemented
      Several new functions are supported in the accelerator, which allows more queries to benefit from it. This time the functions added were: LEN, LENGTH, SUBSTR, SUBSTRING, TODAY, TRIM and YEAR
    • Support for the Solaris Intel x64 operating system added
      This increases the number of platforms where the connection to Informix Warehouse Accelerator is supported. Currently they are: AIX, HP-UX, Solaris Sparc, Solaris Intel and Linux. I'd say the only one missing that matters is Windows!
To be honest, at first glance I didn't find this fixpack had the number of new features that we've become used to in the latest ones. My fellow colleague from tech support immediately found this good (sometimes new features bring new issues and tech support likes "quiet" releases that allow easy rollback to previous versions). But on the other hand if we look into some of these features, we really see that our R&D has been busy. I'm thinking about the Warehouse Accelerator features, the Timeseries and in particular the size of the SQL statements. I believe some people have been struggling with this for many years. And the increase of the maximum client/server communication buffer, can have a dramatic effect on some specific situations. But this is not all. This release has a lot of work that unfortunately is not documented yet. This is divided into two areas:
  1. Performance improvements that can cause issues on some customers or that break undocumented behaviors that applications rely upon. These features have hidden variables that can change the engine behavior if customers hit any issues. Personally I don't like this kind of things, but after seeing some explanations about some of these I tend to understand why this approach was adopted. I have sporadically faced some of these situations over the years and I noticed that one behavior may be desirable in some cases and not in others
  2. New functionality that may be provided to some selected customers or partners while still being developed and improved. This will surely be part of the next major release and the benefit is that they'll be much more stable when they're officially released
So, in short, another fixpack, some significant improvements in Warehouse Accelerator, Timeseries and other very specific points, and a lot of "undercover" work that follows a well established roadmap. Of course I could be accused of "whispering" simply to promote the work of R&D, but if you follow my posts you must agree I don't usually do this. Some stuff that I'm thinking about have recently come up on IIUG mailing list discussion, following up on some other blog's post, so I'm not even the first one to "leak" some of this. Hopefully in the future I'll be able to post something like "do you remember when I whispered about some undercover work? That was this and this and that..." and then you can pick up the "old" 11.70.xC5 fixpack and try a couple of tricks :)

Versão Portuguesa:

O novo fixpack do Informix 11.70 (xC5) está disponível e a documentação no Infocenter e nos PDFs foi actualizada
Tirado diretamente das release notes as novas funcionalidades são (comentários adicionados após cada ponto):

  • Administração
    • Planeamento de respostas para alarmes de baixa e média severidade
      Essencialmente é uma melhoria na documentação. Ao descrever cada possível evento (ID) e as ações recomendadas, a IBM continua a melhorar o gestor de alarmes permitindo ao utilizador final costumizar o seu script para o ALARMPROGRAM
    • Opção de ambiente IFX_BATCHEDREAD_INDEX
      A funcionalidade batched read index pode agora ser controlada por SQL através da instrução SET ENVIRONMENT
  • Desenvolvimento aplicacional
    • Melhoria na análise de palavras chave para a pesquisa básica de texto
      Uma melhoria na forma como o Basic Text Search (BTS) datablade lida com a análise de palavras-chave para criação dos seus índices
    • Aumento do tamanho das instruções SQL
      Pode parecer uma pequena melhoria, se nunca atingiu o limite de 64KB, mas pode ser crítico se alguma vez se deparou com este limite. Desta feita o limite foi aumentado para uns absurdos 4GB, com exceção de um CREATE VIEW que está limitado a 2MB 
    • Performance de queries melhorada
      Esta descrição pode ser enganadora. Não se trata de uma alteração ao optimizador, mas sim da capacidade de aumentar o buffer de comunicação entre o servidor e o cliente para 2GB. Isto pode ser controlado com a variável de ambiente FET_BUF_SIZE que até aqui só podia ir até 32KB. A razão para esta alteração foi uma situação de competição com outra base de dados onde isto foi identificado como um factor limitativo da performance. Note-se que isto pode ser importante para UNLOADs, dbexports etc.
    • Programa de exemplo de Change Data Capture API
      Não é propriamente uma funcionalidade. Um programa que apenas podia ser encontrado no manual pode agora ser mais facilmente utilizado pois existe em $INFORMIXDIR/demo/cdc
  • Enterprise replication
    • Erros de replicação nos leaf node
      Dado que os nós "folha" numa topologia ER não podem ter muita informação sobre erros de outros servidores (acima na cadeia), esses erros foram removidos da syscdrerror nos servidores "folha"
  • Suporte global language
    • Varrer strings com as funções  the ifx_gl_complen()
      Melhoria de performance no código GLS
  • Dados Timeseries
    • Contar os elementos time-series que verificam uma expressão de critério
      Função COUNTIF
    • Remoção de dados antigos de containers de time-series
      Permite a re-utilização de espaço após a eliminação de dados antigos
    • Novos operadores para agregação de valores time-series
      Melhoria na função TSRollup
  • Data warehousing
    • Refrescamento rápido de dados sem re-carregar todo o data mart
      Podemos refrescar apenas uma partição (fragmento) de uma tabela na base de dados in-memory do IWA
    • Utilizar os servidores secundários para acelerar as queries
      Os servidores HDR, RSS e SDS podem ser usados para criar e carregar data marts. Anteriormente apenas podiam ser usados para acelerar queries. Isto é uma grande melhoria se quer misturar utilizações OLTP e BI dado que se pode direcionar toda a carga de BI para os nós secundários, deixando o primário liberto para o trabalho OLTP
    • Novas opções adicionadas à variável use_dwa
      Várias opções foram adicionadas a esta variável para providenciar maior controlo sobre como uma sessão utiliza o Informix Warehouse Accelerator e para recolher mais dados para entender o seu comportamento
    • Suporte para novas funções
      Várias novas funções são suportadas pelo acelerador, o que permitirá que ainda mais queries sejam aceleradas. Desta feita as funções adicionadas foram: LEN, LENGTH, SUBSTR, SUBSTRING, TODAY, TRIM e YEAR
    • Suporte para o sistema operativo Solaris Intel x64
      Aumentou a lista de plataformas que suportam a conexão ao Informix Warehouse Accelerator. Atualmente são: AIX, HP-UX, Solaris Sparc, Solaris Intel e Linux. Diria que a única ausência relevante será o Windows!
Para ser  honesto, à primeira vista, não me pareceu que este fixpack tivesse o mesmo número de funcionalidades a que nos temos habituado nos últimos. O meu colega do suporte técnico considerou imediatamente que isto era positivo (por vezes funcionalidades novas trazem novos problemas e o suporte gosta de versões "calmas", e que permitam regressão com paragem e arranque simples). Mas por outro lado, se olharmos para algumas das novas funcionalidades, verificamos que realmente o desenvolvimento tem estado bastante ocupado.

Estou a pensar em particular nas funcionalidades do Informix Warehouse Accelerator, nas de TimeSeries e muito especificamente no alargamento do limite dos comandos SQL. Sei que alguns clientes têm sofrido com este limite há anos. E o aumento do tamanho máximo do buffer de comunicação pode ter um efeito dramático em situações específicas. Mas isto não é tudo. Esta versão incorpora muito trabalho que infelizmente não está documentado (ainda). Isto divide-se em duas grandes áreas:

  1. Melhorias de performance que podem causar problemas em alguns clientes ou que alteram comportamentos não documentados dos quais algumas aplicações podem depender. Estas funcionalidades tem associadas variáveis não documentadas que podem mudar o comportamento do motor caso os clientes encontrem algum problema. Pessoalmente não gosto deste tipo de configurações, mas após ter visto algumas explicações sobre algumas destas funcionalidades acabo por compreender o porquê de se ter seguido esta abordagem. Já encontrei algumas destas situações esporadicamente e verifiquei que um comportamento pode ser bom para uns casos e mau para outros
  2. Novas funcionalidades que podem ser disponibilizados a clientes e/ou parceiros selecionados enquanto ainda estão a ser desenvolvidas ou melhoradas. Estas serão certamente disponibilizadas numa próxima versão, sendo que o benefício desta abordagem é que quando for feita a introdução formal, estarão muito mais estáveis
Em resumo, mais um fixpack, algumas melhorias significativas no Informix Warehouse Accelerator,  Timeseries e outros pontos muito específicos, e muito trabalho de bastidores que segue um roadmap bem estabelecido. Claro que posso ser acusado de criar "boatos" simplesmente para promover o trabalho do desenvolvimento, mas se segue os meus artigos deverá concordar que tal não é o meu hábito. Algumas das coisas em que estou a pensar quando refiro o trabalho de bastidores foram referidas na lista de email do IIUG recentemente, no seguimento de um artigo de outro blog, portanto nem sequer sou o primeiro  a deixar passar alguma informação mais restrita. Seguramente no futuro ser-me-á possível escrever algo do tipo "lembram-se quando mencionei algum trabalho de bastidores? Referia-me a isto, isto e isto..." e depois poderá pegar na "velha" versão 11.70.xC5 e testar alguns truques :)

Tuesday, May 8, 2012

Informix Warehouse Accelerator: News / Novidades

This article is written in English and Portuguese
Este artigo está escrito em Inglês e Português

English Version
This is just a very short note to mention a blog post from Martin Muerderer on his excellent blog dedicated to Informix Warehouse Accelerator. He warns us that recent Linux versions (with libstdc++ 4.6) will cause problems for IWA. At startup (ondwa start) the user will get errors like

An assertion 'str.tellg() > 0' failed. Additional info: Invalid size definition '0' encountered for parameter SEND_QUEUE_SIZE

Some workarounds would work and we would be able to start it, but after that further problems will probably arise. I hit this sometime ago while making some home testing and just recently the issue was discussed in the IIUG mailing list

Currently the only solution is to use a supported OS version. But IBM already is aware of this so it should be solved in future fixpacks. The cause seems to be a change in the tellg() method, but I don't have more details.

Additionaly, on another post, Martin tells us about a new video and a new ebook about Informix Warehouse Accelerator.

Versão Portuguesa
Esta pequena nota serve apenas para dar conta de um artigo no excelente blog do Martin Fuereder sobre o Informix Warehouse Accelerator. O Martin avisa-nos que as versões mais recentes de Linux (com a versão 4.6 da libstdc++) causam problemas no IWA. No arranque (ondwa start) o utilizador verá erros como:

An assertion 'str.tellg() > 0' failed. Additional info: Invalid size definition '0' encountered for parameter SEND_QUEUE_SIZE

Embora haja forma de contornar o problema e permitir o arranque, é expectável que surgissem outros problemas durante a utilização. Eu tive este problema enquanto fazia alguns testes caseiros e isto foi discutido recentemente na lista de mail do IIUG.

De momento a única solução é usar um SO suportado. Mas a IBM já tem conhecimento do problema e deverá ser resolvido em fixpacks futuros. A causa para isto parece ser uma mudança no método tellg() mas não possúo mais detalhes.

Para além disto, o Martin informa-nos noutro artigo que existe um novo vídeo e um novo ebook sobre o Informix Warehouse Accelerator

Saturday, May 5, 2012

In memory DBMS / DBMS em memória

This article is written in English and Portuguese
Este artigo está escrito em Inglês e Português

English Version:

If you've been paying attention lately to the DBMS market you may have noticed that a lot of new things are hapening around in-memory and column stores databases. A set of papers are available from the IEEE Data Engineering Bulletin here:
There are articles about several current offers and yes, Informix Warehouse Accelerator is one of them. It's interesting to see that there is academic activity behind several products being release now. And as we would wish and expect Informix is among them. It's also interesting that although there are many differences between the products there are many similar or common roots. I believe this may be much more than a simple marketing wave. I think this new (not so new, really) technology is here to stay.

Versão Portuguesa:

Se tem prestado atenção ao mercado de DBMS terá notado que estão a acontecer muitas coisas em torno das bases de dados em memória e baseadas em colunas. Um conjunto de artigos do IEEE Data Engineering Bulleten está disponível em:
Existem artigos sobre várias ofertas, e sim, o Informix Warehouse Accelerator é um deles. É interessante ver que existe atividade académica por detrás de vários produtos que estão a ser lançados agora. É também interessante que apesar de haver muitas diferenças entre estes produtos, existem também muitas raízes similares. Acredito que isto pode ser muito mais que apenas uma onda de marketing. Penso que esta nova (não tanto assim) tecnologia veio mesmo para ficar