DEV Community

Cover image for NoSQL: é um problema notacional!
Henrique Lobo Weissmann (Kico)
Henrique Lobo Weissmann (Kico)

Posted on

NoSQL: é um problema notacional!

Texto escrito em 2013

Esses gregos viviam aprontando das suas

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

Algarismos gregos O sistema numérico grego

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

Dê para uma criança um martelo e o mundo se torna um prego. Dê a uma criança um martelo e o mundo se torna um prego.

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

Sentry image

Hands-on debugging session: instrument, monitor, and fix

Join Lazar for a hands-on session where you’ll build it, break it, debug it, and fix it. You’ll set up Sentry, track errors, use Session Replay and Tracing, and leverage some good ol’ AI to find and fix issues fast.

RSVP here →

Top comments (0)

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay