sábado, 23 de julho de 2016

As principais mudanças na arquitetura do Tibero 6

Apresentamos aqui as principais melhorias em relação às mudanças na arquitetura da versão 6 do RDBMS Tibero.



1 - Admin Process:
Este novo processo permite acesso exclusivo de administração, possibilitando que os processos de trabalho sejam restritos para os clientes RDBMS Tibero.
Permite ainda acesso administrativo imediato, mesmo que todas as sessões disponíveis estejam sendo utilizadas.

2 - Listener:
Listener Multi-port Support. Adicionada função que permite especificar múltiplos Listeners dinamicamente para acesso ao RDBMS Tibero.
Proporciona aumento significativo de disponibilidade, estabilidade e escalabilidade.

3 - Work Process:
Os processos de "trabalho" (Foreground Process), que são responsáveis por atender às demandas das sessões de usuários do Tibero, além de já serem Multithread nas versões anteriores, alocadas quando o banco inicia e estarem sempre disponíveis quando solicitadas, agora são divididas em dois grupos distintos:
  - “Foreground Worker Process”: Processam as requisições online recebidas pelo Listener.
  - “Background Worker Process”: Executam as transações batch registradas em uma Task interna ou pelo Scheduler.

4 - Background Process:
Os processos que rodam em segundo plano (Background Process), que são responsáveis por tarefas como Persistência de dados, Checkpoint, Redo Log, Arquive, Cluster Management, etc... são agora também Multithread, garantindo maior eficiência nestas tarefas cruciais ao banco.

5 - I/O Process:
Maior performance através de processamento de I/O multiplexado e controle de I/O assíncrono realizado pelas Threads de controle.

6 - Storage Virtualization:
Nova “Feature” adicionada: TAS (Tibero Active Storage). Gerencia dispositivos de armazenamento de dados. Atua como “File System” e gerenciador de volumes lógicos, que armazenam arquivos de dados e log necessários para a execução do Tibero. Fornece a função de “Cluster File System” para configurar discos compartilhados necessários para ambientes de alta disponibilidade.

Resumindo:
Todas estas importantes melhorias contribuem para o aumento significativo da performance do RDBMS Tibero.
A alta performance, que já era grande destaque na versão 5 em comparação aos demais através da tecnologia Multithread diferenciada do Tibero, alcança na versão 6 níveis ainda muito maiores.

Para saber mais sobre todas as mudanças do Tibero 6, acesse: Tibero 6 Release Notes

sexta-feira, 22 de julho de 2016

Configurar o Tibero OLE DB data provider

O Tibero OLE DB data provider atualmente suporta o sistema operacional Windows. 
Tibero OLE DB provider garante o desempenho e estabilidade de aplicações baseadas em ambiente ADO ou OLE DB para acessar o Tibero database.
Ele é compatível com as mais recentes especificações de OLE DB e ADO de modo que desenvolvedores ADO ou OLE DB podem facilmente migrar de aplicativos para o ambiente Tibero.
Além disso, o Tibero OLE DB permite acessar funções que o Tibero fornece, tais como utilizar PSM e LOB e apoia plenamente o ambiente MS .NET Framework.

Para configurar o Tibero OLE DB provider, é necessário ter instalado ou instalar o driver ODBC previamente. Para saber como instalar o driver ODBC acesse o link: Instalar o Tibero ODBC driver

Procedimento para configurar o Tibero OLE DB data provider:

* Neste exemplo usaremos a plataforma 64 bits.

1) Copie as bibliotacas do OLE DB para uma pasta adequada:
   Ex.: C:\Tibero\Tibero6\Client64\OLEDB
   * Estes arquivos são localizados na pasta da instalação do Tibero RDBMS.
  mkdir  C:\Tibero\Tibero6\Client64\OLEDB
  copy %TB_HOME%\client\win64\lib\EntLibContrib.Data.Tibero.dll C:\Tibero\Tibero6\Client64\OLEDB
  copy %TB_HOME%\client\win64\lib\Oracle.DataAccess.dll C:\Tibero\Tibero6\Client64\OLEDB
  copy %TB_HOME%\client\win64\lib\Tibero.DataAccess.dll C:\Tibero\Tibero6\Client64\OLEDB
  copy %TB_HOME%\client\win64\lib\Tibero.DbAccess.dll C:\Tibero\Tibero6\Client64\OLEDB
  copy %TB_HOME%\client\win64\lib\libtbcli.dll C:\Tibero\Tibero6\Client64\OLEDB
  copy %TB_HOME%\client\win64\lib\libtbcli.lib C:\Tibero\Tibero6\Client64\OLEDB
  copy %TB_HOME%\client\win64\lib\msdtb6.dll C:\Tibero\Tibero6\Client64\OLEDB
  copy %TB_HOME%\client\win64\lib\msdtb6.lib C:\Tibero\Tibero6\Client64\OLEDB
  copy %TB_HOME%\client\win64\lib\tbprov6.dll C:\Tibero\Tibero6\Client64\OLEDB
  copy %TB_HOME%\client\win64\lib\tbprov6.lib C:\Tibero\Tibero6\Client64\OLEDB

2) Abra uma janela de prompt de comando em modo administrativo e registre as DLLs:
  regsvr32.exe C:\Tibero\tibero5_client\tbprov5.dll
  regsvr32.exe C:\Tibero\tibero5_client\msdtb5.dll

3) Crie e abra um arquivo vazio com a extensão UDL:
  C:\Tibero\Tibero6\Client64\OLEDB\tibero.udl
 
4) Selecione o Tibero OLE DB provider, informe os valores das propriedades de conexão e efetue o teste de conexão.
   Ex.:
 
Para maiores informações acesse:
    Tibero Driver Connection Guide
    Tibero OLE DB User Guide

quinta-feira, 21 de julho de 2016

Lançamento oficial do Tibero 6 no Brasil

Agora é oficial. A versão 6 do Tibero agora está oficialmente liberada para ser usada no Brasil. Algumas mudanças principalmente em relação a arquitetura, proporcionaram um desempenho muito superior em relação a versão 5 que já apresentava uma performance excepcional.

Segue abaixo uma pequena relação das principais mudanças desta versão:

- Arquitetura Totalmente Redefinida
- Agora os Background Processes também são Multi Thread
- Listener Multi-port Support
- Estrutura de processos melhorada e integrada
- Multinode parallel recovery
- TAS (Tibero Active Storage)
- Bitmap index, Star Transformation e vários métodos de particionamento
- Suporta processos dedicados para tarefas de administração
- I/O Assíncrono para as tarefas multi thread
- Reliable Shared Server, não há cópias desnecessárias de memória entre processos
- Extendida conectividade com DBLinks para outros DBMS. Usa JDBC, não ODBC
- Tibero Manager
- Flashback database
- Data types: 64K varchar, binary float, binary double, …
- Muito mais packages e views de sistema disponíveis e idiomas suportados
- Virtual Private Database

O lançamento foi oficializado em conjunto ao lançamento do canal oficial da TmaxSoft no LinkedIn que pode ser conferido aqui: TmaxSoft Brasil - LinkedIn

Para fazer o download do Tibero, gerar a licença demo e obter os manuais de instruções, acesse o link: Technet TmaxSoft e siga as instruções das primeiras postagens deste blog a partir desta:
Fazer o download da versão demo do Tibero

terça-feira, 19 de julho de 2016

Configurar Data Source do Tibero no JBoss 5

Neste exemplo é demonstrado um passo-a-passo de como configurar o JBoss para acessar o RDBMS Tibero para acesso XA (Transação distribuída, 2Phase Commit...) e NON-XA. Para este exemplo, usamos o JBoss AS 5.1.0 GA, CentOS Linux kernel 2.6.9-89.ELsmp, e Tibero 5 FS2.

1) Configurar os Data Sources NON-XA e XA:
  - Copiar "Tibero JDBC driver" para "lib" directory:
    cp $TIBERO_HOME/tibero5/client/lib/jar/tibero5-jdbc.jar  $JBOSS_HOME/server/default/lib

  - Criar o xml de configuração e adicionar o seguinte conteúdo:
    vi $JBOSS_HOME/server/default/deploy/tibero-ds.xml

<?xml version="1.0" encoding="UTF-8"?>
<datasources>
  <local-tx-datasource>
    <jndi-name>dsTibero</jndi-name>
    <connection-url>jdbc:tibero:thin:@192.168.100.100:58629:tibero</connection-url>
    <driver-class>com.tmax.tibero.jdbc.TbDriver</driver-class>
    <user-name>sys</user-name>
    <password>tibero</password>
  </local-tx-datasource>
  <xa-datasource>
    <jndi-name>xadsTibero</jndi-name>
    <xa-datasource-class>com.tmax.tibero.jdbc.ext.TbXADataSource</xa-datasource-class>
    <xa-datasource-property name="PortNumber">58629</xa-datasource-property>
    <xa-datasource-property name="DatabaseName">tibero</xa-datasource-property>
    <xa-datasource-property name="ServerName">192.168.100.100</xa-datasource-property>
    <user-name>sys</user-name>
    <password>tibero</password>
  </xa-datasource>
</datasources>

  - Iniciar o Tibero:
    tbboot

  - Iniciar o JBoss:
    run.sh -b 192.168.100.100

2) Testar o datasource NON-XA:
  - Criar o arquivo jsp e adidionar o seguinte conteúdo:
    mkdir $JBOSS_HOME/server/default/deploy/tiberotest.war
    cd $JBOSS_HOME/server/default/deploy/tiberotest.war
    vi $JBOSS_HOME/server/default/deploy/tiberotest.war/tiberotest.jsp

<%@page contentType="text/html" import="java.util.*,javax.naming.*,javax.sql.DataSource,java.sql.*"%>
<%
  DataSource        ds  = null;
  Connection        con = null; 
  PreparedStatement pr  = null; 
  InitialContext    ic; 
  try
  {
    ic = new InitialContext();
    ds = (DataSource)ic.lookup( "java:/dsTibero" );
    con = ds.getConnection(); 
    pr = con.prepareStatement("SELECT USER_ID, USERNAME FROM  DBA_USERS");
    ResultSet rs = pr.executeQuery();
    while (rs.next())
    {
        out.println("<br> " +rs.getString("USER_ID") + " | " +rs.getString("USERNAME")); 
    }
    rs.close();
    pr.close();
    con.close();
  }
  catch(Exception e)
  {
    out.println("Exception thrown " +e); 
  }
%>

  - Testar no browser:
    http://192.168.100.100:8080/tiberotest/tiberotest.jsp

3) Testar o datasource XA:
  - Criar o arquivo jsp e adidionar o seguinte conteúdo:
    mkdir $JBOSS_HOME/server/default/deploy/tiberotestxa.war
    cd $JBOSS_HOME/server/default/deploy/tiberotestxa.war
    vi $JBOSS_HOME/server/default/deploy/tiberotestxa.war/tiberotestxa.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%@ page import="javax.naming.*"%>
<%@ page import="javax.sql.*"%>
<%@ page import="java.sql.*"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<%
  String sql = "SELECT * FROM ALL_USERS";
  out.println("Tibero XA data source test using the script below:");
  out.write  ("<br>");
  out.println(sql);
  out.write  ("<br>");
  out.write  ("<br>");
  Context           ctx  = null;
  DataSource        ds   = null;
  Connection        con  = null;
  Statement         stmt = null;
  ResultSet         rs   = null;
  ResultSetMetaData md   = null;
  try
  {
    StringBuffer query = new StringBuffer();
    ctx  = new InitialContext();
    ds   = (DataSource) ctx.lookup("java:/xadsTibero");
    con  = ds.getConnection();
    stmt = con.createStatement();
    query.append(sql);
    rs = stmt.executeQuery(query.toString());
    md = rs.getMetaData();
    out.write("<table border=\"1\"  style=\"width:100%\">");
    out.write("<tr>");
    for (int h = 1 ; h <= md.getColumnCount() ; h++)
    {
      out.write  ("<th>");
      out.println(md.getColumnName(h));
      out.write  ("</th>");
    }
    out.write  ("</tr>");
    while (rs.next())
    {
      out.write  ("<tr>");
      for (int r = 1 ; r <= md.getColumnCount() ; r++)
      {
        out.write  ("<td>");
        out.println(rs.getString(r));
        out.write  ("</td>");
      }
      out.write  ("</tr>");
    }
    out.write("</table>");
    stmt.close();
    con.close();
  }
  catch (Exception e)
  {
    out.println(e);
  }
%>
</body>
</html>

  - Testar no browser:
    http://192.168.100.100:8080/tiberotestxa/tiberotestxa.jsp

NOTA:
Os valores em "Azul" devem ser idênticos.
Altere os valores em "Verde" de acordo com as configurações do seu ambiente.