O Couchbase oferece um banco de dados NoSQL exclusivo que combina cache integrado e tecnologia de armazenamento. O NoSQL está ganhando grande popularidade e vários clientes estão procurando exportar ou mapear alguns dos dados que possuem no RDBMS para o Couchbase NoSQL; é aqui que a oferta da Talend pode ser aproveitada.
A Talend oferece uma série de recursos de integração, desde o gerenciamento de processos de negócios até o barramento de serviços empresariais e o gerenciamento de dados mestre. O novo lançamento do Open Studio for Big Data versão 5.3 da Talend contém um conector Couchbase, que permite um grande número de cenários onde o Couchbase Server pode ser usado juntamente com fontes de dados operacionais e analíticos tradicionais.
Para lhe dar uma ideia básica de como configurar e usar o Talend com o Couchbase Server, vou orientá-lo em um cenário simples para criar um fluxo de trabalho ETL usando o software Talend Open Studio para exportar dados do servidor de banco de dados MySQL para um servidor de banco de dados Couchbase usando o formato de documento JSON. O fluxo de trabalho lerá uma tabela do banco de dados MySQL e criará documentos JSON correspondentes no Couchbase Server. Você pode se basear no exemplo e aumentá-lo para dar suporte a cenários mais complexos que envolvam transformações de dados, mapeamentos complexos etc. As etapas a seguir foram testadas no CentOS, mas podem ser adaptadas para outros sistemas.
Então, vamos começar...
Pré-requisitos
Primeiro, vamos dar uma olhada nos pré-requisitos necessários para a instalação:
- Faça o download e instale o Couchbase Server
- Faça o download e instale o servidor MySQL ou use sua instalação existente do MySQL
- Faça o download e importe o banco de dados mundial:
- Baixar world.sql
- Inicie o servidor MySQL, se ainda não tiver sido iniciado, e conecte-se ao servidor:
- sudo service mysqld start
- sudo mysql -u root -p
- Criar banco de dados mundial
- CREATE DATABASE world;
- Carregar conteúdo do banco de dados mundial
- USE o mundo;
- FONTE world.sql;
- Verifique se o banco de dados mundial foi importado corretamente
- MOSTRAR TABELAS;
- O resultado deve ser 3 tabelas: City, Country e CountryLanguage
- Faça o download e instale o Talend Open Studio para Big Data
Início
Agora, vamos nos certificar de que tudo foi iniciado
- Inicie o MySQL, se ainda não tiver sido iniciado:
- sudo service mysqld start
- Inicie o Couchbase, se ainda não tiver sido iniciado:
- sudo /etc/init.d/couchbase-server start
- Lançamento do Talend Open Studio para Big Data:
- Execute o seguinte comando ou similar (com base no diretório de instalação e na versão): /opt/TOS_BD-r101800-V5.3.0/TOS_BD-linux-gtk-x86_64
Criar
Agora, vamos usar o Talend Open Studio para criar o fluxo de trabalho de ETL
- Depois de iniciar o Talend, clique no botão Create (Criar) e insira um nome de projeto como "MySQLToCouchbaseIntegration" e clique em Finish (Concluir).
- Selecione o projeto criado e clique no botão Open (Abrir)

- Crie uma conta no Talend ou clique no botão Ignorar, isso abrirá o IDE
- Aguarde a conclusão da inicialização do IDE e feche ou minimize a janela de boas-vindas
- No painel Repositório, clique com o botão esquerdo do mouse em Job Designs e, em seguida, clique com o botão direito do mouse em Create job
- Digite o nome do trabalho, como "MySQLToCouchbaseIntegrationJob", e clique em Finish (Concluir).

- Isso criará um painel no qual os artefatos do trabalho poderão ser arrastados e soltos e deverá exibir a paleta à direita.
- Na paleta, arraste e solte o widget tMyslInput (pode ser encontrado em Databases/MySQL) à esquerda

- Na paleta, arraste e solte o widget tCouchbaseOutput (pode ser encontrado em Databases/Couchbase) à direita
- Ambos os componentes requerem arquivos jar que não são fornecidos com o software Talend. O Talend tem um wiki que explica como adicionar arquivos jar. Às vezes, os arquivos jar podem ser baixados diretamente do IDE ou podem precisar ser baixados manualmente e carregados no Talend clicando no símbolo jar (aquele com a dica de ferramenta "Add External JARs") no painel Modules.

- Os jars devem ser carregados/resolvidos antes do processamento para as próximas etapas. Ver informações detalhadas
- Clique duas vezes em tMysqlInput no painel; isso exibirá o painel Component na parte inferior
- Insira as informações de conexão do banco de dados MySQL no painel. Observe que todos os campos devem estar entre aspas duplas (ou seja, ")
- Clique no botão ... localizado à direita de Table Name (Nome da tabela), expanda world (mundo) e selecione a entrada City (Cidade) e clique no botão OK
- Remova a consulta padrão e substitua por "SELECT * FROM City"
- Abaixo está uma captura de tela de exemplo de como ela deve ser:

- Clique no botão Guess schema para abrir a janela Schema, mova e redimensione a janela conforme apropriado
- Edite o esquema com as seguintes alterações:
- Verificar Nullable para ID
- Verificar Nullable para População
- Alterar o tipo de ID para String
- Insira os tipos de BD da seguinte forma e clique no botão OK
- INT para ID
- VARCHAR para Name
- VARCHAR para CountryCode
- VARCHAR para Distrito
- INT para população
- Abaixo está uma captura de tela de exemplo de como ela deve ser:

- Clique com o botão esquerdo do mouse em tMysqlInput e, em seguida, clique com o botão direito do mouse para selecionar Row / Main (Linha / Principal) e arraste a seta do componente tMysqlInput para o componente tCouchbaseOutput. Deve ser criada uma seta entre os dois.

- Clique com o botão esquerdo do mouse em tCouchbaseOutput no painel; isso exibirá o painel Component na parte inferior
- Insira as informações de conexão do banco de dados do Couchbase no painel. Observe que todos os campos devem estar entre aspas duplas (ou seja, ")
- Neste exemplo, o nome do bucket é padrão e ele não tem autenticação configurada, portanto, o nome de usuário e a senha são deixados com ""
- O URI deve ser inserido clicando no botão + e alterando o campo para o URI do pool, como https://localhost:8091/pools
- A chave deve ser deixada como ID (padrão) e a ação nos dados como Inserir
- Abaixo está uma captura de tela de exemplo de como ela deve ser:

- Clique no botão Configurar árvore JSON...; isso abrirá o mapeador, permitindo o mapeamento do esquema de tabela para JSON.
- Selecione All schema attributes (usando a seleção múltipla) na lista de esquemas à esquerda e solte em rootTag na janela Link target à direita e selecione Create as sub-element of target node e, em seguida, clique no botão OK.
- A saída deve ser semelhante a esta:

- Selecione o atributo ID na janela Link target à direita e clique com o botão direito do mouse em Set As Loop Element e, em seguida, clique no botão OK

- Se tudo estiver bem, os dois ícones no painel Designer não devem mostrar nenhum sinal de erro e, nesse caso, podemos executar o trabalho
- Clique no painel Run (Executar), que criará o trabalho e o executará
- Acesse seu bucket do servidor Couchbase e verifique se os documentos foram carregados: https://localhost:8091/index.html#sec=buckets
- Isso deveria ter adicionado 4079 documentos ao bucket padrão:

- Você pode detalhar e examinar documentos individuais:

- Pronto!
Conforme indicado, é possível criar cenários muito mais complexos e, em breve, apresentaremos exemplos mais elaborados.
Envie comentários e feedback para alexis@couchbase.com
Ótima postagem, obrigado! Eu estava pensando em como alimentar o couchbase com alguns dados externos. Essa é a primeira parte de uma boa resposta. Talvez seja útil para uma migração única. Mas e quanto a um processo de integração contínua?
Hi,
Isso realmente dependerá do tipo de fonte de dados e dos recursos disponíveis na própria fonte (ou na ferramenta na parte superior dela).
Por exemplo, no Oracle \"world\", você pode usar coisas como DCN (Database Change Notification), Golden Gate para ouvir a alteração do banco de dados e enviar os dados de volta para o Couchbase. (Preciso de algum tempo para escrever algum código sobre isso)
Não sei se as ferramentas de ETL podem usar isso, mas pelo seu código é possível.
Saudações
Rebocador
É realmente um grande prazer fornecer uma opinião sobre a ETL
ferramentas. Elas são muito importantes e úteis para todas as pessoas de todas as partes do mundo.
mundo.
ETL
Para a exportação contínua, você pode acompanhar a última ID inserida e filtrar a importação com base nela.
De fato, a Talend oferece um componente para o MySQL para ler o último ID inserido: tMysqlLastInsertId
Você pode encontrar mais informações no Guia de Referência de Componentes do Talend Open Studio.
Atenciosamente,
Alexis
A Talend fornece um componente de captura de dados de alteração (CDC) com sua assinatura corporativa. Para a maioria dos bancos de dados, ele é acionado por gatilho e não por registro. O próprio componente CDC pode ser programado para ser executado em qualquer intervalo de pesquisa desejado. Em seguida, ele publicaria os registros delta na fonte de dados do Couchbase. Isso funciona para muitos casos de uso, mas é mais "em tempo comercial" do que em tempo real. Embora não seja uma execução em lote noturna, não deve ser considerada uma solução \"em tempo real\" para projetos de baixa latência.
Ed Ost
Ferramenta bacana - mal posso esperar para usá-la em minha próxima migração do Mysql para o couchdbase.
Obrigado, Alexis, pelas instruções.
Meu problema é que o Couchbase ignora a definição de esquema de \'INT para População\'.
O documento tem a seguinte aparência, depois de executar o trabalho de ETL:
{
\"ID\": \"city:1000\",
\"Tipo\": \"cidade\",
\"Nome\": \"Taman\",
\"CountryCode\": \"IDN\",
\"Distrito\": \"East Java\",
\"População\": \"107000\"
}
Acho que deve ser assim:
População sem aspas. Motivo: para usar a função _sum reduce.
{
\"ID\": \"city:1000\",
\"Tipo\": \"cidade\",
\"Nome\": \"Taman\",
\"CountryCode\": \"IDN\",
\"Distrito\": \"East Java\",
\"População\": 107000
}
agradável
É realmente um grande prazer fornecer uma opinião sobre a ETL
ferramentas. Elas são muito importantes e úteis para todas as pessoas de todas as partes do mundo.
mundo. As ferramentas ETL são úteis para todos, pois ajudam a transformar qualquer dado em
qualquer banco de dados de forma rápida, fácil e confortável.
ETL
Q1: Como definir o valor estático ao adicionar o vinculador ao nó de destino?
P2: Como mapear o valor inteiro para o valor inteiro do Couchbase (não String)?