Patrocinadores

Você está aquiLeitor de feeds

Leitor de feeds


Informix on Pi / Informix no Pi

Informix-Techonology - seg, 26/01/2015 - 20:12

IBM finally released the Pi version (original version here: http://informix-technology.blogspot.com/2015/01/informix-on-pi-informix-no-pi.html)


English version
A couple of weeks ago IBM discretely let us know that the Informix version for ARM V6 was available for download. It's accessible as a free developer edition on IBM site (Informix downloads) and only the usual site registration is required.
For those of you who may be wondering what is an ARM V6, it may be easier if I say it's the chip included in the well known SoC (System on a Chip) Raspberry Pi small computer.
For clarity I'm including a picture of my own, taken on top of a 20€ bill. The cost rounds 35€ plus some extras. It can be used for very small computer systems, as a controller for all sorts of DIY kits, as a media center solution, and now also as a database server, courtesy of IBM Informix development.

Accordingly to the machine notes it is designed to run on Raspbian (based on debian) which is widely used on the Raspberry Pi. But it may work on others. Raspian is one of the most used OS for Raspberry Pi and it's included in the NOOBS package so it's very easily accessible.

Please not that  ARM V6 is a limited CPU, and the Raspberry Pi itself has (depending on the models) 512MB of RAM. So this will not be your benchmark breaking machine. But if you need to add a database to a small project these specs are more than enough for Informix thanks to it's embedabillity.

The port includes most of the usual Informix functionality, including TimeSeries and the Spatial databalade, the new REST API etc.

Well worth checking!




Versão Portuguesa
Há um par de semanas atrás a IBM deixou saber de forma discreta que a versão para ARM V6 do Informix estava disponível para download. Está acessível como versão de desenvolvimento, de acesso gratuito no site da IBM (Informix downloads) sendo apenas necessário o habitual registo no site.
Para os que estiverem a pensar o que é um ARM V6, talvez seja mais fácil se eu disser que é o processador que vem incluído no bem conhecido SoC (Sistema num Chip) Raspberry Pi, um pequeno computador numa placa.
Para clareza estou a incluir uma imagem de um que possuo, neste caso tirada sobre uma nota de 20€. O seu custo é acima disso (uns 35€ + extras). Pode ser usado em pequenos sistemas computacionais, como controlador em kits "faça você mesmo" ou como media center, e a partir de agora como servidor de base de dados, cortesia do desenvolvimento IBM Informix.
 De acordo com as machine notes, foi desenhado para ser executado em Raspbian (baseado em debian), que é massivamente utilizado no Raspberry Pi. Mas poderá ser executado noutros. O Raspbian é um dos SOs mais usados no Raspberry Pi e vem incluído no pacote NOOBS, o que o torna muito facilmente acessível.

Note que o ARM V6 é um processador bastante limitado, e que o Raspberry Pi tem (dependendo dos modelos) 512MB de RAM. Isto não será portanto uma máquina para esmagar benchmarks. Mas se precisa de adicionar uma base de dados a algum dos seus projectos, estas especificações serão mais que suficientes para o Informix graças às suas conhecidas capacidades de embutimento.

O port incluí a maioria das habituais funcionalidades do Informix, incluindo TimeSeries e o datablade para informação Geo-Espacial, bem como a nova REST API etc.

Vale a pena ver!



Categorias: Blogs em Português

2015 is here. So what? / 2015 chegou. E então?

Informix-Techonology - ter, 06/01/2015 - 09:36

Will the world change in 2015? I mean really change? (original version here: http://informix-technology.blogspot.com/2015/01/2015-is-here-so-what-2015-chegou-e-entao.html )


English version
Again a long interval without posts. I clearly missed my 2014 target, but that's usual. However 2014 ranks as the 3rd year with more articles on the blog. Not bad. I usually start the year as many people with several "new year resolutions" that most of the times I don't accomplish. Maybe that's because I loose focus, or just maybe because I need to re-act to external changes and challenges. Those usually include plans for the blog, but because I'm tired of missing those targets I decided to start working and nothing is better than a subject that relates to 2015.
On December 18, 2014, two distinguish Gartner analysts, Donald Feinberg (@brazingo) and Merv Adrian (@merv) signed an interesting article on Gartner Blog's site entitled "DBMS Legacies are Very Sticky". In that article they "destroy" a "a financial analyst report" that stated that during 2015 the industry would start retiring Sybase and Informix systems. "Destroy" is my own interpretation. Their word to describe it was, and I quote: poppycock. Not being an English native I search Google for the word and the answer was:

noun informal
    nonsense.
    "he said I was talking poppycock"
    synonyms:    nonsense, rubbish, garbage, claptrap, balderdash, blather, blether, moonshine

They go on through a very detailed list of arguments relative to Sybase and then the same for Informix. Among this arguments I'd like to highlight the following:

  • "Over a decade later, it remains an integral part of an IBM information management portfolio that includes three primary DBMSs - DB2, IMS and Informix, and newer entrants such as Cloudant. IBM has continued to release new enhanced versions of Informix since the acquisition"
  • "Finally, the number of IBM Informix customers has continued to increase and its user base is very loyal, with one the largest and most active User Groups"
  • And then they position Informix as the IBM choice for:
    • "High-speed processing in verticals like retail (point of sale systems) and manufacturing"
    • "Time-series DBMS – one of its primary features, and a 'timely' one
    • "The Internet of Things, where its high-speed ingest capabilities and small footprint are well-suited"
 What bothers me the most is not that and unknown source (I tried to find out who were the authors of the referenced study without success) makes some false claims. What really bother me is the impact of those claims though the industry. Up to the point that Gartner feels the need to contradict them after being questioned about the conclusions. Are we given these studies the real value they have?
We live in a world full of information, but most of us don't care to consider the value of the information we get, or in other words how valid that is. That's something I'd really like to see changing in 2015...


Versão Portuguesa
De novo um grande intervalo sem artigos. Falhei claramente o objectivo para 2014, mas isso já vem sendo um hábito. No entanto 2014 fica em 3º lugar dos anos com mais artigos no blog. Não é mau. Normalmente começo os anos com várias resoluções de ano novo, que na maioria das vezes não alcanço. Pode ser por falta de foco nos objectivos ou apenas porque tenho de reagir a mudanças e desafios externos. Nessas resoluções incluo habitualmente objectivos para o blog, mas como estou cansado de os falhar decidi meter mãos à obra e nada melhor que começar com algo que se refere a 2015.
Em 18 de Dezembro de 2014, dois distintos analistas da Gartner, Donald Feinberg (@brazingo) e Merv Adrian (@merv) assinaram um artigo interessante no site de blogs da Gartner intitulado "DBMS Legacies are Very Sticky". Nesse artigo, os autores "destroem" um "relatório de analistas financeiros" que afirma que durante 2015 o sector das TI iria começar a reformar sistemas Sybase e Informix. "Destruir" é a minha própria interpretação. A palavra que usaram para descrever o referido estudo foi, e cito: "poppycok". Não sendo um nativo do Inglês procurei no Google o significado da palavra e o resultado foi:

noun informal
    nonsense.
    "he said I was talking poppycock"
    synonyms:    nonsense, rubbish, garbage, claptrap, balderdash, blather, blether, moonshine

Se me permitem a tradução, é um substantivo, informal com sinónimos como "sem sentido", "lixo" e outras palavras cuja tradução seria mais vaga, mas penso que já perceberam a ideia.
Eles escrevem de uma forma muito detalhada sobre vários argumentos relativos ao Sybase e depois fazem o mesmo para o Informix. De entre os seus argumentos para o Informix gostaria de destacar os seguintes (traduzido, mas podem consultar a versão original no artigo da Gartner ou na versão Inglesa deste mesmo artigo):
  • "Mais de uma década depois, (o Informix) permanece uma parte integrante do portfolio da área de gestão da informação da IBM que incluí 3 DBMS principais - DB2, IMS e Informix, e novas adições como o Cloudant. A IBM continuou a disponibilizar novas versões melhoradas do Informix desde a aquisição"
  • "Finalmente, O número de clientes IBM Informix tem continuado a aumentar e a sua base de utilizadores é muito leal, com um dos maiores e mais activos grupos de utilizadores"
  • E depois posicionam o Informix como a escolha da IBM para:
    • "Processamento de alta velocidade para mercados verticais como o retalhe (sistemas PoS) e manufactura"
    • "Time-series DBMS – Uma das suas principais características"
    • "A Internet das Coisas, onde a sua capacidade de 'ingestão' a alta velocidade e o pequeno 'foot-print' se adaptam bem"
O que me incomoda mais não é que uma fonte desconhecida (tentei encontrar os autores do estudo, mas sem sucesso) falsa afirmações falsas. O que realmente me incomoda é o impacto dessas afirmações no sector das TI. Chega ao ponto de a própria Gartner sentir a necessidade de contradizer o tal estudo depois de ser questionada sobre as suas conclusões. Estaremos a dar a estes estudos o seu real valor?
Vivemos num mundo cheio de informação, mas a maioria parece não se preocupar em avaliar o valor dessa mesma informação, ou o grau de confiança que nos merece. Isso é algo que gostaria de ver alterado em 2015...

Categorias: Blogs em Português

News from the East / Notícias do Oriente

Informix-Techonology - qui, 06/11/2014 - 23:15

Surprising news from China (original version here)


English version
It's time to remember the disclaimer that's always on the right side of the blog. This blog is related to my work, and I never hide who my employer is (nor do I forget it), but the views presented are my own. I just emphasize this because on this post I'll possibly present some extra aspects that may suggest an opinion or options, which is not my intention. I just want to provide as much context as possible.

Enough with the caution.... If you've been checking your social network accounts you may have heard about some arrangement that IBM established relative to Informix in the Chinese market. Members of the IIUG board of directors, like Art Kagel and Eric Vercelletto have been publishing articles, news, tweets, Facebook posts etc. A couple of days ago, it was published in IIUG insider (periodic newsletter). For convenience I add it to the bottom of this article.
Informix code is made available to a Chinese partner, so that it can be used for locally innovated products, adapted to local market needs. The resulting product can be licensed on the Chinese market only. It's a short press release, but with a lot of content... It took me a while to understand what this means and I accept I may haven't seen this from all possible angles. To start with, this looks like something new, and I honestly never heard bout a similar move from any software supplier.
I believe we need a bit more context to fully understand the reasoning behind all this. As a starting point, I must say that China is an unknown place for me. We don't ear too much about the country and many times we do, it's not for the best reasons. But anybody will agree on a few points:

  1. China importance in geographic, political and economic aspects can't be ignored. It's a huge country, a huge market and it's probably the only region in the world that has seen sustainable growth in the latest years.
  2. The relations between China and the western world have seen some tension. There are reports of organized cyber security attacks, industrial espionage etc.
  3. US government has ban a couple of Chinese companies from government contracts
  4. China has put up barriers to western technology adoption
  5. China is said to be trying to reduce the usage of "IOE" (IBM, Oracle and EMC)
  6. Chinese government tries to create some independence from foreign IT companies and foster local business and markets (the national technology agenda mentioned in the press release)
  7. China needs technology in order to grow. It's market needs technology to innovate and prosper. The Chinese market growth is a huge opportunity for global companies
 As you can imagine, and again, I can only imagine as I don't have any special insight or knowledge, some of these points seem contradictory: How can you grow business relations when there are politics involved? How can China increase the use of technology without becoming too dependent of foreign companies? How can global companies participate in this huge country modernization while complying with China national goals? These questions are not easy to answer and I'm glad I'm just a technical guy... I just stick to bits and bytes and I don't have to be concerned with these matters. But someone does and I suppose these sort of arrangements will become more frequent as they are possible ways to solve part of these dilemmas. Actually this is not totally new... IBM sold the xServer line (x86 based line) to Lenovo, a Chinese company. It has also licensed the Power technology to Chinese companies (in reality to anyone who wants to produce Power compatible chips). It also partners with local companies or the government to offer products adapted to the specific needs of the Chinese market. This is truly a bold step. And naturally there are very interesting points in it. To name a few:
  1. With strong directives from the government to increase the use of locally innovated products, Informix becomes a privilege player in the Chinese market. In fact we can find sites referencing it's presence in many large banks, telecommunication companies and government departments. That's obviously a good thing.
  2. China can use open source projects like MySQL and PostgresSQL and fork them to build their own products. In fact, the same entity involved with IBM on this agreement already did so. So, an obvious question pops up: Why are they willing to pay (financial details of the agreement were not disclosed) to be able to create innovation or customization on top of Infomix? For the Informix fans out there the answer is pretty obvious.... Because Informix is so good! I dare others to suggest other reasons...
  3. A broader penetration in the Chinese market will probably put Informix in the radar of many application suppliers. Would you want to continue to ignore a database chosen to be a reference in one of the biggest markets in the world?
  4. This is a hard blow to other competitors
  5. It would be nice if any improvement made by the Chinese partner that is not specific for the local market could be later incorporated into the core product.

Versão Portuguesa
É tempo de relembrar o termo de desresponsabilizarão que está permanentemente do lado direito do blog. Os artigos aqui escritos estão relacionados com o meu trabalho e nunca escondi quem é o meu empregador (nem nunca o esqueci), mas as opiniões aqui apresentadas são minhas e pessoais. Apenas reforço isto porque neste artigo poderei apresentar alguns aspetos extra ao assunto central que podem sugerir opiniões ou opções, o que na realidade não é minha intenção. Apenas pretendo adicionar mais contexto ao assunto base.

Chega de cuidados.... Se tem seguido as suas contas em redes sociais poderá já ter lido ou visto algo sobre um acordo que a IBM estabeleceu relativo ao Informix no mercado Chinês. Membros do conselho de diretores do IIUG, como o  Art Kagel e o  Eric Vercelletto têm publicado artigos, notícias, tweets e publicações no Facebook, etc. Há uns dias a notícia foi publicada no IIUG insider (publicação periódica). Por conveniência coloco aqui no final do artigo também.
O código do Informix foi disponibilizado a um parceiro Chinês, de forma a que possa ser usado para o desenvolvimento de inovações locais direcionadas ao mercado Chinês. O produto daí resultante poderá apenas ser licenciado no mercado Chinês. É uma nota de imprensa pequena, mas com muito conteúdo... Levou-me algum tempo a entender o que isto significa e aceito que não tenha visto todos os ângulos possíveis. Para começar este processo parece algo novo e nunca antes ouvi ou vi referências a algo semelhante feito por qualquer outro fornecedor de software.
Penso que necessitamos de um pouco mais de contexto para entender as razões por detrás deste acordo. Devo assumir também que a China é um mundo bastante desconhecido para mim. Nunca tive qualquer contacto com o mercado, clientes ou entidades oficiais Chinesas. Não ouvimos falar muito da China e quando tal acontece nem sempre é por bons motivos. Mas penso que os seguintes pontos são unânimes:
  1. A importância geográfica, política e económica da China é incontornável. É um país enorme com um mercado enorme e é provavelmente a única região do mundo que tem mantido um crescimento sustentável nos últimos anos
  2. As relações entre a China e o mundo ocidental têm sofrido de alguma tensão. Há relatos de tentativas de cibercrime organizado, espionagem industrial etc.
  3. O governo dos EUA baniu um par de companhias Chinesas de participar em contratação que envolva o governo
  4. A China levantou barreiras à adoção de tecnologia ocidental
  5. A China supostamente está a tentar reduzir o uso do que chamam "IOE" (IBM, Oracle e EMC)
  6. O governo Chinês tenta diminuir a dependência de companhias ocidentais e ao mesmo tempo fomentar os mercados e companhias locais (a agenda nacional para a tecnologia referida na nota de imprensa)
  7. A China necessita de tecnologia para inovar e prosperar. O crescimento do mercado Chinês é uma oportunidade única para as companhias globais
Como se pode imaginar, e novamente refiro que apenas posso fazer isso, pois não possúo qualquer conhecimento especial ou privilegiado, alguns destes pontos parecem contraditórios. Como é que se pode fazer crescer as trocas comerciais se há tanta política envolvida? Como pode a China aumentar o seu uso de tecnologia, não ficando ao mesmo tempo "refém" das companhias ocidentais? Como podem as companhias globais prestar serviços e ajudar na modernização deste enorme país, cumprindo ao mesmo tempo com os objetivos nacionais da China? Estas questões não têm uma resposta fácil e ainda bem que sou apenas um técnico... Fico-me pelos bits e bytes e não tenho de me preocupar com estes assuntos. Mas há quem tenha e por isso me parece que estes acordos podem tornar-se mais habituais visto que são uma forma de abordar estes dilemas. Na verdade, isto não é completamente novo... A IBM vendeu a linha se servidores X (baseados em x86) à Lenovo, uma companhia Chinesa. Também  licenciou a tecnologia Power a companhias Chinesas (na verdade a quem queira produzir processadores compatíveis). Também tem parcerias com companhias locais e entidades oficiais para oferecer produtos adaptados às necessidades específicas do mercado Chinês.
Isto é realmente um passo grande. E naturalmente há pontos muito interessantes. Para referir apenas alguns:
  1. Havendo fortes diretivas do governo Chinês para aumentar o uso de produtos resultantes de inovação local, o Informix torna-se um jogador importante no mercado Chinês. Na verdade conseguem-se encontrar sites locais que referem a utilização de Informix em muitos grandes bancos, companhias de telecomunicações e departamentos governamentais. Isto é naturalmente algo de bom
  2. A China pode usar projetos open-source como o MySQL e o PostgresSQL, criando forks para construir os seus próprios produtos. Na verdade a mesma entidade referida no acordo com a IBM já o fazia. Por isso uma questão óbvia salta à vista: Porque estão dispostos a pagar (os detalhes financeiros não foram divulgados) ara serem autorizados a costumizar e adaptar o Informix? Para os fãs de Informix a resposta é óbvia: Porque o Informix é muito bom!. Desafio os outros a encontrarem outra(s) explicação.
  3. Uma penetração maior no mercado Chinês provavelmente colocará o Informix no radar de muitos fornecedores de aplicações. Quem quererá ignorar uma base de dados de referência num dos maiores mercados do mundo?
  4. Isto é um golpe duro para a concorrência
  5. Seria interessante de melhorias feitas pelo parceiro Chinês que não sejam específicas para o mercado Chinês pudessem ser incorporado no produto core

The press-release / A nota de imprensa:

GBASE and IBM to collaborate on locally innovated database in China

BMI (NYSE: IBM) and General Data Technology Co.,Ltd, known as GBASE announces an agreement today, to create a locally innovated database product for the China marketplace. In support of the China government's national technology agenda, GBASE will develop and sell this local innovation based on IBM Informix technology.

The agreement extends the reach of IBM's Informix database technology into this market by providing a localized solution to better address the rapidly evolving needs of Chinese businesses. The agreement permits GBASE to build and license their own version of IBM Informix database, which will be offered to clients in the Chinese market as a standalone product solution.

The China market for database technology is estimated to be in excess of $700m according to IDC. The partnership between IBM and GBASE can fuel the growth of this market by creating a best in class database solution tailored to the unique requirements of the China marketplace.

"This agreement confirms IBM's innovation and commitment to growth in emerging markets in general and China specifically", states Sean Poulley, Vice President, IBM Databases and Database Management. "Our intent is to help partners and clients gain competitive edge and transform their business with innovative database technologies in China, with China, for China."

Informix is one of the world's most widely used databases, supporting clients who range from the largest multinational corporations to many regional and local small businesses. It is widely deployed in the retail, banking, manufacturing and government segments, all of which are important growth areas in China today.

Informix is well known for its innovative design, which enables a single platform that powers both OLTP and OLAP workloads for real-time analytics, scales easily for cloud environments and provides continuous availability. It's renowned for extremely high levels of performance and availability, distinctive capabilities in data replication and scalability, and minimal administrative overhead. With this partnership agreement these advantages will be made more readily available to the fast-growing Chinese market.

Categorias: Blogs em Português

Future... / Futuro...

Informix-Techonology - ter, 28/10/2014 - 22:54

Directly from IBM Insight via Twitter, some future features (original version here)



English version
The image below was recently twitted by the oficial @IBM_Informix twitter account with the following comment:

" Key Product Features in #Informix xC - Next coming within the next 12 months or so. #IoT #ibminsight "

It looks brave and bright... I call for your attention to the top right corner... And naturally the work started for multi-tenancy will probably continue

Versão Portuguesa
A imagem abaixo foi publicada recentemente no Twitter pela conta oficial do Informix no Twitter com o seguinte comentário:

" Key Product Features in #Informix xC - Next coming within the next 12 months or so. #IoT #ibminsight "

Parece ser um futuro desafiador e claro... chamo a sua atenção para o canto superior direito... E naturalmente será de esperar a continuação do trabalho iniciado com o multi-tenant





















Categorias: Blogs em Português

RESTing...

Informix-Techonology - dom, 19/10/2014 - 20:51

Let's take Informix for RESTing (original version here)

English version
After a couple of tiring weeks I feel it's time for a REST. Naturally I'm playing with words, and I'm referring to the new Informix ability to answer REST API requests. This was introduced recently in version 12. REST is the acronym for REpresental State Transfer. Very basically this is an architecture design that can be used to implement web services, or in a very simplistic manner a way to offer services based on HTTP requests.
IBM gave Informix the ability to answer REST requests. This was implemented using the same listener code that was previously introduced to accept MongoDB API protocol. But now we can start the listener with a different configuration that turns it into a REST gateway. In very generic terms we can map the following HTTP methods to SQL requests:

  • HTTP GET
    Select
  • HTTP POST
    Insert
  • HTTP PUT
    Update
  • HTTP DELETE
    Delete
The setup is very easy. Just locate the file jsonListener-example.properties in your $INFORMIXDIR/etc folder and change a couple of properties. For simplicity I deactivated authentication. The properties I changed were:
  • authentication.enable=false
  • authentication.localhost.bypass.enable=true
  • database.dbspace=dbs1
  • database.locale.default=en_US.819
  • listener.port=30001
    The TCP port where I'll receive REST requests
  • listener.type=rest
    To configure this listener as a REST listener (as opposed to MongoDB API listener)
  • security.sql.passthrough=true
  • url=jdbc:informix-sqli://primary:10020/sysmaster:INFORMIXSERVER=alfama;USER=informix;PASSWORD=password;DB_LOCALE=en_US.819
I saved the new file as jsonListener-rest.properties and then I started the new listener:
java -cp $INFORMIXDIR/bin/jsonListener.jar:/usr/informix/tomcat/tomcat-embed-core.jar com.ibm.nosql.informix.server.ListenerCLI -config $INFORMIXDIR/etc/jsonListener-rest.properties -logfile /usr/informix/logs/alfama.jsonListener-rest.log -start

Now we're in conditions to send REST requests to the database. The answers will be received in JSON format. In order to try this I created a very simple HTML page using some JavaScript. The code is:
<html>
<head>
<title>Informix REST access&lt/title>

<script language="JavaScript" type="text/javascript">

function ajaxget(){
   var mygetrequest=new XMLHttpRequest();
   mygetrequest.onreadystatechange=function(){
      if (mygetrequest.readyState==4){
         if (mygetrequest.status==200 || window.location.href.indexOf("http")==-1){
            document.getElementById("result").innerHTML = mygetrequest.responseText;
         }
         else{
            alert("An error has occured making the request");
         }
      }
    }
    var customerNum = encodeURIComponent(document.getElementById("customerNum").value);
    mygetrequest.open("GET", "http://primary:30001/stores/customer?query="+encodeURIComponent("{customer_num:"+customerNum+"}"), true);
    mygetrequest.send(null);
}

</script>

<body>

<form action="javascript:ajaxget()" method="get">
   <table>
    <tr>
       <td>Customer Num:</td>
       <td><input id="customerNum" name="customerNum" size="30" type="text" /></td>
    </tr>
    <tr>
      <td></td><td><input onclick="ajaxget()" type="button" value="submit" >
</td&gt
    </tr>
   </table>
</form>

<div id="result">
</div>
</body>

This translates into this page:



 And if we type a customer number, let's say "101" and press ENTER or Submit, it will call the REST API which will return a JSON document that we display:



For clarity, the JSON response was:
{
"customer_num":101,
"fname":"Ludwig",
"lname":"Pauli",
"company":"All Sports Supplies",
"address1":"213 Erstwild Court",
"address2": null ,
"city":"Sunnyvale",
"state":"CA",
"zipcode":"94086",
"phone":"408-789-8075"
}
This might sound familiar, as it's the same result you'd get from:
SELECT * FROM customer WHERE customer_num = 101;

How did I do it? Very simply just by sending a GET HTTP request with the following details:
http://primary:30001/stores/customer?query={customer_num:"101"}


Let's split this:
  • primary:30001
    hostname:port where the listener is listening
  • /stores
    The database name
  • /customer
    The table
  • query={customer_num:"101"}
    The "WHERE clause", in this case just
Very simple. For more detailed information please check the JSON compatibility guide. What I'd like to stress is how easy it is to reach Informix and get and put data on it. No drivers. Just the omnipresent language of today, called JavaScript. You can use it in your browsers, or in server side applications using Node.js and any of the well known application development frameworks that use Javascript.


Versão Portuguesa
Depois de um par de semanas bem cansativas, penso que é tempo para REST. Sim, estou a brincar com as palavras, e refiro-me à nova funcionalidade do Informix para responder a pedidos REST. Isto foi introduzido recentemente na versão 12. REST é o acrónimo para REpresental State Transfer. De forma muito simples isto é uma arquitetura que permite disponibilizar web services baseados em pedidos HTTP.
A IBM deu ao Informix a possibilidade de responder a pedidos REST. Isto foi implementado usando o mesmo código Java que permite ter um listener para a API do MongoDB. Mas agora podemos iniciar o listener com um ficheiro de configuração diferente que o torna num gateway REST. De uma forma ainda muito genérica podemos mapear os seguintes métodos HTTP nos respectivos tipos de instrução SQL:
  • HTTP GET
    Select
  • HTTP POST
    Insert
  • HTTP PUT
    Update
  • HTTP DELETE
    Delete
A configuração é muito fácil. Basta procurar o ficheiro jsonListener-example.properties em $INFORMIXDIR/etc e mudar algumas propriedades. Por simplicidade desactivei a autenticação. As propriedades que mudei foram::
  • authentication.enable=false
  • authentication.localhost.bypass.enable=true
  • database.dbspace=dbs1
  • database.locale.default=en_US.819
  • listener.port=30001
      O porto TCP onde irei receber os pedidos REST
  • listener.type=rest
    To configure this listener as a REST listener (as opposed to MongoDB API listener)
  • security.sql.passthrough=true
  • url=jdbc:informix-sqli://primary:10020/sysmaster:INFORMIXSERVER=alfama;USER=informix;PASSWORD=password;DB_LOCALE=en_US.819
Gravei o novo ficheiro com o nome jsonListener-rest.properties e depois lancei o novo listener:
java -cp $INFORMIXDIR/bin/jsonListener.jar:/usr/informix/tomcat/tomcat-embed-core.jar com.ibm.nosql.informix.server.ListenerCLI -config $INFORMIXDIR/etc/jsonListener-rest.properties -logfile /usr/informix/logs/alfama.jsonListener-rest.log -start

Estamos agora em condições de enviar pedidos REST para a base de dados. As respostas serão recebidas em formato JSON. Para testar isto criei uma página HTML muito simples, com uma função em JavaScript. Eis o código:
<html>
<head>
<title>Informix REST access&lt/title>

<script language="JavaScript" type="text/javascript">

function ajaxget(){
   var mygetrequest=new XMLHttpRequest();
   mygetrequest.onreadystatechange=function(){
      if (mygetrequest.readyState==4){
         if (mygetrequest.status==200 || window.location.href.indexOf("http")==-1){
            document.getElementById("result").innerHTML = mygetrequest.responseText;
         }
         else{
            alert("An error has occured making the request");
         }
      }
    }
    var customerNum = encodeURIComponent(document.getElementById("customerNum").value);
    mygetrequest.open("GET", "http://primary:30001/stores/customer?query="+encodeURIComponent("{customer_num:"+customerNum+"}"), true);
    mygetrequest.send(null);
}

</script>

<body>

<form action="javascript:ajaxget()" method="get">
   <table>
    <tr>
       <td>Customer Num:</td>
       <td><input id="customerNum" name="customerNum" size="30" type="text" /></td>
    </tr>
    <tr>
      <td></td><td><input onclick="ajaxget()" type="button" value="submit" >
</td&gt
    </tr>
   </table>
</form>

<div id="result">
</div>
</body>

Isto traduz-se na seguinte página:



E se inserirmos um número de cliente, digamos o "101" e dermos ENTER ou Submit, o código irá chamar a REST API, que por sua vez retorna um documento JSON que mostramos abaixo:



Por clareza, a resposta JSON foi:
{
"customer_num":101,
"fname":"Ludwig",
"lname":"Pauli",
"company":"All Sports Supplies",
"address1":"213 Erstwild Court",
"address2": null ,
"city":"Sunnyvale",
"state":"CA",
"zipcode":"94086",
"phone":"408-789-8075"
}
Isto pode parecer familiar, pois é o mesmo resultado que se obtém com:
SELECT * FROM customer WHERE customer_num = 101;

Como é que o fiz? Muito simplesmente enviando um pedido HTTP GET com os seguintes detalhes:
http://primary:30001/stores/customer?query={customer_num:"101"}

Vamos partir isto:
  • primary:30001
    Nome da máquina e porto onde o listener está à escuta
  • /stores
    O nome da base de dados
  • /customer
    A tabela
  • query={customer_num:"101"}
    A cláusula "WHERE", neste caso apenas com um filtro na coluna customer_num com o ovalor 101
Muito simples. Para informação mais detalhada consulte o guia de compatibilidade JSON. O que gostaria de salientar é quão fácil é alcançar o Informix e obter ou enviar dados para ele. Sem drivers. Apenas com a linguagem omnipresente dos dias de hoje, o JavaScript. Pode usá-la nos browsers ou do lado do servidor com Node.js e qualquer uma das suas famreworks de desenvolvimento aplicacional que usam JavaScript

Categorias: Blogs em Português

Re: Resposta automática: Digest 249 - 255

Forum Informix em Português do IIUG - sab, 13/09/2014 - 11:07

Cadê um moderador para retirar esta mensagem?




*******************************************************************************

To post a response via email (IIUG members only):

1. Address it to iiug-por@iiug.org
2. Include the bracketed message number in the subject line: [258]

*******************************************************************************

Categorias: Forums de Informix em Português

Re: Extents Informix

Forum Informix em Português do IIUG - ter, 22/07/2014 - 22:38

8 extents no é problema. É desculpa e má ;) Cumprimentos On Jul 22, 2014 2:36 PM, "AMILCAR MORETI" <ajmoreti@yahoo.com.br> wrote: > Ola Pessoal do Grupo, Saudações... > > Estou com uma duvida sobre a questão de fragmentação do Informix, existe > algum > numero minimo de extent para dizer que essa ou aquela tabela esta > fragmentada > e esta impactando diretamente na performance, tipo 8 extents ja é motivo > para > a desfragmentar uma tabela? porque ja esta impactando na performance do > banco? > > estou perguntando porque geralmente utilizo um calculo para cada tabela > para > chegar a um valor, utilizando o oncheck -pt e -pp , porem estou com um > problema num cliente onde um outro terceiro esta colocando o problema de > performance de sua aplicação nas tabelas da mesma esta com uma quantidade > de 8 > extents e isso ja é motivo para impactar na performance, antes de entrar em > discussão gostaria de ouvir a opiniao de voces a respeito do assunto. > > obrigado > > > > > > > --047d7bd75e6484f91504fed2655c ******************************************************************************* To post a response via email (IIUG members only): 1. Address it to iiug-por@iiug.org 2. Include the bracketed message number in the subject line: [257] *******************************************************************************

Categorias: Forums de Informix em Português

Resposta automática: Digest 249 - 255

Forum Informix em Português do IIUG - ter, 22/07/2014 - 17:05

Caro Leitor, No período de 07 à 26/07/2014 estarei em férias. Caso necessário favor entrar em contato com o Sr. Almir ramal 4890 Atenciosamente, Odair A Menegon IMPORTANTE: Esta mensagem é confidencial. Se você a recebeu por engano, por favor, elimine-a imediatamente e notifique seu remetente. Qualquer disseminação ou reprodução de seu conteúdo é expressamente proibida e, portanto, ilegal. The contents of this e-mail are confidential. If you received it by mistake, please, delete it immediately and notify the sender. Any dissemination or reproduction of its contents is strictly prohibited and, therefore, illegal. ******************************************************************************* To post a response via email (IIUG members only): 1. Address it to iiug-por@iiug.org 2. Include the bracketed message number in the subject line: [256] *******************************************************************************

Categorias: Forums de Informix em Português

Re: Insert de um banco loggin em um banco no loggi

Forum Informix em Português do IIUG - ter, 22/07/2014 - 16:28

Para ficar claro existem 4 modos: - BUFFERED: grava o log num buffer para depois gravar no disco - UNBUFFERED: grava o log diretamente no disco, garantindo a integridade da transação. - NO LOGGING: é o mais rápido, pois não gera log, mas é o mais "inseguro" pois o banco não tem como recuperar um archive ou fazer um rollforward. - ANSI: nunca usei, mas acho que um modo semelhante ao que o Oracle faz, com transação sempre aberta. http://www-01.ibm.com/support/docview.wss?uid=swg21325178 Buffered logging: The buffer will not be flushed until it is full. There is a potential loss of data should a system crash occur before the buffer is flushed to disk. Unbuffered logging: The buffer is flushed as soon as any transaction is complete (i.e. a commit or rollback record is written to the log buffer). This mode guarantees that the log data will be saved. Jairo Gubler ----- Mensagem original ----- De: "AMILCAR MORETI" <ajmoreti@yahoo.com.br> Para: iiug-por@iiug.org Enviadas: Terça-feira, 22 de julho de 2014 16:17:05 Assunto: Re: Insert de um banco loggin em um banco no loggi [254] Legal, no modo ubuffered acredito que fique bem mais rapido o banco, pois nao tem que passar pela gravacao dos logs, mas nesse caso a ideia é trabalhar com bancos nos dois modos, porque o que vai estar gerando log, é um banco que obrigatoriamente tem que estar setado como buffer, pois senao a aplicacao nao funciona, e a ideia de criar um banco em ubuffered é justamente para tentar deixar o banco mais agil. obrigado novamente. ******************************************************************************* To post a response via email (IIUG members only): 1. Address it to iiug-por@iiug.org 2. Include the bracketed message number in the subject line: [255] *******************************************************************************

Categorias: Forums de Informix em Português

Re: Insert de um banco loggin em um banco no loggi

Forum Informix em Português do IIUG - ter, 22/07/2014 - 16:17

Legal, no modo ubuffered acredito que fique bem mais rapido o banco, pois nao tem que passar pela gravacao dos logs, mas nesse caso a ideia é trabalhar com bancos nos dois modos, porque o que vai estar gerando log, é um banco que obrigatoriamente tem que estar setado como buffer, pois senao a aplicacao nao funciona, e a ideia de criar um banco em ubuffered é justamente para tentar deixar o banco mais agil. obrigado novamente. ******************************************************************************* To post a response via email (IIUG members only): 1. Address it to iiug-por@iiug.org 2. Include the bracketed message number in the subject line: [254] *******************************************************************************

Categorias: Forums de Informix em Português

Re: Extents Informix

Forum Informix em Português do IIUG - ter, 22/07/2014 - 16:13

Pois é Jairo é o que penso tb, por isso que antes de conversar com o pessoal da aplicação queria saber o que o pessoal do grupo acha a respeito do assunto, pois sempre vi mais de 8 extents e nunca vi essa degradação de performance, posso estar errado, afinal esse mundo nosso cada dia a gente esta aprendendo. mas obrigado pelo retorno. ******************************************************************************* To post a response via email (IIUG members only): 1. Address it to iiug-por@iiug.org 2. Include the bracketed message number in the subject line: [253] *******************************************************************************

Categorias: Forums de Informix em Português

Re: Extents Informix

Forum Informix em Português do IIUG - ter, 22/07/2014 - 11:09

Na minha experiência com INFORMIX, 8 extents é algo muito comum e não deveria gerar problema de desempenho. Jairo Gubler ----- Mensagem original ----- De: "AMILCAR MORETI" <ajmoreti@yahoo.com.br> Para: iiug-por@iiug.org Enviadas: Terça-feira, 22 de julho de 2014 10:36:38 Assunto: Extents Informix [249] Ola Pessoal do Grupo, Saudações... Estou com uma duvida sobre a questão de fragmentação do Informix, existe algum numero minimo de extent para dizer que essa ou aquela tabela esta fragmentada e esta impactando diretamente na performance, tipo 8 extents ja é motivo para a desfragmentar uma tabela? porque ja esta impactando na performance do banco? estou perguntando porque geralmente utilizo um calculo para cada tabela para chegar a um valor, utilizando o oncheck -pt e -pp , porem estou com um problema num cliente onde um outro terceiro esta colocando o problema de performance de sua aplicação nas tabelas da mesma esta com uma quantidade de 8 extents e isso ja é motivo para impactar na performance, antes de entrar em discussão gostaria de ouvir a opiniao de voces a respeito do assunto. obrigado ******************************************************************************* To post a response via email (IIUG members only): 1. Address it to iiug-por@iiug.org 2. Include the bracketed message number in the subject line: [252] *******************************************************************************

Categorias: Forums de Informix em Português

Re: Insert de um banco loggin em um banco no l....

Forum Informix em Português do IIUG - ter, 22/07/2014 - 11:00

Já passei sim, mas com um banco em modo sem log (NO LOGGING) e outro com log ativo em modo BUFFERED. O ideal é definir um padrão único. Não lembro de nenhuma solução de contorno direto, a não ser fazer um export/import (unload/load) ou então mudar o modo de um dos databases. Sempre utilizamos o modo "UNBUFFERED". Jairo Gubler ----- Mensagem original ----- De: "AMILCAR MORETI" <ajmoreti@yahoo.com.br> Para: iiug-por@iiug.org Enviadas: Terça-feira, 22 de julho de 2014 10:45:38 Assunto: Insert de um banco loggin em um banco no logging [250] Ola Pessoal uma outra duvida, tenho um banco hoje que esta em modo buffered (ontape -s -B banco) e num outro servidor em uma outra instancia um banco em modo unbuffered, porem quando tento fazer um Insert into BI2@bancosoc:empresa select * from banco@serversoc:empresa ele me retorna um erro porque estou tirando os dados de um banco (B) e tentando fazer um insert em (U), alguem ja passou por essa questão, tem alguma solucao? obrigado ******************************************************************************* To post a response via email (IIUG members only): 1. Address it to iiug-por@iiug.org 2. Include the bracketed message number in the subject line: [251] *******************************************************************************

Categorias: Forums de Informix em Português

Insert de um banco loggin em um banco no logging

Forum Informix em Português do IIUG - ter, 22/07/2014 - 10:45

Ola Pessoal uma outra duvida, tenho um banco hoje que esta em modo buffered (ontape -s -B banco) e num outro servidor em uma outra instancia um banco em modo unbuffered, porem quando tento fazer um Insert into BI2@bancosoc:empresa select * from banco@serversoc:empresa ele me retorna um erro porque estou tirando os dados de um banco (B) e tentando fazer um insert em (U), alguem ja passou por essa questão, tem alguma solucao? obrigado ******************************************************************************* To post a response via email (IIUG members only): 1. Address it to iiug-por@iiug.org 2. Include the bracketed message number in the subject line: [250] *******************************************************************************

Categorias: Forums de Informix em Português

Extents Informix

Forum Informix em Português do IIUG - ter, 22/07/2014 - 10:36

Ola Pessoal do Grupo, Saudações... Estou com uma duvida sobre a questão de fragmentação do Informix, existe algum numero minimo de extent para dizer que essa ou aquela tabela esta fragmentada e esta impactando diretamente na performance, tipo 8 extents ja é motivo para a desfragmentar uma tabela? porque ja esta impactando na performance do banco? estou perguntando porque geralmente utilizo um calculo para cada tabela para chegar a um valor, utilizando o oncheck -pt e -pp , porem estou com um problema num cliente onde um outro terceiro esta colocando o problema de performance de sua aplicação nas tabelas da mesma esta com uma quantidade de 8 extents e isso ja é motivo para impactar na performance, antes de entrar em discussão gostaria de ouvir a opiniao de voces a respeito do assunto. obrigado ******************************************************************************* To post a response via email (IIUG members only): 1. Address it to iiug-por@iiug.org 2. Include the bracketed message number in the subject line: [249] *******************************************************************************

Categorias: Forums de Informix em Português