sou iniciante em java, estou começando um projeto e estou com essa duvida, agradeço quem puder ajudar.
A melhor resposta seria: Depende
Mas vamos ao caso. Se for para aplicações que o Banco não tenha que tratar grandes volumes, e quando falo de grandes volumes estou falando de GB ou TB para cima um uma tabela apenas, pode ser o MySQL que é para volumes razoáveis e tem bastante recurso. Já se for para grandes volumes mesmo recomendo o Oracle.
Essa recomendação tem um ponto importante: Portabilidade, ambos rodam em qualquer SO e com isso você não fica preso ao SO, ou seja, poderia começar desenvolvendo num note com Windows e depois migrar tudo para um servidor Linux por exemplo…
[]s Ishii
então eu estou pensando em usar mysql, mas e o postgresql tbm não funciona tanto no linux como no windows?
o oracle esta descartado por motivos financeiros e o postgresql não seria o ideal caso o projeto aumente?
Sim, funciona, apenas comentei os extremos… Acho até o PostGreSQL quase tão escalável quanto o Oracle…
[]s Ishii
[quote=ishii]A melhor resposta seria: Depende
Mas vamos ao caso. Se for para aplicações que o Banco não tenha que tratar grandes volumes, e quando falo de grandes volumes estou falando de GB ou TB para cima um uma tabela apenas, pode ser o MySQL que é para volumes razoáveis e tem bastante recurso. Já se for para grandes volumes mesmo recomendo o Oracle.
Essa recomendação tem um ponto importante: Portabilidade, ambos rodam em qualquer SO e com isso você não fica preso ao SO, ou seja, poderia começar desenvolvendo num note com Windows e depois migrar tudo para um servidor Linux por exemplo…
[]s Ishii[/quote]
Sempre ouço falar que MySQL não é indicado para tratar grandes volumes de dados. Então por que entidades como globo.com, NASA e facebook usam MySQL? No caso da NASA é um caso a parte, pois há uma redistribuição especial para eles, e eles não usam apenas o MySQL. Mas no caso do facebook, é 100% MySQL.
Qual é a evidência que MySQL não é indicado para tratar grandes volumes de dados?
Estatísticas do banco de dados do facebook, de acordo com o próprio:
Query response times: 4ms reads, 5ms writes.
Rows read per second: 450M peak
Network bytes per second: 38GB peak
Queries per second: 13M peak
Rows changed per second: 3.5M peak
InnoDB disk ops per second: 5.2M peak
Ps. Nunca ninguém que já falou pra mim que o MySQL não é um banco de dados indicado para informações pesadas soube responder porque ou indicar uma evidência.
Para mim, MySQL pode ser tão bom quanto Oracle, até que me provem o contrário!. Se sua database crescer e virar o facebook2, compre o MySQL Enterprise.
O ponto está na quantidade de recursos. O MySQL é usado por algumas entidades mas para aplicações rápidas e WEB. Lembre-se que quando o MySQL surgiu não tinha nem tratativa de Pk ou Fk, isso o deixava leve e rápido. Para grandes volumes é preciso de recursos que custam e poucas empresas arriscariam usar um BD sem esses recursos para aplicações críticas. Imagine ter que tratar trilhões de registros? Conheço algumas tabelas em BD Oracle que tem 5 TB de dados e estamos falando de apenas uma tabela. Ai recursos como Particionamento (que custa uma $$$$) resolve. Outro ponto, se você precisasse de alta disponibilidade o RAC é um recurso do BD e não um cluster dependente do SO. Ou ainda para processamento de consultas usar o Paralelismo, que seria utilizar um processador para uma parte da consulta e alocar outro processador para uma outra parte. Essas coisas ou features são recursos que alguns BD apenas tem e lógico custa uma grana.
Não que o Oracle não seja para WEB mas pelo volume de dados eu não recomendo muito se o volume for alto mesmo, pois o tráfego pode ser um fator que complica…
[]s Ishii
Uso o postgresql e estou mto satisfeito com ele, robusto, leve, roda em Linux e windows
ja usei o mysql em um projeto, e me deu mta dor de cabeça, talvez por inexperiencia minha, eu usava o storage engine "MyISAM"
e corrompia tabelas direto
nao sei se era algum problema de infraestrutura, ou do proprio sistema,
so sei que isso me traumatizou pro resto da minha vida
agora uso o PG, e recomendo
o unico problema do PG é que se vc nao tiver um backup feito por ele, é mto dificil copiar a pasta DATA e colocar em outra makina e funcionar
nao vi herança de tabelas em outro banco de dados, isso é uma coisa que me fascina nele, ja usei em um projeto pequeno o lance de ter herança de tabela, e é muito legal
fora que se vc kizer algo bem “complexo”, tem como vc integrar java dentro dele
existe um sitema chamado Compiere que faz isso, imbute codigo java dentro do banco de dados, quando vc chama uma FUNCTION por ele, ele executa codigo java
muita parte de lógica da minha aplicação fica no proprio pg, usando triggers, functions
recomendo …
Facebook é 100% MySQL, ok.
Assim como o windows era apenas um tela preta com caracteres. MySQL é considerado o banco de dados que mais cresceu nos últimos anos, mas mesmo assim, não vejo o ponto deste argumento.
Facebook faz isso.
Uso o Facebook como exemplo porque é uma entidade que claramente trata de muitos registros e requisições do mundo, e expõe explicitamente que usa o MySQL (disponível no site do próprio MySQL vários vídeos explicando o funcionamento do MySQL no facebook e no próprio site do facebook), tornando assim a evidência mais confiável. Mas existem várias outras entidades respeitadas listadas que usam o MySQL.
Pra mim você falou um monte de coisa, mas não evidenciou nada. Continuou na mesma.
Poxa, entenda que a discussão era sobre o “melhor BD para se usar junto com o Java” e a resposta inicial foi depende…
Facebook é uma aplicação crítica? Se ela ficar parada causa prejuízo para quem? Para os usuários que não pagam nada para usar?
Não estamos para discutir o melhor Banco de Dados, e ainda se essa fosse a proposta a resposta continuaria DEPENDE. Se você perguntar qual a melhor linguagem de programação teremos a mesma discussão. Java ou .NET?
Quando você fala que o Facebook tem TB de registros, você teve acesso e viu se são tabelas relacionadas com outras milhares e que os Joins são na casa dos milhares também? Ou se a instrução SQL tinha centenas de Joins por conta da complexa estrutura do MER? Desculpe me mas acho que APENAS relacionar quem você conhece com outras pessoas não deve ser tão complexo assim…ou então não entendo nada sobre Modelo de dados.
Trabalhar com aplicações complexas que envolvem relacionamentos lógicos com modelagem de dados complexas e distribuídas com altos volumes de dados. É isso que temos de realidade no mercado, muitas aplicações que conheço em MySQL são depois replicadas num DW em outros Bancos como DB2 ou SQLServer ou Oracle, e essa é uma realidade nas empresas. Ou ainda, por que empresas como Carrefour que tratam “pequenos volumes de vendas de pouquíssimos itens de pouquíssimos lugares” usa um ERP com Oracle? Até pode ser que a sua app para venda WEB seja em MySQL mas os dados vão para o ERP. Ou porque empresas de ERP preferem usar BD como Oracle ou SQLServer? Por que elas não usam MySQL? E estamos falando da SAP, TOTVS etc…
Apenas para constar o MySQL também é da Oracle e isso deve ter sido “por acaso”.
Na verdade você apenas citou um exemplo que deve ter pesquisado no Google sobre o MySQL e encontrou sobre o FaceBook e se você tem “mais evidências” que isso não demonstrou nenhuma também…
Ou ainda se conhece de BD ou de SQL deveria saber as limitações que os BD tem e todos tem e se soubesse disso também, repensaria na hora de fazer uma aplicação de grande porte.
Você está pegando no ponto errado da questão, o que eu queria ter é uma resposta simples e clara do porque MySQL não é um banco de dados indicado para manobrar grandes quantidades de informações, não se MySQL é melhor que Oracle, isso é obvio que é relativo. Se eu pudesse ter essa resposta poderia reconsiderar em criar aplicações comerciais que venham a crescer imensamente usando MySQL.
Sobre facebook ser uma aplicação crítica ou não é fora de questão, o ponto é que o acesso ao banco é rápido, mesmo sendo MUITAS requisições por minuto, e a única coisa que importa.
Só por uma curiosidade, eu trabalho em uma TOTVS, e caso você pergunte porquê usam Oracle a não MySQL, a resposta seria “sei lá”.
Opa, não quero que você fique bravo comigo
O MySQL não é usado por aplicações grande por causa justamente de suas limitações… Imagine que o SQL Server tinha uma limitação na versão 7.0 que era que uma tabela podia ter no máximo 128 relacionamentos via FK, ou seja, se você criasse uma tabela com um uma PK ela somente poderia ter 128 tabelas relacionadas a essa PK. Isso para um ERP é pouco, lógico que isso deve ter aumentado agora, o MySQL tem essas limitações e é isso que dificulta na hora de criar uma App como um ERP. Imagine que algumas consultas chegam ao absurdo de 100 ou mais tabelas relacionadas, acho que no MySQL o valor máximo é 60 ou algo perto disso. Essas limitações é que fazem a diferença entre um grande BD ou não…
E como vc trabalha numa TOTVS a resposta é simples. A venda do Banco MySQL te dá lucro? :roll:
Acho que muitos ERPs poderiam rodar no PostGreSQL mas a pergunta acima responde isso. Se você procurar sobre ERP free vai ver que muitos são em PostGreSQL…
Quanto a questão de manipular grandes quantidades de dados, o MySQL é realmente imbatível, mas lembre-se se a instrução SQL for simples, se tiver que complicar ele não suporta…
[]s Ishii
ps: Eu também não acredito em tudo que me dizem seja da Oracle ou da Microsoft ou de qualquer outra coisa…
Um fator importante na escolha é. Você está disposto a gastar $$$ para ter um Banco de Dados? Se está, Oracle acho a melhor opção.
Se não está disposto a gastar, então acho que o melhor seria o PostGreSQL.
Se não estou enganado o MySql em aplicações comerciais deve ser licenciado também.
vlw pelas respostas vcs ajudaram bastante.
[quote=ishii]
O MySQL não é usado por aplicações grande por causa justamente de suas limitações… Imagine que o SQL Server tinha uma limitação na versão 7.0 que era que uma tabela podia ter no máximo 128 relacionamentos via FK, ou seja, se você criasse uma tabela com um uma PK ela somente poderia ter 128 tabelas relacionadas a essa PK. Isso para um ERP é pouco, lógico que isso deve ter aumentado agora, o MySQL tem essas limitações e é isso que dificulta na hora de criar uma App como um ERP. Imagine que algumas consultas chegam ao absurdo de 100 ou mais tabelas relacionadas, acho que no MySQL o valor máximo é 60 ou algo perto disso. Essas limitações é que fazem a diferença entre um grande BD ou não…[/quote]
Bom, finalmente temos um ponto relevante. Não sabia da existência de limitações desse tipo no MySQL. Existe alguma fonte que especifique quais são essas limitações?