Wednesday, October 31, 2012

Online LRU cleaning changes / mudanças na limpeza das LRUs online

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

English version:

Very quick post to document something which is not properly documented. While working at a customer I had the need to change the LRU cleaning parameters (min_dirty, max_dirty) without stopping the engine. The fine manual says this can be done by dynamically change the AUTO_LRU_TUNING parameter:

onmode -wm AUTO_LRU_TUNING=1,min=0.3,max=1

And this works fine... But there is a catch: If, like me yesterday, you have more than one BUFFERPOOL this will change the max/min for all of them. You may not want that... I had the solution somewhere in my personal notes, but as usual this was hard to find. Now that I did, I'm just sharing.... So, the solution would be:

onmode -wm AUTO_LRU_TUNING=bpool=0,1,min=0.3,max=1

Et voilá... the non documented option bpool allows us to define which of the BUFFERPOOL we want to change.


Versão Portuguesa:

Um artigo muito rápido para deixar documentado algo que não está completament documentado. Enquanto estava a trabalhar num cliente surgiu a necessidade de alterar os parâmetros de limpeza das LRUs (min_dirty, max_dirty) sem parar o motor. O manual refere que tal pode ser feito dinamicamente mudando o parâmetro AUTO_LRU_TUNING:

onmode -wm AUTO_LRU_TUNING=1,min=0.3,max=1


E isto funciona como esperado. Mas há um problema: Se estiver como eu ontem, em que tinha mais que uma BUFFERPOOL isto mudaria os parâmetros da todas elas. Podemos não desejar isto. Tinha a solução algures nas minhas notas, mas como é habitual não foi fácil de encontrar. Agora que o fiz estou apenas a partilhar informação. Assim a solução seria:


onmode -wm AUTO_LRU_TUNING=bpool=0,1,min=0.3,max=1


Et voilá... a opção não documentada "bpool" permite-nos definir qual das pools queremos mudar

Monday, October 29, 2012

Informix for newbies / Informix para novatos

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


English Version:

In recent weeks I've received or seen several requests for information from newcomers to Informix. This was requested directly while working at a customer, through direct email (blog driven) and was a public request in the IIUG mailing list. I suppose I could create a great blog post talking about how this means that Informix is raising more and more interest, but sharing information was the main reason to create this blog and I intend to stick with that. So, the purpose of this article is simply to share some information with the hope that it can help people who is interested in finding more about Informix. So my suggestions are (no special order):

  • http://www.informix-zone.com/
    This is a site created by Eric Herber. It was created several years ago (before I created my blog) and contains a lot of Informix related information. Specifically and for beginners, you can find an installation guide, a link to Informix Developer Edition download and links to the Informix Virtual appliance, a virtual machine image which already contains a pre-installed Informix environment and a guide to learn more from it
  • http://www.freeinformix.com/
    This is another site (created by Oninit) which contains a lot of Informix information and news. For learning purposes I recommend the Informix certification tutorials, which are well organized and provide information about several product areas
  • http://www-01.ibm.com/support/docview.wss?uid=swg27019520
    A central place to get links of most (if not all) Informix documentation.
  • http://planetids.com/
    A site that acts as a blog and other publications aggregator. You'll find links to a lot of blogs and also several Informix related publications (books, IBM redbooks etc.). We should thank again to Eric Herber for this excellent repository of information
  • Administering Informix Dynamic Server Building the Foundation (book by Carlton Doe)
    This is probably the most recent book about Informix. Written by a long time and distinguish element of the Informix community. You can find it easily in the usual bookstores (online or not)
  • Informix Library
    A page inside the IBM site where you can find lot's of links to Informix related documents. In particular I'd like to point the link to Informix related Redbooks. Redbooks are freely available books (PDF and recently ePub), sponsored by IBM
  • International Informix Users Group
    This is the main Informix user's group. The registration is free, by email, and you'll not receive spam.The group does a lot to promote Informix and to spread information related to it.
    You can find links, news, utilities etc. on the IIUG website.
    I really recommend that you subscribe to the group and participate in the several mailing lists it provides. You'll always find someone with some free time to answer your questions
  • Informix Chat with the labs
    Monthly webcasts which cover inumerous technical topics. These webcasts are recorded. Currently to access the files from past sessions require sending an email to request access
  • Informix on Facebook and Informix on Twitter
    The so called social networks are great places to interact and find information

For someone ho wants to start with Informix I'd recommend the use of the Virtual Appliance (everything already installed), or if you feel more adventurous just pick up the Developer Edition and follow the installation guide in Informix-Zone website. From there on, it really depends on what you want to do, but the certification tutorials seem a good choice.
Feel free to comment on this post if you'd like to add references.




Versão Portuguesa:

Nas últimas semanas recebi vários pedidos de informação de recém-chegados ao Informix. Foi-me pedida ajuda durante uma deslocação a um cliente, recebi um pedido diretamente por email (através do blog) e houve também um pedido público na lista de correio do IIUG. Provavelmente poderia criar um ótimo artigo falando de como isto significa que há mais interesse no Informix, mas o objetivo principal da criação deste blog foi a partilha de informação e tento manter-me fiel a esse princípio. Assim sendo, o que pretendo aqui é deixar alguma informação com a esperança que possa ajudar quem esteja interessado em aprender mais sobre Informix. As minhas sugestões são (sem nenhuma ordem especial):
  • http://www.informix-zone.com/
    Este é um website criado por Eric Herber. Foi criado há vários anos (antes de ter criado o meu blog) e contém muita informação relacionada com Informix. Em particular e para iniciados, pode encontrar um guia de instalação, uma ligação ao download do Informix Developer Edition e ligações à Informix Virtual appliance, uma imagem de uma máquina virtual que contém já pré-instalado um ambiente Informix e um guia para aprender mais com ele
  • http://www.freeinformix.com/
    Outro website com muita informação sobre Informix (criado pela Oninit). Para aprender sugiro os Informix certification tutorials, que são bem organizados e fornecem muita informação sobre vários assuntos relacionados com o produto
  • http://www-01.ibm.com/support/docview.wss?uid=swg27019520
    Uma única localização onde se pode aceder a quase toda (senão toda) a documentação sobre Informix
  • http://planetids.com/
    Um website que atua como agregador de blogs e outras publicações. Encontrará ligações para artigos de blogs e também outro tipo de publicações relacionadas com Informix (livros, redbooks da IBM etc.). Devemos agradecer novamente ao Eric Herber a existência deste website.
  • Administering Informix Dynamic Server Building the Foundation (livro de Carlton Doe)
    É provavelmente o livro mais recente sobre Informix. Escrito por um membro bem conhecido e de longa data da comunidade Informix. Pode facilmente encontrá-lo nas livrarias habituais (online ou físicas)
  • Informix Library
    Uma página dentro do website da IBM onde pode encontrar inúmeras ligações para documentação relacionada com Informix. Gostaria de salientar a ligação aos Redbooks relacionados com Informix. Os Redbooks são livros de acesso livre (PDFs e mais recentemente ePubs), patrocinados pela IBM
  • Grupo International de Utilizadores Informix
    Este é o grupo de utilizadores principal. O registo é gratuito, por correio eletrónico, e não receberá spam. O grupo faz muito para promover o Informix e para divulgar informação relacionada com o produto. Pode encontrar ligações, noticias, scripts etc.
    Recomendo vivamente a inscrição no grupo e a participação nas várias listas de email que disponibiliza. Encontrará sempre alguém com algum tempo livre para responder às suas questões. Para os leitores que preferem o Português, existe também o Grupo Brasileiro de Usuários de Informix - BRIUG
  • Informix Chat with the labs
    Webcasts com regularidade mensal que cobrem inúmeros temas técnicos. Estes webcasts são gravados. Neste momento o acesso requer o envio de um email com o pedido de acesos aos ficheiros das conferências passadas
  • Informix no Facebook (e em Português) e Informix no Twitter
    As redes sociais são lugares ótimos para interagir e procurar informação

Para quem queira começar com o Informix sugiro a utilização da Virtual Applliance (com tudo já instalado) ou caso se sinta mais aventureiro, efectuar o download da Developer Edition e seguir o guia de instalação do website Informix-Zone. A partir daí, realmente depende do que quer fazer, mas os guias para certificação parecem ser uma boa escolha
 Não hesite em comentar este artigo caso queira adicionar outras referências.

Wednesday, October 24, 2012

Informix 11.70.xC6

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


English Version:

As usual, I'm just reviewing the latest IBM Informix fixpack. The software was just released (yesterday, October 23). It's important to note that this fixpack is clearly on the "mature" phase of 11.70 and also that IBM is already working with selected customers on the next major release. As such, we should not expect too many news... Nevertheless, and I've been mentioning this to several customers, IBM uses the Agile methodology in Informix development. And one of the goals of this methodology is to provide new functionalities to customers as soon as possible. So, what am I saying with this mixed message? That even for a "quiet" fixpack we can find surprising new features. As usual, let's take a look at the release notes and comment on the new features section:

  • Administration
    • Enhancements to the OpenAdmin Tool (OAT) for Informix
      Just a version refresh for several components (Apache, PHP and PDO_INFORMIX)
    • Support for the same XID for transactions on different databases
      A new parameter IFX_XA_UNIQUEXID_IN_DATABASE allows that a global (XA) transaction ID can be repeated in different databases in the same instance. Or in other words, the scope of the transaction ID can be changed from the instance to the database level. This is essentially a compatibility feature.
    • Coordinating transactions within a high-availability cluster
      This is one of the surprises... A new parameter CLUSTER_TXN_SCOPE allows a DBA to define if the applications receive the COMMIT confirmation immediately or after the transaction information was propagated through the cluster (or just the current secondary server). This can be a bit confusing and some experimentation is required, but it basically avoids that an application that takes advantage of several cluster nodes hits some apparent data consistency issue caused by the asynchronous nature of the logical log propagation. It can also be useful if an application that changes data, triggers some other process that will read that same data from another node in the cluster. I would say this can be an invaluable option for future expansion of the clustering capabilities in Informix
    • Easier failover configuration for Connection Managers in a high-availability cluster
      We can now specify the failover policy at the engine level by setting a new parameter HA_FOC_ORDER that will take priority over the policy specified in the connection manager(s) connected to the instance
  • Application development
    • Enhanced support for OUT and INOUT parameters in SPL routines
      Another surprise. For most cases and most people this will seem irrelevant. But I recall a couple of situations where I've found the lack of support for OUT/INOUT parameters in SPL a big limitation. I'd like to return to this topic in a future blog post... Time will tell...
    • Additional functions for spatial data
      Enhanced compatibility with the ISO/OpenGIS standards
    • Return the default values of columns
      Enhancement to the Datablade API
    • SPL routines for application compatibility
      Yet another surprise. The functionality will not be a surprise for anyone participating in the vNext process (EVP), but it surely is surprising to see it in 11.7. The idea behind this is terribly simple, and I must confess I'm a big fan for this. We all know that Informix is extensible and that it's easy to create new functions in C language to implement some lacking functions. In fact I've been publishing a few examples of this. So, it's a great pleasure to see that IBM decided to do that and implement some compatibility functions in a new datablade. More specifically some well known packages called DBMS_ALERT, DBMS_LOB, DBMS_OUTPUT, DBMS_RANDOM, UTL_FILE are implemented.
      This can be a great help for anyone porting applications to Informix
  • Time Series data
    • Load time series data faster through a virtual table
      Performance improvement for the virtual table interface for TimeSeries containers
A few final comments:
  1. During an exchange of emails with one of the product architects a few years ago, he wrote something like "we should avoid creating too many parameters... Let's try to keep it simple"
    I could not agree more with him, and seeing so many new parameters worries me a bit and reminds me of this talk. On the other hand, a parameter means control, and I like that. So I'd say they're a necessary evil. On the good side, they're normally well commented in the default ONCONFIG and the newly introduced ones tend to be dynamic.
  2. If I worked in marketing, at this time I'd probably be keeping new features hidden so that I'd include them in the next major version as new stuff. It's good to see that this is not hapening and the main concern is clearly to provide value for customers ASAP
  3. Please, please, please.... Let the compatibility packages be just the beginning. I cannot find any reason why functions are not implemented this way, even if it's not the fastest implementation. In most cases developers need the functionality more than the performance. And later it can be moved into the native SQL layer implementation without breaking compatibility. This cannot be a solution for some SQL constructs, but for "pure" functions I'd use it. In fact it's not new... We've seen this in publicly available bladelets

Versão Portuguesa:

Como vem sendo habitual vou rever a última release do IBM Informix. O software acabou de ser disponibilizado (ontem, 23 de Outubro). É importante notar que esta release está já na fase "madura" da versão 11.70 e também que a IBM está já a trabalhar com clientes selecionados sobre a próxima versão do produto. Como tal não deveremos esperar grandes novidades... Ainda assim, e tenho referido isto a vários clientes recentemente, a IBM utiliza a metodologia Agile no desenvolvimento do Informix. E um dos objetivos do Agile é disponibilizar novas funcionalidades aos utilizadores tão cedo quanto possível. Portanto, o que estou a querer dizer com estas ideias contraditórias? Que mesmo numa release "calma" podemos encontrar novas e surpreendentes funcionalidades. Como é costume vamos espreitar as notas da release e comentar a secção de novas funcionalidades: 

  • Administração
    • Melhorias no Open Admin Tool (OAT) para Informix
      Apenas o refrescamento de versões de vários componentes (Apache, PHP e PDO_INFORMIX)
    • Suporte para o mesmo XID para transacções em bases de dados diferentes
      Um novo parâmetro IFX_XA_UNIQUEXID_IN_DATABASE permite que o identificador de uma transação global (XA) possa repetir-se em bases de dados diferentes dentro da mesma instância. Ou por outras palavras, que o alcance de um identificador de transação possa ser alterado da instância para o nível da base de dados. É essencialmente uma funcionalidade para melhorar a compatibilidade com ferramentas externas
    • Coordenação de transações dentro de um cluster de alta disponibilidade
      Esta é uma das surpresas... Um novo parâmetro (CLUSTER_TXN_SCOPE) permite definir se a aplicação recebe a confirmação de um COMIIT imediatamente ou depois de a transação se propagar pelo cluster. (ou apenas para o nó secundário corrente). Isto pode parecer um pouco confuso e é necessária alguma experiência, mas basicamente evita que uma aplicação que tire proveito de vários nós do cluster encontre alguma aparente inconsistência de dados, causada pela natureza assíncrona da propagação dos logical logs. Pode ser também útil se uma aplicação que altere dados, despolete depois outro processo que vá ler esses mesmos dados em outro nó do cluster. Diria que isto pode ser uma opção de muito valor para as futuras expansões de funcionalidade de clustering do Informix
    • Mais fácil configuração de failover para os Connection Managers num cluster de alta disponibilidade
      Podemos especificar a política de failover ao nível do motor através de um novo parâmetro (HA_FOC_ORDER) que terá prioridade sobre o que for especificado na configuração do Connection Manager(s) ligado(s) à instância
  • Desenvolvimento aplicacional
    • Melhoria no suporte a parâmetros OUT e INOUT nos procedimentos/funções em SPL
      Mais uma surpresa. Na maioria dos casos e para a maioria das pessoas isto parecerá irrelevante. Mas lembro-me de um par de situações onde a falta de suporte a parâmetros OUT/INOUT foi uma grande limitação. Gostaria de retornar ao tema num próximo artigo... O tempo o dirá...
    • Mais funções para dados spatial
      Melhoria na compatibilidade com os standards  ISO/OpenGIS
    • Retornar os valores por omissão das colunas
      Melhorias na API dos Datablades
    • Rotinas SPL para compatibilidade aplicacional
      Mais uma surpresa. Esta funcionalidade não será novidade para quem esteja a participar no processo de avaliação da próxima versão (EVP), mas é surpreendente vê-la na 11.7. A ideia por detrás disto é extremamente simples, e devo confessar que sou um fã da mesma. Todos sabemos que o Informix é facilmente extensível e que é fácil criar funções em C que implementem funções que não existem no Informix. Inclusivamente já tenho publicado alguns artigos dando alguns exemplos. Assim, é com grande prazer que vejo a IBM decidir implementar funções "de compatibilidade" num novo datablade. Mais especificamente alguns pacotes bem conhecidos, chamados DBMS_ALERT, DBMS_LOB, DBMS_OUTPUT, DBMS_RANDOM, UTL_FILE foram implementados.
      Isto pode ser uma enorme ajuda a quem esteja a portar aplicações para Informix
  • Dados Time Serie
    • Carregar dados time series mais rápido através de uma tabela virtual
      Melhoria de performance na interface de tabela virtual sobre repositórios TimeSeries
Alguns comentários finais:
  1. Durante uma troca de emails com um dos arquitetos do Informix, há alguns anos atrás, ele escreveu algo como "devemos evitar criar muitos parâmetros... Tentemos manter a coisa simples"
    Não posso estar mais de acordo com ele, e ver tantos novos parâmetros assusta-me um pouco e relembra-me esta conversa. Por outro lado um parâmetro significa controlo e eu gosto disso. Diria que são um mal necessário. A parte boa é que estão normalmente bem comentados no ONCONFIG de exemplo e que os novos que têm sido introduzidos são normalmente dinâmicos
  2. Se trabalhasse no marketing, por esta altura estaria provavelmente a esconder funcionalidades para que as pudesse anunciar aquando da próxima versão. É bom ver que tal não está a acontecer, e que a preocupação continua a ser entregar funcionalidades aos clientes logo que possível
  3. Por favor, por favor, por favor!.... Que a introdução dos packages de compatibilidade seja apenas o princípio. Não consigo encontrar nenhuma razão para que funções não sejam implementadas desta forma, mesmo que isto não seja a implementação mais rápida. Na maioria dos casos os programadores necessitam da funcionalidade mais que da performance. E mais tarde podem ser movidas para a implementação na camada de SQL nativa sem quebrar a compatibilidade. Isto não poderá ser a solução para alguma sintaxe do SQL, mas para funções "puras" eu escolheria este caminho. E na realidade não é novo. Já vimos isto em bladelets disponíveis para o público



Saturday, October 13, 2012

ORDBMs: Informix vs Postgres vs Oracle

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

English version:
I just noticed on Twitter and other feeds that a recent article compares the object oriented features of three databases. And yes, one of them is Informix, which is not that bad for a database that many consider "old", "outdated", "gone" etc.
The author picked up Informix, Postgres and Oracle and makes some comparison between the way object oriented features are implemented.
You should read it yourself (it's a short article), but my understanding is:
  1. Informix and Postgres are more mature and have more deeply embedded concepts than Oracle
  2. Informix inherits primary keys and indexes in sub-types which Postgres can't do
  3. Informix does not support multiple inheritance which Postgres does (and because of that can't really support primary key inheritance)
  4. Oracle syntax for method reference looks "cleaner" than Informix and Postgres (which are identical)
  5. Oracle uses the tables as mere object repositories, and doesn't implement the OO features at the table level
Although the object oriented features are not usually used directly by customers, and in fact we haven't been seeing to many improvements, the fact is that the Informix extensibility is based on these characteristics. And it's much easier to understand it's importance if we consider all the datablades currently shipped with Informix (for free). I'm thinking about Basic Text Search (BTS), Spatial, Timeseries, Node, Binary, MQ, and we may see more in the future...


Versão Portuguesa:

Encontrei recentemente no Twitter e noutras fontes referências a um artigo que compara as funcionalidades de orientação a objetos de três bases de dados. E sim, uma delas é o Informix, o que não é mau de todo para uma base de dados que muitos consideram "antiga", "desatualizada", "extinta" etc.
O autor pegou no Informix, Postgres e Oracle e comparou a forma como foram implementas as funcionalidades de orientação a objetos.
Deverá ler por si (o artigo é pequeno), mas o meu entendimento foi o seguinte:
  1. O Informix e Postgres são mais maduros e embeberam os conceitos mas profundamente que o Oracle
  2. O Informix permite a herança das chaves primárias e índices, o que o Postgres não permite
  3. O Informix não suporta a herança múltipla o que o Postgres permite (e por causa disso não pode suportar a herança das chaves primárias)
  4. A sintaxe usada pelo Oracle parece mais "limpa" que a do Informix e Postgres (que são identicas)
  5. O Oracle utiliza as tabelas como mero repositório dos objetos não implementando as características OO ao nível das tabelas
Apesar de as funcionalidades de orientação a objetos não serem normalmente usadas diretamente pelos clientes, e de facto não termos vindo a ver grandes melhorias nestas funcionalidades, a verdade é que a extensibilidade do Informix é baseada nestes conceitos. E é muito mais fácil compreender a sua importância se considerarmos todos os datablades que acompanham o Informix (sem custos). Estou a pensar no Text Search (BTS), Spatial, Timeseries, Node, Binary, MQ, e poderemos ver mais no futuro...