Como os RDBMS podem ser considerados uma moda passageira?

11

Concluindo meu nível de computação A em 2003 e me formando em computação em 2007, e aprendendo meu ofício em uma empresa com muito uso de SQL, fui criado com a idéia de bancos de dados relacionais sendo usados ​​para armazenamento.

Portanto, apesar de ser relativamente novo no desenvolvimento, fiquei surpreso ao ler um comentário (em /software//q/89994/12436 ) que dizia:

[Alguns desenvolvedores] desprezam o [SQL] e acham que ele e o RDBMS são uma moda

Obviamente, um desenvolvedor competente usará a ferramenta certa para o trabalho certo e não criará um banco de dados relacional quando, por exemplo, arquivo simples ou outra solução para armazenamento for apropriado, mas os RDBMs são úteis em um grande número de circunstâncias, então como eles poderiam ser considerado uma moda passageira?

StuperUser
fonte
1
Forneça o contexto - onde você leu esse comentário?
Eran Galperin
8
Qualquer coisa e tudo é considerado moda por alguém em algum lugar.
Péter Török
Péter muito verdadeiro, apenas curioso para saber por quê?
StuperUser
5
Essas pessoas geralmente têm outro paradigma que desejam promover, que contraria a ideia de bancos de dados relacionais. Portanto, os bancos de dados relacionais são ruins e precisam desaparecer. Veja os bancos de dados orientados a objetos, que ainda não atingiram massa crítica.

Respostas:

28

A chave está no R no RDBMS, que significa relacional. Ao contrário da crença popular, não significa relações entre tabelas, mas sim o fato de que cada tabela é uma relação no sentido matemático da palavra .

O modelo relacional tem implicações bastante significativas. Você precisa modelar seus dados para ajustar as relações e normalizar esse modelo . Se seu aplicativo foi projetado como modelo orientado a objetos, o modelo relacional não é um bom ajuste. Isso é amplamente conhecido como incompatibilidade de impedância objeto-relacional .

Uma abordagem para essa incompatibilidade são os ORMs (mapeadores de relação de objetos), que ganharam muita popularidade. Mas elas não são a verdadeira solução, são mais uma solução para o problema. Eles ainda não resolvem o problema de mapear a herança de classe para o modelo relacional.

A verdadeira solução para a incompatibilidade objeto-relacional são os OODBMSes , que infelizmente não tiveram muita tração. O mecanismo popular que suporta OOBDs nativamente é o PostgreSQL, que é OO / RDBMS híbrido. Outro OODBMS é o Zope Object DB , que é construído em Python e na configuração típica usa RDBMS como mecanismo subjacente.

A abordagem alternativa é ter mais lógica implementada no nível de aplicativo ou middleware e usar a solução NoSQL para armazenamento subjacente.

Nem OODBMS nem NoSQL são "apenas um arquivo simples".

vartec
fonte
2
@ Daniel: ele certamente não disse que o modelo relacional era um problema que precisava de uma solução; ele disse exatamente o que você disse - se você está comprometido com a modelagem de seu software no paradigma orientado a objetos, em seguida, o modelo relacional é um problema.
Carson63000
1
@Carson: Minhas desculpas, mas não é assim que eu leio a resposta. @vartec diz: "A verdadeira solução é o OODBMS (que infelizmente não teve muita tração)." Discordo respeitosamente: eu diria que a verdadeira solução é entender o modelo relacional e usá-lo efetivamente. OODBMS é uma solução pobre para quando você deve usar os princípios de OO para seu modelo de dados, o que certamente não é um caso universal.
11117 Daniel Pryden
1
@ Daniel: Eu pensei que ele quis dizer que um OODBMS era a verdadeira solução, novamente, se você está comprometido em modelar seu software no paradigma orientado a objetos. Não que o modelo relacional fosse um problema em si e que o OODBMS fosse a solução para ele. Mas, de qualquer maneira, não adianta debater qual de nós entendeu Vartec corretamente, vou me curvar e deixar que ele esclareça se ele quer. :-)
Carson63000
1
@ Daniel: O contexto é importante. Eu digo com clareza que esse modelo relacional é um problema no contexto da POO. Agora, quão universal ou não é POO, isso está além do escopo desta resposta. E aliás. OODBMSes não são "solução do pobre homem", ORMs são.
vartec 7/07/11
1
@artec: OK, retiro meu voto negativo. (Na verdade, não posso removê-lo, a menos que a postagem seja editada.) Acho que seria melhor esclarecer que existem soluções que não envolvem OO. E sim, eu concordo que um ORM é pior ainda que um OODBMS.
Daniel Pryden
13

Fiz a declaração que você citou na pergunta acima. Se você quiser uma citação para verificar minha suposição sobre desenvolvedores neste site, leia minha resposta para a pergunta a seguir e analise a reação dos comentários e votos negativos que recebi pelo que ainda considero uma resposta aceitável.

Programadores experientes devem conhecer as consultas ao banco de dados?

Fiz a afirmação de que, se um banco de dados RDBMS estiver sendo usado, apesar do Linq ou de um ORM, um desenvolvedor deve ter um conhecimento avançado de SQL.

Essa foi uma afirmação altamente impopular que parece por causa de diferenças respeitáveis ​​de opinião sobre a importância do SQL, para a mentalidade menos respeitável de que o RDBMS é inerentemente inferior aos bancos de dados NoSQL como o MongoDB.

EDIT: Para adicionar ainda mais à minha reivindicação, citarei o usuário SK-logic:

lembre-se de que toda essa mania de RDBMS é uma tendência relativamente recente. Antes disso, tínhamos uma grande variedade de abordagens. Aparentemente, você está trabalhando em uma empresa jovem, juntamente com desenvolvedores da sua idade e, portanto, não tem chance de se expor às abordagens de armazenamento mais antigas e sólidas. Felizmente, essa tendência recente já está em declínio e as boas e velhas maneiras estão retornando, renomeadas como 'nosql'.

maple_shaft
fonte
Concordo totalmente com você que os desenvolvedores que trabalham com bancos de dados devem entender o SQL para poder conceituar uma consulta em termos de relações corretamente. No entanto, esperamos que os Linq / ORMs não otimizem as consultas na abstração de maneira a afetar as consultas gravadas com o armazenamento de dados em mente.
StuperUser
A única razão pela qual alguém diria "essa mania do RDBMS é uma tendência relativamente recente" é mostrar como a barba é grisalha. Eu trabalhei pela primeira vez no tipo de aplicativos corporativos e de negócios que você descreveu em 1995 - os bancos de dados relacionais dominavam na época, agora dominam, dominam em todos os lugares em que trabalhei nos 16 anos seguintes. Agora, obviamente, não tenho a idade de alguns, mas quando digo "relativamente recente", não quero dizer "nos últimos vinte anos".
Carson63000
O problema é que muitos desenvolvedores equiparam erroneamente o RDBMS ao SQL. SQL é uma linguagem verdadeiramente terrível para os padrões modernos. É uma implementação falha e incompleta de uma linguagem "relacional" (SQL não é realmente relacional e isso faz parte do problema) que não evoluiu muito nos últimos 30 anos. Muitas pessoas que usam SQL mal entendem o modelo relacional - tudo o que sabem é SQL e, portanto, assumem que o modelo relacional é a causa de sua frustração.
Nvogel
@dportas, Claro que o SQL não é perfeito, mas foi tão importante para todos os trabalhos que eu tive que descobri como a vida ficou mais fácil quando comecei a PENSAR no SQL. Se você me der um modelo relacional e fizer uma pergunta em inglês puro, posso escrever uma "resposta" em SQL. Você diz que "tudo o que eles sabem é SQL e, portanto, assumem que o modelo relacional é a causa de sua frustração", bem, então eles não conhecem o SQL suficientemente bem. Por que tudo deve ser atendido ao mais baixo demoninador comum o tempo todo, como um programador indiano que ganha menos de US $ 10 / hora com uma educação ruim.
Maple_shaft
@ maple_shaft, se você está pensando em SQL, está pensando em algumas coisas que estão muito erradas em termos relacionais. O que deve ser incentivado é que os desenvolvedores entendam os conceitos básicos, como o modelo relacional, em vez de se concentrarem em linguagens como SQL. Se mais pessoas entendessem os conceitos básicos, talvez o SQL já tivesse sido substituído por coisas melhores.
Nvogel 08/07
9

moda passageira :

algo que se torna muito popular em um curto espaço de tempo e depois é esquecido na mesma velocidade ".

Os RDBMSs existem há séculos (pelo menos em termos de CS), então quem disse que quis dizer algo mais ou não tem noção.

l0b0
fonte
2
Eu pretendia dizer outra coisa, veja minha resposta abaixo.
Maple_shaft
3
Provavelmente teria sido melhor usar um dicionário real em oposição ao urbandictionary.
Aaronaught
Aaronaught - Que tal Princeton? "Um interesse seguiu com zelo exagerado." wordnetweb.princeton.edu/perl/…
Shauna
3

A alternativa ao RDBMS não é apenas um arquivo simples. Quando eu estava na escola, o OODBMS era a novidade e meu professor estava certo quando ele classificou isso de moda. Você deve dar uma olhada nos diferentes modelos e observar as tendências. Vi uma dependência crescente do OLAP e estaria disposto a apostar que um novo sistema multidimensional que pode processar dados mais rapidamente está ao virar da esquina.

Christopher Bibbs
fonte
Deveria "querer ser um novo" => "querer apostar um novo"?
Worrier binario
Certamente, usei o arquivo simples como exemplo. Esse é um bom link para os modelos de banco de dados.
StuperUser
@Binary Sim e editado para refletir isso.
Christopher Bibbs
3

O problema é que muitos desenvolvedores equiparam erroneamente o RDBMS ao SQL. SQL é uma linguagem realmente horrível para os padrões modernos. É uma implementação falha e incompleta de uma linguagem "relacional" (o SQL não é realmente relacional e isso faz parte do problema) que não evoluiu muito nos últimos 30 anos. Muitas pessoas que usam SQL mal entendem o modelo relacional - tudo o que sabem é SQL e, portanto, assumem que o modelo relacional é a causa de sua frustração.

nvogel
fonte
1

Sem contexto, é difícil determinar quem / por que a declaração de que os RDBMs são considerados uma moda passageira.

A curto e médio prazo (5 a 10 anos) e eu pensaria ainda mais que isso não vai desaparecer. Um RDBM fornece um método eficiente e eficaz de armazenamento, processamento e recuperação de dados relacionais, que é o que a maioria das empresas possui: clientes / pedidos, passageiros / passagens etc.

Existem outras alternativas, como o NoSQL, que parecem estar crescendo em popularidade com o projeto de código aberto.

Como OLAP, esses são realmente (em meu entender) bancos de dados especializados projetados para permitir que uma empresa forneça informações estatisticamente oportunas e úteis sobre uma empresa e execute cenários "what if" nos dados atuais. Obviamente, em quase todos os casos, esses dados atuais vieram de um RDMBs e foram manipulados e depois inseridos no banco de dados OLAP.

armitage
fonte
1

Os bancos de dados relacionais são uma moda passageira, no mesmo sentido em que a microcomputação é uma moda passageira.

Jeremy
fonte
1

Resposta simples é não. RDBMS não é um modismo. Ao ler algo em um site do LinqPad, lembre-se de que o objetivo deles é vender licenças para o produto.

Tundey
fonte
A questão é por que isso seria considerado uma moda passageira, não se é a retórica promocional do LinqPad. O padrão LinqPad é gratuito.
StuperUser
A pergunta veio dele lendo a retórica promocional de LinqPad. Apenas salientando que ele deve tomar com um grão de sal.
Tundey 6/07/11
Não, veio do comentário de maple_shaft em programmers.stackexchange.com/questions/89994/… . A cópia do LinqPad foi tirada com uma pitada de sal, mas estou curioso para saber se os desenvolvedores concordam com qualquer uma das afirmações.
StuperUser
Yep, a retórica promocional da LinqPad foi que SQL escrita para consultar um RDBMS foi antiquada, não que RDBMSs si eram antiquadas. Eles estão vendendo uma maneira melhor de usar um RDBMS, não uma alternativa a eles.
Carson63000
@StuperUser e Carson63000: Entendi. Meu erro.
Tundey 07/07
0

Moda não é a palavra certa, pois existe há muito, muito tempo. Eu acho que você pode começar a argumentar que a tecnologia é muito antiga e que talvez seja hora de apresentar a próxima coisa - arquiteturas NoSQL talvez

bigtang
fonte
0

O Wiki Def. de moda passageira, define o termo "moda" da seguinte forma: moda é qualquer forma de comportamento que se desenvolve entre uma grande população e é coletivamente seguida com entusiasmo por algum período, geralmente como resultado do comportamento ser percebido como novo de alguma forma. Diz-se que uma moda passageira "pega" quando o número de pessoas que a adotam começa a aumentar rapidamente. O comportamento normalmente desaparece rapidamente quando a percepção de novidade desaparece.

Como os seguidores do RDBMS não desapareceram rapidamente e não vão desaparecer nos próximos anos (graças à enorme pilha de aplicativos de produção que o utilizam), não podemos dizer que é uma moda passageira. De fato, os principais conceitos do RDBMS permaneceram bastante estáveis, onde muitas das outras tecnologias mudaram (e ainda estão mudando) drasticamente.

O conceito de RDBMS (e seu principal veículo, SQL) representa um passo na tecnologia que, como muitos outros, pode ser substituído por outros melhores, isso é tudo.

NoChance
fonte