Talvez você conheça o Couchbase como a plataforma NoSQL mais rápida e dimensionável disponível. No entanto, você sabia que o Couchbase também pode ser um banco de dados relacional? O Couchbase é uma plataforma de dados que pode operar com várias personalidades simultâneas na mesma plataforma. Ele pode ser estruturado ou não estruturado. E pode ser transacional ou analítico. Neste blog, vamos analisar a transferência de dados do Oracle para o Couchbase.
Banco de dados Oracle de origem
Para um banco de dados de origem, usaremos Bancada oscilante. É um gerador de carga de trabalho sintética para Oracle. Ele é autônomo e cria esquemas que lembram o que pode ser encontrado em um aplicativo de produção real. Para este blog, usaremos o esquema Simple Order Entry (SOE) criado pelo utilitário. Uma representação visual do esquema SOE pode ser vista abaixo. A geração do esquema com um parâmetro de escala de 1 resulta em um conjunto de dados com cerca de 15 milhões de registros.
Importação de dados
Para migrar os dados do Oracle para o Couchbase, usaremos o comando cbperf ferramenta de demonstração. Esse utilitário gera principalmente esquemas sintéticos aleatórios para o Couchbase, mas também pode importar dados para o Couchbase por meio de um plug-in de fontes de dados externas. O plug-in Oracle para cbperf replicará todas as tabelas disponíveis para o usuário conectado, copiará os dados da tabela associada e, para cada tabela, extrairá as colunas que são indexadas para recriar os índices no Couchbase.
1 |
% caixa/cb_perf importação -h cbhost -b soe -s soe -P oráculo -V conectar=soe/soe@hospedeiro/testdb |
Supondo que o esquema SOE tenha sido configurado com o nome de usuário e a senha padrão, que são soe e soerespectivamente, essa sintaxe exportará os dados do banco de dados SID testdb no host hospedeiro e importá-lo para o bucket do Couchbase soe com escopo soe em que um nó do cluster é cbhost.
Os dados no Couchbase
Vamos esclarecer logo de início uma importante isenção de responsabilidade. Para um aplicativo de produção, você provavelmente não desejará apenas "levantar e mudar" os dados e os índices. Em vez disso, é necessário fazer uma análise para determinar a configuração ideal no Couchbase, juntamente com as alterações necessárias no aplicativo. O nível final de esforço variará de acordo com o aplicativo.
Dito isso, uma vez que o cbperf quando a importação estiver concluída, haverá cerca de 15 milhões de documentos no Couchbase. Os soe O escopo terá coleções que correspondem a cada tabela no Oracle.
Aqui estão as tabelas no Oracle:
Aqui estão as coleções no Couchbase:
Cada linha que estava no banco de dados Oracle agora é um documento no Couchbase. A chave do documento é construída a partir do nome da coleção mais dois pontos ":" mais o número sequencial do documento (basicamente o número da linha). As chaves JSON do documento são os nomes das colunas da tabela, e os valores são os valores da coluna para essa linha.
1 |
selecionar * de CLIENTES onde ID DO CLIENTE = 1 ; |
1 |
selecionar * de soe.soe.clientes onde ID do cliente = 1 ; |
Por fim, podemos ver todos os índices que foram gerados automaticamente com base nas colunas indexadas no banco de dados Oracle. Para permitir a maior flexibilidade de consulta, cada índice abrange uma coluna.
Execução de uma consulta
Analisando o código-fonte do Swingbench, encontrei a seguinte consulta:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
SELECIONAR tt.order_total, tt.sales_rep_id, tt.order_date, customers.cust_first_name, clientes.cust_last_name DE (SELECIONAR orders.order_total, orders.sales_rep_id, orders.order_date, orders.customer_id, classificação() Sobre (Pedido Por orders.order_total DESC) classificação salarial DE pedidos ONDE orders.sales_rep_id = 1 ) tt, clientes ONDE tt.sal_rank <= 10 e clientes.customer_id = tt.customer_id |
Ao executar essa consulta no banco de dados Oracle, obtenho os seguintes resultados:
Ao executar a consulta no Couchbase, obtive os mesmos resultados. A única coisa que tive de alterar na consulta foi prefixar as coleções com soe.soe. para construir um espaço-chave do Couchbase.
Fato curioso
Você pode estar familiarizado com o ORACLE_SID como o identificador de instância do banco de dados Oracle, mas você sabe o que ele faz nos bastidores? Ele representa o Identificador do site. Ele é hashed com ORACLE_HOME para obter uma chave SGA (System Global Area), que é a chave de memória compartilhada nos sistemas Unix/Linux. Quando você obtém uma chave ORA-01034: ORACLE não disponível é porque essa chave de memória compartilhada não está presente no sistema. Portanto, você não pode se comunicar com o banco de dados. Felizmente, trabalhar com o Couchbase é muito mais simples, permitindo que você se concentre em outras coisas. A menos, é claro, que você goste da parte interna do sistema operacional.
Conclusão
Embora possa parecer uma tarefa assustadora, a importação de dados de um banco de dados relacional para o Couchbase não é tão difícil. Para ser justo, há mais a considerar do que apenas colunas e índices, como procedimentos armazenados (funções definidas pelo usuário no Couchbase), mas certamente é muito viável.