• 09 mar 2010 /  Linux/Open Source, Programação

    Replicação é um método muito utilizado quando trabalhamos em um ambiente corporativo, onde temos a necessidade de alta disponibilidade nos serviços. Na verdade replicação é a manutenção de uma cópia, seja parcial ou total, dos dados em outros servidores.

    No OpenLDAP existem duas técnicas distintas de replicação, slurpd e syncrepl, sendo que a slurpd é uma técnica mais antiga e que foi descontinuada na versão 2.4 do OpenLDAP por possuir uma série de limitações que foram supridas por sua sucessora, a syncrepl. As principais limitações eram a replicação parcial de uma base e a utilização de mais de um servidor Master.

    Quando trabalhamos com o syncrepl, o servidor LDAP pode assumir duas posturas quanto à replicação, Master ou Slave. Quando Master, o servidor assume todas as funções de um servidor OpenLDAP , desde a inserção, atualização e consulta dos dados. Porém quando slave, o servidor só aceitará execuções de consultas em sua base de dados quando originadas de máquinas clientes. Assim, para que qualquer informação seja alterada, a solicitação deverá ser feita ao servidor Master, que se encarregará de replicar as alterações para seus servidores slaves.

    Replicação Master x Slave

    Nesse método de replicação temos um único servidor Master, que tem seu conteúdo replicado em todos os seus servidores slaves. Nesses servidores slaves não ocorre entrada de dados, apenas replicam passivamente os dados de um servidor principal. Esse método de replicação é o mais comum e atende a grande parte das demandas de servidores LDAP.

    Replicação Master x Master (multimaster)

    Replicação multimaster é um método de replicação mais recente no OpenLDAP, porém já implementado no Active Directory desde suas primeiras versões. Esta é uma replicação que atende a demandas muito singulares e apesar de funcionar muito bem ainda é pouco difundida e aplicada.

    Esta replicação consiste na utilização de dois ou mais servidores Masters, independentes, os quais possuem todas as suas funcionalidades ativadas, porém é criado por parte dos servidores um controle interno para que seja possível manter a integridade dos dados, algo que era muito mais simples de controlar quando existia uma única entrada de dados.

    Diretórios Distribuídos

    Utilizando o OpenLpad com o método de replicação syncrepl podemos não somente criar uma cópia da árvore de diretórios em outros servidores, mas também criar políticas de replicação e replicar a cada servidor somente aquilo que se pretende que o mesmo tenha acesso, assim, por exemplo, quando temos uma empresa com sede em Minas Gerais e filial em São Paulo, a mesma não precisa replicar toda sua base para a filial, apenas aqueles usuários que a pertençam, evitando assim um tráfego desnecessário na rede além de aumentar a segurança.

    Exemplo de configuração

    Bom, abaixo iremos apresentar um exemplo de configuração de replicação para o OpenLDAP, fazendo uso da estrutura Master x Slave. Consideraremos que já possui dois servidores configurados com o servidor OpenLDAP instalado e funcionando, assim apenas demonstraremos os parâmetros relacionados à replicação entre os servidores. A distribuição utilizada foi o debian 5 e o servidor OpenLDAP na versão 2.4.9.

    Configuração Master x Slave

    • Configurando o servidor MASTER

    Inicialmente, o arquivo a ser alterado é o arquivo principal de configuração do OpenLDAP o /etc/ldap/slapd.conf, alterando o parâmetro modulepath para syncprov e inserindo as seguintes linhas logo abaixo da opção "índex":

    overlay syncprov

    syncprov-checkpoint 100 10

    syncprov-sessionlog 100

     Devemos Inserir também junto a ACL responsável pelos atributos de senha, userPassword e shadowLastChange a seguinte linha:

    by dn="cn=replicator,dc=dominio,dc=com,dc=br" read

    Assim inserimos a permissão para o usuário replicador, o qual deve ser criado anteriormente, ler os campos de senha dos usuários, pois sem o acesso a leitura ele não conseguiria efetuar a replicação completa da base. Neste ponto foi reiniciado o servidor com o comando:

    /etc/init.d/slapd restart 
    • Configurando o servidor SLAVE

    Iniciaremos a configuração do servidor slave editando o arquivo de configuração /etc/ldap/slapd.conf e removendo o caracter # antes da linha "rootdn", e logo após inserimos as seguintes linhas abaixo de "index":

    syncrepl rid=1

    provider=ldap:// servidor1.dominio.com.br:389

    type=refreshAndPersist

    retry="5 + 5 +"

    interval=00:00:00:10

    searchbase="dc=dominio,dc=com,dc=br"

    filter="(objectClass=*)"

    scope=sub

    attrs="*"

    schemachecking=on 41

    bindmethod=simple

    binddn="cn=replicator,dc=dominio,dc=com,dc=br"

    credentials=senha_do_usuario_replicator

    Após os procedimentos acima citados, paramos o servidor OpenLDAP , removemos os diretórios e novamente iniciamos o servidor, para isso utilizamos as seguintes linhas de comando:

    /etc/init.d/slapd stop

    rm /var/lib/ldap/*

    /etc/init.d/slapd start

    Assim temos agora os dois servidores configurados, sendo que os dados do servidor1.dominio.com.br estão sendo replicados para o servidor2.dominio.com.br, porém o mesmo não tem autoridade sobre os dados fazendo com que para alterarmos qualquer informação na base, teremos que fazer isso no servidor1.dominio.com.br e essa atualização será replicada de imediato para o servidor slave.

    Por Ronaldo Meneguite @ iMasters - Seção: livre
  • 08 mar 2010 /  Linux/Open Source, Programação

    No universo de Business Intelligence, temos várias ferramentas Open Source disponíveis no mercado e, a cada ano, surgem novas soluções. Vamos,  neste artigo, destacar uma delas que me chamou a atenção por sua interatividade e adaptabilidade às plataformas existentes.

    Trata-se da solução Pentaho, uma ferramenta extremamente poderosa de Business Intelligence com a qual estou tendo a oportunidade de trabalhar e tem mostrado ser uma ferramenta robusta e representa uma forte aposta da comunidade open-source voltada a ferramentas de apoio à tomada de decisão.

    Pentaho

    A tecnologia Pentaho foi desenhada do zero como uma plataforma de BI moderna e totalmente integrada, baseada em standards abertos. Isto significa que pode ser integrada facilmente com qualquer infraestrutura de TI de origem, ou embebida numa aplicação desenvolvida à medida. Para utilizadores empresariais, o acesso a toda a informação de BI e a possibilidade de criar novos relatórios, vistas de análise e dashboards encontra-se numa interface web racionalizada, e estão ao alcance de dois cliques.

    Ela fornece suporte técnico compreensivo, manutenção de software, funcionalidades melhoradas e mais, através de uma subscrição anual.

    Possui várias suites que formam uma plataforma completa de BI, que foi desenvolvida, distribuída e implantada como Open Source apresenta grande flexibilidade e independência entre as diversas plataformas, possui alta confiabilidade e segurança a um custo mínimo de implantação e manutenção.

    Possui ferramentas de ETL como o Kettle, análises OLAP como o Mondrian ou de Data Mining como o Weka, e são reunidos num único produto que permite soluções que acompanham todo o ciclo de implementação de um SAD, (Sistema de Apoio à Decisão) e que a tornam uma das soluções Open-Source mais populares do mundo.

    A solução Pentaho define-se a si mesma como uma plataforma de BI orientada para a solução e centrada em processos. Ou seja, não só apresenta os resultados de uma forma única e dando uma visão geral do estado da empresa, como implementa os próprios processos (workflow) para a resolução de problemas detectados e apresentados.

    Pentaho Open BI Suite

    A Pentaho Inc. integrou e promoveu o desenvolvimento de ferramentas open source que fornecem os recursos para criação de Soluções de BI. O conjunto é conhecido por Pentaho Open BI Suite (ou Suite Pentaho), incluem as suites Reporting, Anaysis, Data Integration, Dashboards e Data Mining.

    Devido à sua estrutura em componentes, a Suite pode ser utilizada para atender demandas que vão além do escopo das Soluções de BI mais tradicionais. Estão disponíveis componentes para a implementação de processos comandados por workflow automatizado, portais web customizáveis com suporte à portlets e single sign-on, entre outros. A plataforma executa todas as suas Soluções de BI, como serviços, e por isso é possível até mesmo prover acesso a esses recursos para sistemas externos, via web services, por meio de um mecanismo baseado em SOAP/WSDL/UDDI incluso.

                                                                         

    As suites são responsáveis pela execução da Solução de BI, provendo controle de processos, visualização, segurança e auditoria. Têm a função de controlar o repositório e a execução de soluções, os acessos a banco de dados, agendamentos, permissões, serviços de e-mail e mais algumas atividades fundamentais de background, grande parte da sua funcionalidade pode ser configurada através do PAC (Pentaho Administration Console ).

    Funcionalidades Pentaho

    Uma das grandes dificuldades para alguém que começa a trabalhar com o Pentaho é entender o relacionamento entre os diversos aplicativos das suites. Neste artigo descrevo brevemente esses aplicativos e a função que exercem no ciclo de vida de um BI. Todos os softwares da Suite Pentaho são programas Java e rodam em qualquer plataforma que tenha uma JVM padrão, e estas ferramentas dão produtividade na criação da solução e das estruturas usadas pela plataforma.

    Mondrian

    É responsável pelo servidor OLAP (Online Analytic Processing) onde podemos construir os cubos que permitiram segmentar a informação por eixos de análise, permitindo a análise da informação com base em várias perspectivas. Assim será possível a compreensão dessa informação de uma forma intuitiva, uma vez que a solução permite decompor os valores nas diferentes perspectivas de análise.

    Desta forma pode-se cruzar a informação com várias dimensões de um modo muito simples, utilizando drag-and-drop, drilling into, drilling across, encadeamento de dimensões, entre outros, bem como encontrar a causa de um problema que lhe sobressaiu num simples relatório.

    É escrita em linguagem Java, e implementa a linguagem MDX, XML for Analysys e especificações JOLAP, e lê a partir de instruções SQL e outras fontes de dados, agregando os dados em uma memória cache.

                     

    Kettle

    Faz parte da suite do Data Integration, e utiliza as técnicas de ETL (Extract-Transform-Load), para a obtenção dos dados que virão das várias fontes de dados, e que obrigatoriamente teremos de cruzá-las em algum momento dentro do ciclo de ETL.

    O Kettle é capaz de ler e escrever em vários formatos de SGBD, como Oracle, PostgreSQL, SQLServer, MySql, entre outros, e importar arquivos texto (csv ou fixo), planilhas Excel e bases de dados ODBC (apenas em Windows). Ele é um ambiente gráfico no qual conexões com fontes de dados são estabelecidas e seqüências de passos executam a extração de dados, sua modificação e a carga desses em um destino. O Kettle pode integrar dados entre empresas e sistemas, substituindo a criação de camadas de programas para integração por operações visuais.

                                                                                                                           

    Jpivot

    Jpivot é uma biblioteca customizada JSP que desenha uma tabela e um gráfico OLAP. Os usuários podem executar navegações típicas OLAP como drill down e slice-and-dice. Utiliza o Mondrian e XMLA como engines OLAP.

    Schema Workbench

    O Schema Workbench cria os cubos no format XML que serão processados e exibidos pelo Portal. Ele tem uma interface visual para navegar entre as definições do cubo, permitindo criar, além de métricas, dimensões e hierarquias, muitas das estruturas que agregam valor na exploração de um cubo OLAP, como métricas derivadas, cubos virtuais (combinações de tabelas fato) e atributos de dimensões.                                                        

    Weka

    O Weka é um ambiente gráfico para Data Mining. Permite ao usuário criar e testar hipóteses contra as bases de dados. Existem grandes potencialidades na utilização de Data Mining para apoiar o processo de tomada de decisão.

                                                                

    Pentaho User Console (PUC)

    Interface para o usuário final, é a partir do PUC que os usuários terão acesso às análises e relatórios criados, poderão ainda - de acordo com as permissões definidas - criar relatórios Ad-Hoc utilizando o WAQR, criar novas visões analíticas utilizando o JPivot, executar relatórios criados previamente com o PRD (ou outro gerador de relatórios suportado), visualizar dashboards, agendar a execução de relatórios e compartilhar qualquer um desses artefatos com outros usuários.

    Pentaho Report Designer (PRD)

    Gerador de relatórios "pixel perfect" da suite, facilita a criação de relatórios "ricos" com uma aparência mais profissional e personalizada, adicionalmente permite a publicação desses relatórios no PUC, permite inclusive que filtros simples sejam publicados diretamente sem a criação de xactions no PDS.

    Pentaho Design Studio (PDS)

    Plugin para a plataforma eclipse que funciona como uma interface gráfica para a criação de xactions que são arquivos xml interpretados pelo BI Server, são como instruções "passo-a-passo" que dirigem a execução das atividades pelo BI Sever, permitem, por exemplo, a definição de filtros avançados para relatórios e o envio de e-mails com os relatórios executados.

    Vantagens na utilização Open Source

    A maior vantagem das ferramentas open source é o baixo custo: não há gasto com licenças (que varia de centenas a milhares de dólares em ferramentas proprietárias). Ela reduz drasticamente o cost of ownership para uma plataforma de business intelligence de nível empresarial, comparado com os tradicionais e proprietários sistemas de BI.

    Entretanto, tal como acontece com ferramentas proprietárias, ainda são necessários investimentos em implantação, treinamento e suporte para o máximo aproveitamento.

    Além do menor custo, as ferramentas open source apresentam outras qualidades importantes, tais como qualidade, segurança, independência de fornecedor, possibilidade de adequação a necessidades específicas, estabilidade e suporte técnico.

    Bom, pessoal, na minha opinião vejo as soluções Open Souce para BI como uma tendência para este ano de 2010 e para os próximos. Não vejo por que gastar milhares de dólares em ferramentas proprietárias, sendo que estas soluções não deixam nada a desejar, são muito atrativas e o melhor: têm custo zero!

    Para quem estiver interessado em conhecer um pouco mais sobre o Pentaho, sugiro dar uma olhada no site www.pentaho.com.

    Abraços e até a próxima.

    Por João Sidemar Serain @ iMasters - Seção: livre
  • 25 fev 2010 /  Linux/Open Source, Programação

    Já faz quase um ano que escrevo em prol da conscientização da necessidade do estabelecimento de uma estratégia nacional de longo prazo para o setor de TI.

    Um tema tão amplo precisa ser debatido com todos os interessados. E, graças ao mundo da Web 2.0, este debate está tendo lugar na Web, junto da publicação dos artigos.
     
    Um ponto chave é o papel do governo no universo da TI, a partir das contribuições recebidas neste debate virtual. Lembramos que governo é um grande cliente, mas também o regulador do mercado, de forma que seu comportamento tem que ser muito cuidadoso. Além disso, ele precisa ser monitorado pela sociedade, a quem o governo deve servir (e não ao contrário!).
     
    Quando questionamos o método de escolha de fornecedores de software para o portal de Software Público, houve várias manifestações, algumas inflamadas, vindas da comunidade de software livre. Seja lá como for, foi noticiado há alguns dias que o Ministério do Planejamento pretende melhorar as regras de seleção de software para este portal.
     
    Algumas manifestações pleiteavam o direito do governo de ser livre (valha a redundância), como qualquer outro consumidor, para comprar ou desenvolver seus insumos para a administração pública.
     
    Além de seus múltiplos papéis como usuário e regulador da TI, ainda tem a questão jurídica: compras públicas se regem pela Lei 8666 (chamada de Lei das Licitações), e não o Estatuto do Consumidor.
     
    A própria Lei prevê a possibilidade de não usar as licitações, e define os critérios para isso. Assim, no caso do uso de software livre, deveria se comprovado a economia que ele representa, sendo homologada pelo Tribunal de Contas.
     
    O Comitê de Software Livre cita centenas de milhões de reais economizados com a não compra de licenças de software proprietário. Quanto custa o acréscimo de milhares de profissionais às folhas de pagamento nas empresas públicas de TI? Precisamos avaliar a totalidade da questão, para chegar a uma conclusão imparcial.
     
    Todos queremos o fortalecimento da comunidade, dos profissionais e da indústria nacional de software. Software livre é uma das alavancas para isto, mas não é a "bala de prata" que nos transformará num passe de mágica (nem aos outros países que são nossos concorrentes no cenário global).
     
    Sugiro avaliarmos as experiências bem sucedidas de outros países, que saíram na nossa frente no fortalecimento do uso da TI, beneficiando seus cidadãos e as empresas.

    Por Roberto Carlos Mayer @ iMasters - Seção: livre
  • 15 fev 2010 /  Linux/Open Source, Programação

    Software livre não quer dizer solução gratuita. Com exceção de alguns sistemas disponíveis via Internet, mais direcionados ao usuário pessoa física, as soluções desenvolvidas para atender as necessidades de qualquer tipo de organização envolvem muito mais que apenas a disponibilidade de software.
     
    É importante ressaltar que  mais do que software pronto, o que existem são modelos de negócios aplicados. O software representa parcela ínfima (no máximo 6%) do custo de uma solução. Os demais (94%) referem-se à mão-de-obra, know-how, customização, implementação, suporte, equipamentos e toda a infra-estrutura necessária a utilização de determinada solução.
     
    Apesar deste conceito já ser bem disseminado, o tema voltou à discussão no final de 2009 por conta do incentivo do governo ao uso de soluções desenvolvidas a partir de software livre para as prefeituras municipais.
     
    O software utilizado pela prefeitura deve ser obtido no mercado, sem privilegiar uma solução específica. Além disso, cada implementação tem um custo. É preciso customizar a solução, implementá-la e oferecer todo o suporte aos usuários, permanentemente.

    No mercado brasileiro, há inúmeras empresas que oferecem soluções prontas, sejam desenvolvidas a partir de software livre ou não, como também serviços para criação de novos sistemas customizados.
     
    O governo construiu um portal no qual disponibiliza sistemas de software livre, com a clara pretensão de fomentar um novo modelo de negócios. No caso de prefeituras, o governo ainda promoveu um grande lançamento em outubro/2009, direcionando para empresa indicada no próprio portal. Ninguém entendeu o critério de seleção dessa empresa. Na nossa avaliação, trata-se de um tema que deveria ser investigado pelo Ministério Público. A decisão do governo não ficou transparente e pode prejudicar um setor como um todo.
     
    Além disso, as propagandas e os anúncios são enganosos, uma vez que há afirmações de que o governo disponibiliza software, enquanto que, na realidade, no caso das prefeituras, ele apenas está privilegiando uma das empresas do setor de TI.
     
    O governo deve cuidar de questões públicas, como saúde, segurança, habitação e educação, principalmente. Às empresas privadas, cabe a ele incentivar o desenvolvimento e a concorrência saudável, pois são elas que geram receitas, divisas e crescimento produtivo para o nosso país. O apoio às empresas privadas só valoriza a produção da indústria nacional e não interfere no modelo de mercado já existente.

    * artigo feito em conjunto com Luís Mário Luchetta, vice-presidente de Articulação Política da Assespro Nacional.

    Por Roberto Carlos Mayer @ iMasters - Seção: livre
  • 08 fev 2010 /  Linux/Open Source, Programação

    Olá, pessoal. Neste artigo vou apresentar um estudo que tenta responder a uma das perguntas mais freqüentes em fóruns de bancos de dados: o SQL Server pode ser executado no Linux? Vou apresentar algumas idéias, discutir conceitos e mostrar até onde é possível trabalhar utilizando estes dois produtos em conjunto: o SQL Server e o Linux.

    Podemos imaginar um cenário onde uma empresa adquire um software do tipo ERP que pode ser executado em diversas plataformas, porém requer obrigatoriamente o SQL Server como banco de dados. Se isto é ou não uma venda casada, fica o assunto para um próximo artigo. Por enquanto vamos nos preocupar em estudar alguma solução para este cenário onde é preciso, de alguma maneira, evitar que a empresa compre licenças e possa testar o seu ERP diretamente no Linux.

    Neste cenário, é preciso instalar a parte servidora do SQL Server para que o software possa ser utilizado. A parte cliente do banco de dados já está programada na aplicação. Aliás, se alguém precisar executar a parte cliente do SQL Server no Linux já existem alternativas. Já discuti aqui no iMasters o uso de um driver JDBC como mecanismo de conexão ao SQL Server e também o uso do freeTDS como alternativas para a conexão de aplicações que rodam no Linux em um servidor SQL Server. Além disso, existem outras abordagens como o uso de ODBC que podem ser executadas na plataforma Unix sem problemas com unixODBC.

    O primeiro aspecto a ser estudado quando se fala em SQL Server no Linux é a documentação do fabricante. De acordo com a documentação oficial do SQL Server fornecida pela Microsoft, ele pode ser executado apenas na plataforma Windows e em diversos servidores (Windows 98, 2000, 2003 etc.) dependendo da versão (7, 2000, 2005, 2008, 2008 R2) e da edição (Standard, Developer, Enterprise, MSDE etc.).

    Posto isso, podemos avaliar a primeira alternativa e a mais viável: o uso de virtualização. Nesta técnica é preciso utilizar no Linux um software de virtualização como o Xen ou VMWare, por exemplo, e instalar o Windows e o SQL Server dentro deste servidor virtual. Depois desta instalação é preciso configurar a rede e pode-se utilizar o SQL Server no Linux rodando sobre um Windows virtualizado. Para casos onde é preciso apenas realizar alguns testes é possível utilizar as versões de avaliação do Windows e do SQL Server, que vão expirar em um período determinado e que podem ser úteis para testes. Contudo, estas versões de avaliação não requerem licença e geralmente têm algum tipo de limitação nos recursos dos software, como quantidade de memória máxima alocada, limite de uso de processadores, etc.

    A próxima técnica que pode permitir a utilização do SQL Server no Linux de forma nativa é o uso do WINE  (Wine is not na emulator). A idéia é que este software crie todo o ambiente para executar aplicações Windows no Linux sem emular todo o sistema operacional.

    O primeiro passo no estudo da emulação de alguma versão do SQL Server no Linux me levou ao repositório de aplicações no site do WINE, onde podemos verificar se é possível ou não rodar certa aplicação no WINE. Pesquisando no site, encontrei esta tentantiva de execução do SQL Server no Linux, postada em março de 2009, indicando que não seria possível executar o SQL Server MSDE SP3 no WINE. A descrição do erro diz respeito a um problema com a instalação do serviço. Resolvi arregaçar as mangas e fazer eu mesmo um teste com o WINE.

    Depois de instalar o WINE  em um Linux Ubutu 8.04, chamado ubutu01, eu peguei os arquivos binários, os arquivos de dados e as entradas do registro (o registry do Windows) de uma instância padrão do SQL Server MSDE SP3 instalado previamente em um Windows XP e joguei tudo no Linux que continha o WINE, junto com a aplicação das chaves no registro. Além disso, também configurei o WINE utilizando o poderoso WineTools para instalar os componentes necessários no Linux: DCOM, MDAC, IE6, .NET framework, Windows Commom Controls e outros. Tudo ocorreu sem problemas até este ponto.

    Apesar de não seguir a instalação do produto como o recomendado, eu iniciei o serviço do SQL Server MSDE no modo console utilizando o arquivo sqlservr.exe com o parâmetro -c dentre outros. Contudo, infelizmente não consegui executar o serviço com sucesso, como visto na Figura 1:

    Figura 1. tentativa de executar o sql server 2000 msde pelo wine

    Figura 1: Tentativa de executar o SQL Server 2000 MSDE pelo WINE

    Pelo log de erros do SQL Server, mostrado na Figura 1, podemos ver dois erros: um problema de autenticação do NTLMSP, responsável pela comunicação e autenticação com o Windows, e um com a biblioteca de rede SSNETLIB, que foi o motivo pelo qual o serviço não iniciou completamente. Pesquisando um pouco, descobri que a biblioteca SSNETLIB.dll é um dos componentes do SQL Server que fazem parte das bibliotecas de rede do servidor e que fazem chamadas diretas à API do sistema operacional Windows Sockets 2, entre outras. Tentei de tudo: registrar a DLL, instalar outras versões do SQL Server, modificar as bibliotecas de redes pelas chaves do registro, mas não consegui passar deste ponto.

    O curioso é que mesmo com iniciativas da Microsoft para interoperabilidade, como a criação de vários laboratórios de interoperabilidades específicos para isso, parece que não há nenhum interesse na portabilidade do SQL Server. Há, inclusive, até piadinhas de primeiro de abril falando sobre uma suposta versão do SQL Server para Linux utilizando a biblioteca Mono.

    Além disso a comunidade de código livre também não apresentou muito interesse nesta linha de interoperabilidade, apesar de já existirem casos onde diversos jogos e softwares do Office são executados no WINE. Caso alguém se interesse por continuar o esforço, basta colocar um comentário no final do artigo.

    Mas o estudo não acaba aqui. Vou comentar algumas outras abordagens que talvez possam ser interessantes para aqueles que desejam, de alguma, forma migrar do SQL Server para outro banco de dados. Algumas destas abordagens requerem modificação na aplicação no banco de dados utilizado e talvez possam não ser adequadas ao cenário descrito no começo do artigo.

    Uma das alternativas interessantes é a utilização de um banco de dados que possa emular o comportamento do SQL Server de forma adequada, mais especificamente o comportamento da linguagem T-SQL, o dialeto do SQL utilizado SQL Server. Neste ponto podemos pensar no Access e também na utilização do arquivo .mdf de dados do SQL Server diretamente acoplado à aplicação no que é conhecido por SQL Server 2005 Express Edition Edition User Instances  ou pelo acrônimo RANU (Run As Normal User). Para acoplar diretamente a instalação do SQL Server a um software, eu recomendo este link que explica os detalhes deste acoplamento.

    Uma outra abordagem interessante é a utilização de outro banco de dados que possua alguma compatibilidade com o T-SQL. Existem diversas alternativas que podem ser mais adequadas, porém esperava encontrar algo como o Fyracle, que é o uso do Firebird com um módulo próprio para compatibilidade com o Oracle. O mais próximo disso que encontrei foi o DotNetFirebird que possui muitas similaridades com o Access e o MSDE. Outros bancos acopláveis que talvez possuam uma compatibilidade maior com o SQL Server podem ser o SQLLite e o Sharphsql.

    Outro caminho interessante seria a conversão em tempo real das instruções SQL enviadas pela aplicação para um outro banco de dados. Algo como o MySQL Proxy, que já discuti em um artigo anterior, e que possui a capacidade de captar, interpretar e modificar em tempo real as instruções enviadas pela aplicação antes delas chegarem ao banco de dados. Contudo, não encontrei nenhum software ou projeto que não precise modificar o código fonte e que faça esta tradução de instruções em tempo real. Aqui temos uma boa oportunidade para um novo projeto que talvez tenha algum mercado. Alguém se candidata?

    Se observarmos o ponto de vista de conversão, podemos encontrar uma infinidade de ferramentas, aplicações, middlewares e softwares que permitem a conversão de um banco de dados para outro, com destaque especial para o MySQL e o PostgreSQL, considerados os principais bancos de dados de código livre. Estas ferramentas transformam os objetos e os dados de um banco para outro de forma off-line, ou seja, é preciso converter e trocar um banco de dados por outro. Esta opção é recomendada, mas aqui vou destacar algumas ferramentas que podem auxiliar apenas na migração das instruções.

    Uma das várias ferramentas gráficas existentes que podem auxiliar na conversão das instruções entre diferentes bancos de dados é o SwissSQL Console, cuja interface é mostrada na Figura 2:

    Figura 2. interface gráfica do swisssql console.

    Figura 2: Interface gráfica do SwissSQL Console

    Notem que a interface da Figura 2 apresenta dois painéis para a digitação das instruções e que no segundo painel, mais abaixo, existem diversas abas com os nomes de alguns bancos de dados. Na parte inferior é mostrado o resultado também com as diversas abas para os bancos de dados. Esta ferramenta tem o potencial de auxiliar muito os desenvolvedores que desejam converter instruções, seja para mudar o banco de dados ou para criar uma aplicação que suporte diferentes bancos de dados (multi-banco), assim como um potencial enorme para ensinar a novos desenvolvedores a diferenças entre os dialetos da linguagem SQL.

    Uma alternativa ao SwissSQL Console de código livre e voltada para o Linux é o conjunto de scripts chamado SQL Translator. Esta ferramenta permite converter todos os comandos de um arquivo .sql diretamente pela linha de comando, além de converter o esquema do banco de dados e gerar código automaticamente, entre outras funcionalidades.

    Do ponto de vista de aplicação, é comum encontrar uma camada a mais de software que encapsula os detalhes da instrução SQL e da interação da aplicação com o banco de dados. Existem diversos mecanismos, APIs, frameworks, aplicações, bibliotecas e outros recursos que separam o desenvolvedor da instrução que é enviada para o banco de dados como objetivo de criar aplicações que não dependam diretamente de um banco de dados específico. Esta prática é muito comum, principalmente quando se fala em aplicações web que utilizem mecanismo de mapeamento e persistência de objetos e que muitas vezes nem utilizam um banco de dados propriamente dito. Já existe, inclusive, alguns design patterns que facilitam a implementação deste tipo de camada de software.

    Sem entrar em uma discussão mais profunda do uso de camadas de software para separar o acesso aos dados, eu cito o SwissSQL API para Java como uma API que permite este tipo de programação multi-banco. Porém, existem várias soluções que seguem esta linha de raciocínio.

    Com isso termino aqui este pequeno estudo que mostrou algumas abordagens e idéias para a integração do SQL Server no Linux. Apesar de existirem diversas alternativas, vale a pena lembrar que os fatores técnicos são apenas um dos aspectos a serem considerados, pois deve-se levar em conta questões como proficiência no banco de dados, acordo de licença, política, idealismo, filosofia, regras e outros fatores que acabam norteando as escolhas das ferramentas e recursos técnicos utilizados no que diz respeito a banco de dados.

     Um grande abraço, pessoal, e até a próxima.

    Por Mauro Pichiliani @ iMasters - Seção: livre
  • 26 jan 2010 /  Programação

    As configurações de um sistema refletem a necessidade de uso de seus usuários. Com o WordPress é da mesma forma. Você o configura para personalizá-lo de acordo com suas necessidades ou de acordo com o projeto em que está envolvido.

    No painel administrativo do WordPress as opções de configuração se organizam em oito categorias: Geral, Escrita, Leitura, Discussão, Mídia, Privacidade, Links permanentes e Diversas. Observem a imagem ilustrativa.

    E através da página /wp-admin/options.php é possível visualizar todas as configurações armazenadas pelo sistema. Veja:

    Por André Arruda
  • 26 jan 2010 /  Linux/Open Source, Programação

    Como vai funcionar?

    O Host1 vai estar disponível para trabalhar com sua aplicação e o Host2 fica em Stand-by (Ele não pode ser acessado).
    Pro algum motivo o Host1 para de responder, e agora o que vai acontecer?
    O Host2 assume a posição do Host1 de modo transparente ao usuário, só que podemos ter algum tempo de delay para a sincronização e perder algumas informações.

    Configurando servidores

    Instalação feita em cima do "Debian Lenny" (Nos dois servidores) que utiliza pacotes DEB.
    Vamos usar os seguintes software: Postgresql-8.3, postgresql-contrib-8.3, heartbeat-2, nfs-kernel-server e hapm

    Instalando software:

    apt-get install postgresql-8.3 heartbeat-2 nfs-kernel-server hapm  postgresql-8.3-contrib

    Vamos criar o WAL no Host2, o arquivo deve ter permissões de escrita e leitura para ambos os servidores, com o user root:

    mkdir /psql-archive
    chown postgres.postgres /pgsql-archive
    echo "/psql-archive IP_HOST1 (rw,sync,no_subtree_check)" >> /etc/exports
    exportfs -a
    su postgres -c "touch /psql-archive/mounted"

    Criando o WAL no HOST1, o arquivo deve ter permissões de escrita e leitura para ambos os servidores, com o user root:

    mkdir /psql-archive
    chown postgres.postgres /psql-archive
    mount IP_HOST2:/psql-archive /psql-archive

    Vamos colocar o WALs ON no Host1. Devemos editar o arquivo "/etc/postgresql/8.3/main/postgresql.conf" colocando o archive_mode como ON e modificando o archive_command (Vamos copiar o Data Base com rsync):

    archive_mode = on
    archive_command = "test -f /psql_archive/mounted && test ! -f /psql_archive/%f && rsync -a %p /psql_archive/%f"

    Restart no PostgreSQL Host1:

    /etc/init.d/Postgresql-8.3 restart

    Fazendo backup de todo Data Base sem para o PostgreSQL Host1:

    psql -U postgres

    Com isso você vai acessar o console do seu PostgreSQL.

    select pg_start_backup('nome_do_seu_bkp');
    pg_start_backup
    \q

    Após sair do console vamos gerar backup do banco de dados.

    su - postgres
    cd /var/lib/Postgresql/8.3/
    tar -zcvf /psql-archive/nome_do_seu_bkp.tar.gz *

    Isso pode demorar um pouco, dependendo do tamanho do seu Data Base. Após terminar o backup acesse o console do PostgreSQL.

    psql -U postgres

    Com isso você vai acessar o console do seu PostgreSQL.

    select pg_stop_backup();
    pg_stop_backup
    \q

    No Host2 vamos colocar o backup ON:

    mv /var/lib/Postgresql/8.3/main /var/lib/Postgresql/8.3/main.old
    mv /psql-archive/nome_do_seu_bkp.tar.gz /var/lib/Postgresql/8.3/
    cd /var/lib/Postgresql/8.3/
    tar -zxvf nome_do_seu_bkp.tar.gz -C /var/lib/Postgresql/8.3/
    cd main/
    rm -Rf ./pg_xlog/*

    Vamos editar o arquivo recovery.conf que está dentro do main/ do $PGDATA:

    restore_command = '/usr/lib/postgresql/8.3/bin/pg_standby -d -l -r 3 -s 60 -t /psql_archive/trigger.done /psql_archive %f %p %r 2>>/tmp/pg_standby.log'

    Start no PostgreSQL Host2:

    /etc/init.d/Postgresql-8.3 start

    Caso você tente acessar agora o console do PostgreSQL do Host2, ele vai dar erro por motivo do Start-by esta ON.

    Mais sobre PostgreSQL

    Por Thiago Avelino @ iMasters - Seção: livre
  • 25 jan 2010 /  Programação

    Leia os artigos anteriores

    Agrupando casos de teste no SimpleTest

    Iniciando com o SimplesTest

    *

    Olá, pessoal!

    Continuando nossa sequência de artigos sobre o SimpleTest, já aprendemos como fazer testes unitários e agrupa-los para facilitar a execução em lote. Agora vamos falar um pouco sobre mock objects.

    Até agora, nossos testes unitários se resumiram a testar métodos e funcionalidades que envolviam apenas uma classe
    como nossa calculadora: tínhamos um método chamado “somar” que fazia
    parte da própria classe e recebia como parâmetro de entrada apenas dois
    inteiros.

    Por André Arruda
  • 25 jan 2010 /  Programação

    Nesse artigo vou mostrar uma configuração específica do arquivo .htaccess para melhorar o formato das urls aceitas em projetos feitos com CodeIgniter em servidores apache.

    No primeiro artigo da série sobre o framework, foi mostrado o arquivo de configuração (config.php), nele temos uma variável chamada “index_page” configurada com o valor default: “index.php”. Essa variável define o que vai na url antes do nome do controller e do método chamado. No caso do artigo anterior, usamos a url:

    index.php/welcome/listar2

    Por André Arruda
  • 25 jan 2010 /  Programação

    O que é um tema WordPress?

    Imagine o sistema de tema do
    WordPress como uma “pele” do seu blog/site, tendo a sua disposição
    diversas cores e formatos e controles precisos sobre a apresentação
    gráfica e de conteúdo.

    Um tema WordPress é uma coleção de
    arquivos que juntos produzem a interface gráfica com a identidade visual
    desejada. Esses arquivos são chamados de arquivos de templates, os
    quais podem ser imagens, folhas de estilos (CSS), JavaScript, páginas
    personalizadas e arquivos PHP.

    O WordPress é muito flexível ao
    ponto de lhe permitir o uso de arquivos personalizados, mas rígido em
    relação a alguns arquivos-padrão, os quais precisam respeitar certa
    nomenclatura.

    Por André Arruda