Vídeo: What is BRENNER DEBATE? What does BRENNER DEBATE mean? BRENNER DEBATE meaning & explanation 2024
Se você está enfrentando a fase de design para sua aplicação e você acredita que o HBase seria um bom ajuste, então, projetar suas chaves e esquema de linha para se ajustarem ao modelo e arquitetura de dados do HBase é o abordagem direta. No entanto, às vezes faz sentido mover um banco de dados originalmente projetado para um RDBMS para o HBase.
Um cenário comum em que essa abordagem faz sentido é uma instância de banco de dados MySQL que atingiu seus limites de escalabilidade. Existem técnicas para dimensionar horizontalmente uma instância do MySQL ( sharding, em outras palavras), mas esse processo geralmente é complicado e problemático porque o MySQL simplesmente não foi projetado originalmente para cortar.
A transição do modelo relacional para o modelo HBase é uma disciplina relativamente nova. No entanto, certos padrões estabelecidos de pensamento estão emergindo e se juntaram em três princípios fundamentais a serem seguidos quando se aproxima de uma transição. Esses princípios são desmoralização, duplicação, e chaves inteligentes (DDI) .
-
Denormalização: O modelo de banco de dados relacional depende de um esquema de banco de dados normalizado e b) juntas entre tabelas para responder a operações SQL. A normalização de banco de dados é uma técnica que protege contra perda de dados, redundância e outras anomalias à medida que os dados são atualizados e recuperados.
Há uma série de regras que os especialistas seguem para chegar a um esquema de banco de dados normalizado (e a normalização do banco de dados é um estudo inteiro), mas o processo geralmente envolve dividir tabelas maiores em tabelas menores e definir relacionamentos entre eles. A desnormalização do banco de dados é o oposto da normalização, onde tabelas menores e mais específicas são unidas em tabelas maiores e mais gerais.
Este é um padrão comum quando se faz a transição para o HBase porque as junções não são fornecidas em tabelas, e as associações podem ser lentas uma vez que envolvem operações de disco dispendiosas. Proteger contra as anomalias de atualização e recuperação é agora o trabalho do seu aplicativo cliente HBase, uma vez que as proteções que você obteve pela normalização são nulas e sem efeito.
-
Duplicação: À medida que você desmoraliza seu esquema de banco de dados, você provavelmente acabará duplicando os dados porque pode ajudá-lo a evitar operações de leitura dispendiosas em várias tabelas. Não se preocupe com o armazenamento extra (por motivos de curso); Você pode usar a escalabilidade automática do HBase para sua vantagem.
Esteja ciente, no entanto, de que o aplicativo cliente exigirá trabalho adicional para duplicar os dados e lembre-se de que nativamente o HBase fornece apenas operações atômicas de nível de linha não cruzadas (com a exceção descrita no JIRA HBASE-5229) ou cruzada mesa.
-
Teclas inteligentes: Como os dados armazenados no HBase são ordenados pela chave de linha e a chave de linha é o único índice nativo fornecido pelo sistema, o design inteligente e cuidadoso da chave de linha pode fazer uma grande diferença. Por exemplo, sua chave de linha pode ser uma combinação de um número de pedido de serviço e do número de identificação do cliente que colocou a ordem de serviço.
Este design de chave de linha permitiria pesquisar dados relacionados à ordem de serviço ou procurar dados relacionados ao cliente usando a mesma linha de linha na mesma tabela. Essa técnica será mais rápida para algumas consultas e evitar juntas de tabela dispendiosas.
Para esclarecer esses padrões particulares de pensamento, leve uma tabela de informações de contato do cliente e coloque-o no contexto de um banco de dados típico de pedidos de serviço. A figura mostra o que um esquema de banco de dados de pedidos de serviço normalizado pode parecer.
Seguindo as regras de normalização de RDBMS, configure a tabela de informações de contato do cliente da amostra para que seja separada da tabela de pedidos de serviço para evitar a perda de dados do cliente quando as ordens do serviço estiverem fechadas e possivelmente excluídas. Tome a mesma abordagem para a tabela Produtos, o que significa que novos produtos podem ser adicionados ao banco de dados da empresa ficcional, independentemente das ordens de serviço.
Ao confiar nas operações de junção RDBMS, este esquema suporta consultas que revelam o número de ordens de serviço que são abertas contra um produto específico, juntamente com a localização do cliente onde o produto está em uso.
Isso é tudo bem e dandy, mas é um esquema que você usaria com o RDBM. Como você transiciona este esquema para um esquema HBase? A figura seguinte ilustra um possível esquema HBase - um que segue o padrão de design DDI.
A tabela de informações de contato do cliente foi desmoronada, incluindo o nome do cliente e informações de contato no lugar das chaves estrangeiras utilizadas anteriormente. Além disso, os dados são duplicados mantendo a tabela de informações de contato do cliente como está. Agora, junta-se na tabela de Pedidos de Serviço e na tabela Informações de Contato do Cliente não são necessárias.
Além disso, foi empregado um design de chave de linha inteligente que combina o número do produto com o número do cliente para formar o número da ordem do serviço (A100 | 00001, por exemplo). Usando essa chave inteligente, a tabela de pedidos de serviço pode fornecer relatórios vitais sobre deficiências de produtos e clientes que atualmente estão enfrentando problemas de produtos.
Todas essas consultas podem ser suportadas pelo HBase em uma forma atômica de nível de linha para a aplicação. Porque você sabe que o HBase ordena chaves de linha e classifica-as de forma lexicográfica, sua aplicação pode fazer certas suposições educadas sobre localidade de dados ao emitir varreduras para relatórios. (Todos os números de produtos da série A * serão armazenados em conjunto, por exemplo.)
O banco de dados de serviço representado pelo esquema HBase é um exemplo relativamente simples, mas ilustra como o HBase pode, em certos casos, se cruzar com o mundo RDBMS e fornecer um valor significativo. Se a empresa de ficção tem terabytes ou mesmo petabytes de dados de chamadas de serviço para armazenar, a HBase faria uma enorme diferença em termos de custo, confiabilidade, desempenho e escala.
Você, claro, pode projetar seu esquema HBase de ordem de serviço de várias maneiras diferentes. É certo que o design tudo depende das consultas que devem ser suportadas, mas você tem a capacidade de transição de bancos de dados relacionais para aplicativos HBase muito poderosos para uso em produção, desde que você trabalhe com uma compreensão sólida da arquitetura HBase e do padrão de design DDI.
Este exemplo assumiu que as consultas foram realizadas por um aplicativo Java aproveitando as APIs do cliente HBase, ou talvez por meio de outro idioma usando o Apache Thrift. Este modelo de aplicação pode caber os requisitos apenas bem e fornecer opções úteis e de desempenho para a empresa de serviços de ficção.