26
NoSQL: é um problema notacional!
Texto escrito em 2013
Há estas coisas que parecem complexas e modernas que quando as encaramos de frente se mostram patéticamente simples: NoSQL, por exemplo. Sabe: leio muitos artigos sobre o assunto (tenho um projeto literário nesta direção inclusive) e sempre fico maravilhado com a capacidade dos autores de ocultarem o básico: o problema é notacional.
Gregos, romanos e indianos
Quando penso na Grécia antiga lembro de pessoas como Arquimedes, Tales de Mileto ou Euclides: gênios que definiram as bases da matemática atual.
(na realidade penso mesmo é em Parmênides que me inferniza desde 2001)
Sabem o que é interessante? Há um avanço monstruoso na geometria - em parte pelo fato da agrimensura ser um problema para o homem grego - no entanto há pouquíssimo avanço na álgebra. Por que isto hein?
Passada a época dos gregos quem assume a vanguarda intelectual ocidental são os romanos e a matemática fica basicamente estagnada: com excessão dos algarismos romanos não há lá grandes novidades que revolucionaram o mundo numérico.
O marasmo matemático continua até o século VI-VII quando na Índia surge algo muito estranho: os algarismos indo-arábicos. Pela primeira vez uma notação numérica posicional, em que a grandeza é definida pela posição do algarismo no texto. No século IX surgirá outra notação revolucionária: o número zero. Instintivamente o que representa melhor o número mil: M ou 1000? Aqui está a resposta: os gregos desenvolvem pouco a álgebra por não possuirem uma notação adequada. O resto é história: a álgebra se desenvolve monstruosamente e graças aos nossos amigos indianos fiz 3 vezes Cálculo I na faculdade. "Muito obrigado" amigos indianos!
O que quero dizer é: uma boa notação possibilita saltos gigantescos. E o que é uma notação? É uma representação de algo que expõe sua natureza essencial de forma gráfica. Quanto mais clara é a exposição desta natureza mais fácil sua compreensão e, consequentemente, maior a possibilidade de descobrirmos facetas até então ocultas relacionadas ao objeto retratado. Foi assim com a álgebra e é assim com bancos de dados.
Notação e bancos de dados
Será que toda informação pode ser representada apenas por linhas e colunas? Inicialmente as coisas não eram assim: no CODASYL por exemplo temos estruturas de dados navegacionais em inúmeras dimensões. Curiosamente, com o sucesso do SGBD relacional é como se todas as estruturas de dados de repente se tornassem bidimensionais.
É inegável os ganhos que o modelo relacional trouxe mas por outro lado nos acarretou também um enorme retrocesso intelectual. A impressão que tenho é a de que após 1976 (ano em que é lançada a primeira versão bem sucedida do Oracle) a única estrutura de dados existente seja a tabular e que a ela o mundo deveria se submeter.
Ao "tabelizarmos" o mundo que devemos representar muitas vezes terminamos com soluções muito mais caras que o necessário. Basta ver aquela sua tabela que começou com poucos campos e hoje conta com algumas dezenas, ou aquele malabarismo louco que você precisa fazer para representar relacionamentos entre suas entidades no modelo relacional.
O que quero dizer com isto é que o movimento NoSQL nos reapresentou notações mais adequadas para representar estruturas de dados como estas realmente são: grafos, árvores, campos variáveis, etc. Claro que há toda uma gama de problemas que é bem representado por tabelas, mas duvido muito que corresponda à maior parte dos casos.
Um dos pontos de venda do NoSQL é a escalabilidade obtida, mas aí eu pergunto: será que grande parte deste ganho de escalabilidade não seria o resultado de estarmos aplicando uma melhor notação na representação dos nossos dados?
Concluindo
NoSQL (detesto este nome) é mais do que simplesmente bancos de dados que não adotam o modelo relacional: são notações que podemos usar para representar o universo retratado por nossos sistemas. O que o NoSQL nos trouxe, ou melhor, nos reapresentou, não é "apenas" escalabilidade: é a popularização de outras notações até então eclipsadas pelo modelo relacional.
Esta redescoberta notacional, acredito, trará ganhos de qualidade computacional gigantescos nesta e na próximas décadas: acredito que aspectos até então ignorados da própria estrutura da informação se tornarão mais claros, bem mais nítidos, e com isto coisas maravilhosas surgirão. É o fim da "idade média relacional".
PS:
No início do ano publiquei aqui no blog uma bibliografia comentada de NoSQL: sugiro a leitura destes textos (em especial o de Kent) para aqueles que começaram a sua aventura nesta área. Eis o link: https://devkico.itexto.com.br/?p=1301
26