Análise sobre Modelos para dados com grande grau de indireção
Com advento e o aumento das redes sociais e a necessidade de utilização de sistemas de recomendação de produtos, o quais contém grande grau de indireção no relacionamento entre os dados (Facebook contém mais de 1,2 bilhões de usuários, LinkedIn mais de 250 milhões), surgiu a necessidade que esses dados sejam acessados de forma rápida e eficiente. Buscas (perguntas) de certa forma naturais para os seres humanos (Quais são os amigos dos amigos de X?), mas custosas para modelos e sistemas maiormente utilizados, não estão sendo mais suficientes do ponto de vista de tempo/reposta e de facilidade de uso e manutenção, considerando a agilidade e disponibilidade necessárias para os dias atuais e dos custos envolvidos para a sustentação desses modelos. Além desse nível de indireção, os relacionamentos entre estas informações não são uniformes, ou seja, não possuem o mesmo peso e importância. Assim, dado este cenário, onde é necessário que buscas em grandes volumes de dados com significativo grau de indireção sejam feitas transversalmente, existem algumas soluções disponíveis, dentre as quais iremos destacar: Modelo Relacional, Modelo Chave/Valor e Modelo Grafos.
Modelo Relacional
O Modelo Relacional é o mais utilizado atualmente, e tem atendido com tranquilidade a grande parte das necessidades dos sistemas atuais. Quando o cenário que tratamos é o de relacionamento com alto grau de indireção, onde se é necessário realizar buscas transversais, o modelo relacional lida bem quando são poucos níveis (2, 3 para a maioria dos bancos de dados, e entre 6 e 10 para o Oracle). Mas, quando esse grau de indireção e o volume de dados aumenta, buscas transversais se tornam ineficientes, e na maioria dos casos com performance inviável para os padrões atuais. Para exemplificarmos, apresentamos o modelo abaixo:
Como podemos visualizar neste caso, o modelo relacional trabalha bem se necessitarmos saber quem são os amigos de ‘Bob’, pois com isso conseguimos