Friday, March 30, 2012

Why or why not? / Porquê ou porque não?

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

English Version:
The Internet is a wonderful thing... You get to find all sorts of things and it's easy to spread your word, specially since the creation of the so called social networks... On a recent search on twitter I found a very interesting question from "SQLMountain / Michael Sexton". The question was:

"Why o why do vendors still use Informix?!? Looking at u #cisco"

After digging a bit I've learned that the author is a database architect with 12 years of experience. And apparently he works mainly with SQL Server. So I think that the apparent surprise is perfectly understandable in that context... But on the other hand, again by searching the net, I could find some answers to that question. In particular:

So, I'd say that the question is not properly formulated. It's not why "still". The chronology above shows an increasing, and not decreasing trend.
So I then tried to reverse the question: Why would you not use Informix? And here are some possible reasons (I'm obviously playing devil's advocate here) together with some thoughts:

  • It's not stable
    But it is, and customers keep telling me that, and showing me their uptimes to prove it
  • It's too complex
    But it isn't... Many Informix shops don't have a classic DBA (full time job of a specialized person). Usually the person taking care of Informix is a "many hats" kind of person
  • It lacks functionality
    I'm always wanting more... But the ones I wish for are usually not widely used in competitor products. And it has first class features like the high availability, the replication (ER), the extensibility
  • It's slow
    It isn't... I know that from personal experience, but that's what customers tell me also. It works well with less hardware than other competitors
  • The support is not good
    Err... though point, because I work for IBM. But because I work for IBM and because I have the privilege to work in customer environments that include many other (non-IBM) products, I know that Informix tech support is one of the best (if not the best) technical supports I've worked with or I've heard of. Yes, I may not be a trustworthy source of information from the readers point of view... But just recently I've heard the same comment from two people that don't even know each other, both talking about one of Informix's major competitors: "the first five interactions with ? technical support look like program ELIZA interactions". At the time I did not know what program ELIZA was. The incredible part of this story is that those two persons told be exactly the same within a couple of weeks.
  • It's expensive
    Well... this one is hard to discuss. The price lists are not really the price customers pay. But Informix has a wide variety of editions that range from free to everything (except compression) included. Some competitors charge extra for features even in the most expensive edition. And have lower limits (memory, processor, data size) on the free versions (which sometimes are not up to date with the current product versions, while IBM keeps the free versions on the same fixpack levels as the payed versions)
  • It lacks interoperability with other products
    Not really although this is a widespread idea. It has the usual interfaces (ODBC, JDBC, .NET), supports several languages (Java, C, PHP, Ruby, C#) and interacts with a ton of products (not only from IBM). To name a few examples:
    • Non IBM:
      • Oracle NetVault (backup)
      • Oracle ODI (Data Integrator)
      • Oracle WebLogic (J2EE application server)
      • Oracle BI
      • Informatica PowerCenter
      • Pentaho
      • Tomcat
      • Hibernate
      • JBoss
      • Alfresco
      • SugarCRM
      • Joomla
      • Drupal
      • Veritas Netbackup
      • HP OpenView (last time I was in touch with it)
      • HP DataProtector (backup)
    • IBM:
      • WebSphere Application Server
      • WebSphere MQ
      • WebSphere MQ Broker
      • DataStage (Information Server)
      • Optim
      • Guardium
      • Tivoli Storage Manager
      • Tivoli Monitoring (through Universal Agent)
      • Lotus Mashup Center
      • Cognos
  • It's not supported by third party application providers
    This is possibly the only real problema. But just acknowledging it may be a bit misleading and can hide one very obvious thought. We've been seeing a lot of concentration of applications under the same companies (Oracle bought PeopleSoft, Siebel, JDEdwards and had already an application division, Microsoft has Navision, SAP is entering the Database scene)... So, what does this tell you as a third party application developer? That most database providers will compete with you. So why not choose one database which supplier is not competing in the application market?
And then we could go through Informix's unique features:
  • Extensibility
    Every database has it, but things like TimeSeries, MQ datablade, Basic Text Search, GeoSpatial etc. are built around it. And I've experienced quite a few times how we can overcome the lack of some specific function. Easily and reliably.
  • Performance and efficiency
    These days we're seeing an hardware escalation. In part this happens because hardware is becoming cheaper and end user application code is getting more functional, but less efficient. This leads to the old "throw iron to the problem" paradigm. But I keep seeing heavy loads on top of Informix instances running on modest hardware. This represents cost savings
  • Replication and high availability features
    No other database on the market has so advanced features with such a low cost of implementation and maintenance. The competitors which include comparable functionality typically require extra hardware (like Infiniband) and several software products to make it work. We need just the database and the connection manager (included). A lightweight solution which again translates into cost savings and less complexity
  • Ease of upgrades
    The simplicity and reliability of the Informix upgrades have always been a fantastic feature. You can easily upgrade from very old versions "in place" (without moving data). The only concern you have currently is the time it may take to UPDATE STATISTCS. The traditional concern of what you'd have to do if the conversion failed was mostly mitigated by the CONVERSION GUARD feature. And of course, you can now migrate a cluster with no downtime (although the workload to do it may be complex for big systems)
  • Flexible Grid
    The ability to integrate different engine versions and hardware platforms under the same administration "unit" is a terrific feature.
  • The Warehouse Accelerator
    Effectively new technology (columnar in memory database) seamlessly integrated into the traditional disk based row store. Completely transparent to the applications
So, in short, I believe the correct question would be "why not?" instead of "why?". Feel free to comment and tell me I'm wrong (as long as you explain why).



Versão Portuguesa:

A Internet é uma coisa fantástica... É fácil encontrar todo o tipo de coisas e espalhar a nossa voz, especialmente após a criação das chamadas redes sociais... Numa pesquisa no Twitter há umas semanas encontrei uma questão interessante de alguém que usa o nome "SQLMountain (Michael Sexton". A questão era:

"Why o why do vendors still use Informix?!? Looking at u #cisco"

Ou se me permitem a tradução:

"Porquê, mas porque é que os fornecedores ainda usam Informix?!? Estou a olhar para vocês #cisco"

Após ter vasculhado um pouco percebi que o autor é um arquiteto de bases de dados, com 12 anos de experiência. E que aparentemente trabalha maioritariamente com SQL Server. Neste contexto penso que a aparente surpresa é perfeitamente compreensível... Mas por outro lado, e novamente procurando na net, podemos encontrar respostas a essa questão. Especificamente:

Assim, parece-me que a questão não está corretamente formulada. Não será porquê "ainda". A cronologia acima demonstra uma tendência crescente e não decrescente
Por isso tentei reverter a questão. Porque não deveria-mos usar Informix? E posso avançar algumas possíveis razões (obviamente vou fazer de advogado do diabo) juntamente com algumas ideias:

  • Não é estável
    Mas é... É isso que oiço dos clientes, e mostram-me os uptimes para o provar
  • É demasiado complexo
    Mas não é... A maioria das empresas que usam Informix não têm um DBA no sentido clássico (trabalho a tempo inteiro de uma pessoa especializada). Habitualmente a pessoa encarregue do Informix é um profissional multi-facetado com várias ocupações
  • Falta-lhe funcionalidades.
    Estou sempre a desejar mais... Mas as que mais falta sinto normalmente nem existem ou não são geralmente usadas nos produtos concorrentes. E tem funcionalidades de excelência como as características de alta disponibilidade, a replicação e a extensibilidade
  • É lento
    Mas não é...Tenho aprendido isso com a minha própria experiência, mas é a ideia que me chega dos clientes. E regra geral consegue resolver o mesmo tipo de carga com menos hardware que os concorrentes
  • O suporte é deficiente
    Hmmm... ponto difícil, porque trabalho para a IBM. Mas porque eu trabalho para a IBM e porque tenho o privilégio de passar muito tempo em clientes que usam muitos outros produtos (não IBM), posso atestar que o suporte Informix é um dos melhores (senão o melhor) dos que tive oportunidade de contactar ou de ouvir falar. Sim, dificilmente serei considerado uma fonte fidedigna deste tipo de informação... Mas ainda recentemente ouvi o mesmo comentário vindo de duas pessoas que nem se conhecem, em relação ao suporte de um dos maiores concorrentes do Informix: "as primeiras cinco interacções com o suporte técnico de ? pareciam interações com o programa ELIZA". Na altura nem sabia o que era o programa ELIZA. O que me espantou mesmo nesta história foi as duas pessoas me terem dito exatamente a mesma coisa num intervalo de poucas semanas. Não tenho ideia que isto aconteça com o suporte de Informix.
  • É caro
    Bom... Isto é difícil de discutir. Julgo que a maioria dos clientes não pagam o preço de lista. Mas o Informix tem um leque de edições que vão do completamente gratuito até ao que tem tudo (excepto a compressão) incluído. Muitos concorrentes cobram extras por determinadas funcionalidades mesmo na edição mais cara. E nas edições gratuitas têm mais restrições que o Informix (e por vezes não as mantêm atualizadas ao passo que a IBM lança os mesmos fixpacks em todas as edições)
  • Falta suporte a outros produtos ou não é suportado por outros produtos
    Nem tanto embora isto seja uma ideia instalada. Tem as habituais interfaces (ODBC, JDBC, .NET), suporta várias linguagens (Java, C, PHP, Ruby, C#, Perl) e interage com um grande número de produtos (não apenas IBM). Para nomear alguns:
    • Não IBM:
      • Oracle NetVault (backup)
      • Oracle ODI (Data Integrator)
      • Oracle WebLogic (servidor aplicacional J2EE)
      • Oracle BI
      • Informatica PowerCenter
      • Pentaho
      • Tomcat
      • Hibernate
      • JBoss
      • Alfresco
      • SugarCRM
      • Joomla
      • Drupal
      • Veritas Netbackup
      • HP OpenView (na última vez que tive contacto com ele)
      • HP DataProtector (backup)
    • IBM:
      • WebSphere Application Server
      • WebSphere MQ
      • WebSphere MQ Broker
      • DataStage (Information Server)
      • Optim
      • Guardium
      • Tivoli Storage Manager
      • Tivoli Monitoring (via Universal Agent)
      • Lotus Mashup Center
      • Cognos
  • Não é suportado por fornecedores aplicacionais
    Este será porventura o único problema real. Mas apenas reconhecer isso seria simplista e esconderia algo realmente importante. Nos últimos anos temos assistido a uma grande concentração de aplicações sob as mesmas empresas (a Oracle adquiriu a PeopleSoft, a Siebel, a JD Edwards e já tinha a sua própria divisão aplicacional, a Microsoft tem o Navision e a SAP está a entrar nas bases de dados)... O que é que isto lhe diz se for um produtor de uma aplicação? Que a maioria dos fornecedores de bases de dados irão competir consigo. Assim, porque não usar uma base de dados cujo fornecedor não está a competir no mercado de aplicações?

E depois podemos percorrer algumas das características únicas do Informix:
  • Extensibilidade
    Todas as bases de dados a têm, mas coisas como TimeSeries, o MQ datablade, o Basic Text Search (BTS), o Geo Espacial são construídos com base nessa extensibilidade. E já por diversas vezes atestei como usando a extensibilidade podemos resolver de forma simples alguns problemas e mesmo a falta de alguma função nativa
  • Performance e eficiência
    Actualmente estamos a assistir a uma "escalada" do hardware. Em parte isso acontece por causa do cada vez mais baixo custo do hardware ao mesmo tempo porque o código aplicacional corrido pelo utilizador final ganha funcionalidades e perde eficiência. Isto leva ao velho paradigma de "atirar ferro para o problema". No entanto continuo a ver utilizações intensas  em cima de instâncias Informix a correrem em hardware bastante modesto. Isto traduz-se em poupanças de custos
  • Replicação e funcionalidades de alta disponibilidade
    Nenhuma outra base de dados no mercado possuí funcionalidades tão avançadas com um custo de implementação e manutenção tão baixo. Os concorrentes que incluem funcionalidades comparáveis requerem hardware extra (como Infiniband) e vários produtos ou componentes de software para funcionarem. Nós necessitamos apenas da base de dados e do Connection Manager (incluído). Uma solução mais simples e leve que ao reduzir a complexidade baixa custos e requer menos conhecimentos para instalar, manter e operar.
  • Facilidade de upgrades
    A simplicidade e confiança dos upgrades de Informix sempre foram uma característica fantástica. Podemos fazer atualizações mesmo a versões bastante antigas "in place" (sem movimentação de dados). A única preocupação que temos atualmente prende-se com o tempo que demorará a atualizar as estatísticas. A preocupação tradicional sobre o que teríamos de fazer se uma conversão abortasse foi na sua maioria mitigada pela introdução da funcionalidade CONVERSION GUARD. E claro, agora podemos migrar um cluster sem paragem (embora o processo de o fazer se possa traduzir em operações complexas em sistemas grandes)
  • Flexible Grid
    A possibilidade de integrar motores de versões diferentes e a correr em hardware heterogéneo sob a mesma "unidade" de administração é um grande salto em frente.
  • O Warehouse Accelerator
    Tecnologia efetivamente nova (colunar e in--memory) integrada de forma simples no sistema tradicional de armazenamento em disco com formato ou organização de linha. Completamente transparente para as aplicações
Portanto, em resumo, acredito que a questão correta seria "porque não?" em vez de "porquê?". Sinta-se à vontade para comentar e dizer-me que estou enganado (desde que explique porquê)

1 comment:

Unknown said...

Someone who can ask such a ridiculous question is someone that definately has never used Informix in real life. I agree 100% about explaination.

It has been said about 2012 years ago : "Forgive them, because they do not know what they are doing".

I would apply this phrase in the present case :-)