Executando verificação de segurança...
5

Porque você em seus projetinhos, ainda usa PostgreSQL?

Vejo muitas pessoas usando PostgreSQL para tudo, desde projetinhos, pequenos testes, tudo no geral.
Como tem muitos tutoriais e cursos que usam ele, talvez a turma acaba achando que só tem ele, ou que sempre seria a melhor opção.

Recentemente fiz uma aplicação e antes de realmente escolher o banco de dados, fiz um teste. Peguei os dados que eu iria precisar usar e coloquei em 3 opções:

  • Mysql que mais uso ainda e muito bom, principalmente versões recentes
  • PostgreSQL que uso em alguns projetos também
  • SQLite que também uso bastante

Alguns vão pensar a performance foi melhor no PostgreSQL, e não, não foi. SQLite performou tão bem quanto ele. MySQL nesse caso não deu certo porque tinha que importar uns ~40GB para o banco de dados e o import dele não funcinou tão bem. E o import do sqlite funcionou muito bem
Ai escolhi ele pela performance e também pelo import funcionar muito bem, até de maneira automatizada.

O que fica de lição, conhecer outras opções e testar é sempre o melhor.
Não vá por hype, ou opiniões de outros. Prove e comprove em números e escolha a opção para seu projeto.

Ahhh mas depois você vai ter que migrar para postgres

Porque migraria? a opção escolhida está funcionando muito bem
E na APi ainda armazeno um cache da resposta (com redis), que adianta ainda mais as respostas nas chamadas seguintes, que já é rápida. E sim a base de dados já começa com milhões de registros ~66 milhões.

E você vai sempre de PostgreSQL? comente aí

Carregando publicação patrocinada...
4

Depende muito, como sempre. Se o projeto vai escalar, o ideal seria usar PostgreSQL mesmo. Mas depende muito do quanto vai escalar. No geral um SQLite resolve quase todos os problemas.

Porém cuidado, para determinar qual é melhorar para cada situação é complexo. Uma feature a mais ou a menos já pode mudar muito o cenário. SQlite por exemplo não lida com concorrência tão bem quanto o PostgreSQL. Então mesmo que o projeto seja pequeno, mas depender altamente de uma concorrência, o ideal seria PostgreSQL.

Sobre o MySQL nunca cheguei a usar, e portanto não posso opinar sobre. Pouco vejo falando dele hoje em dia. Sei que antigamente dominava muito, hoje em dia eu já não sei mais. Vai ver muita gente ainda usa, a ferramenta seja boa, mas tenha uma bolha que nos prende a SQLite e PostgreSQL/MongoDB

2

Obrigado inicialmente por sua contribuição,
Duas frase me chamaram atenção

Se o projeto vai escalar, o ideal seria usar PostgreSQL mesmo

Possivelmente a intenção não foi essa, mas pode dar a impressão e talvez até tenha mesmo, que em outras opções não dar para escalar, por isso que é bom realmente testar outras opções. Ou nem sempre temos como testar tudo em produção rsrsrs 😂 mas usando em nossa máquina, fazendo alguns testes já é bacana também ou ler sobre o que outras empresas usam, principalmente médias e grandes, teve um comentários que fiz um pouco mais abaixo que mostra um pouco da minha experiência com bancos.

hoje em dia eu já não sei mais. Vai ver muita gente ainda usa, a ferramenta seja boa, mas tenha uma bolha que nos prende a SQLite e PostgreSQL/MongoDB

Exato, aqui está o ponto, muitas pessoas acabam nem usando outras opções, e vão muito pela opinião de outros, e muitas vezes só repetem o que outros dizem. Mas na prática aquela pessoa nem usou mesmo, ou só está repetindo também 😅. Entende o problema? No fim, na prática não é aquilo que dizem.
Exemplo a grande maioria da net usa MySQL ou MariaDB (o fork feito) porque funciona, e funciona bem e escala muito bem também.
Muitos projetos que começo hoje, começo com MySQl, e pode dar impressão que o Mysql vai ser a opção inicial e depois vou para outro, e não ... é a escolha usada até hoje, até o momento (já outros projetos uso outras opções Postgresql ou sqlite). O legal é extrair o melhor de cada opção 😎.

Com mongo acontece a mesma coisa, parece que ele é a escolha padrão, mas mesmo entre os NoSQL existem outras opções, melhores até, porque cada um vai ter uma vantagens (banco para dados gigantes, banco para coordenadas, banco para medir isso ou aquilo)

2

Trabalho com Postgresql há mais de 20 anos(desde a versão 6.5), então posso dizer duas coisas: que conheço bem o sistema e obviamente que sou fã. Lendo o artigo e todos os comentários já postados, vejo há alguns conceitos distorcidos.

  1. Tamanho da base: você pode usar sqlite em projetos com grandes bases, mas até que ponto é gerenciável? Sem Tablespace, Table Partitioning fica complicado gerir grandes bases, principalmente em lugares com armazenamento híbrido.

  2. Replicação: a replicação atende vários propósitos (alguns exemplos) : uso da replica como read only em projetos OLTP, retirando enormemente o "peso" do banco principal. H.A. para tolerância a falhas, replicação lógica e multi-master.

  3. Tenho uma base com 7000 tabelas e 20 mil índices,1 TB de dados. Não sei nem se o MySQL daria conta, quanto mais o sqlite. O ponto aqui é que o Post está muito mais pra "potência" do Oracle/DB2 do que os concorrentes.

Entendo que quando se usa frameworks com abstração de base, a migração pode não ser tão complexa. Mas o planejamento prévio e criterioso evita muita dor de cabeça no futuro.

Assim, pra quem está pensando em "abandonar" o Post, repense. Ele e muito, mas muito maior que um simples hype da geração Z. 😉

Abraço.

1

Meu amigo, administro um sistema que foi criado com mysql, pensa numa dor de cabeça, o banco está com 80gb, muito pouco, mas o banco é um devorador de recursos do servidor, estamos estudando para migrar para postgres, mas quando fizeram o sistema na época, infelizmente estavam passando pelo hype do mysql e hoje pagamos caro por esse hype.

1

Opa, valeu por sua contribuição.
Bem interessante o ponto levantado.

  1. Seria interessante dar exemplo seria uma base grande, porque ate 50gb SQLite esta gerenciando bem 😁
    Aliás muitas não crescem sua base nem para um décimo desse tamanho.
    Mas já dar para entender que as vezes soluções mais simples, resolvem grandes problemas.

  2. Ai realmente coisas assim, seria legal escolher outra opção se for necessário.

  3. Sobre MySQL sim, lembre-se era ou é o que mais se usa ainda e grandes aplicações usam ele, inclusive com questão de replicação e etc.

O ponto do post não seria na verdade o abandono do PostgreSQL, na verdade conhecer outras opções e não achar que existe só ele, e também saber escolher para o projeto, às vezes outras vão atender tão bem quanto.
Afinal para "ativar" essas opções avançadas do PostgreSQL vai
precisar de conhecimento e também pode se conseguir em outra opção também.

3

boa noite, sr.

sim, tenho ido quase sempre de postgresql.
eu sinto que ocorrem diferentes hypes, e todos são normais.
às vezes, cada lado apenas quer ter o seu próprio lado, e tá tudo bem.

uma análise orientada a fundamentos e baseada em pré-requisitos é a mais madura decisão.

eu tinha uma tv box de 2GB de RAM já rodando armbian em um allwinner H3 (quad core @ 1.2GHz). eu a usaria para usar como servidor web de testes. por isso, simplesmente eu descartei o postgresql. não quis me preocupar com otimizações de RAM. simplesmente, o sqlite com um ORM seria o suficiente para mim. eu ainda ia rodar docker, e precisaria de cache com redis. é um projetinho, em um cenário em que recursos são críticos. eu só tinha 8GB de armazenamento NAND

para trabalhar em empresas, as quais já têm projetões os quais utilizam SGBDs intensivos em RAM de qualquer forma, considerando que muitos devs ainda vão candidatar-se a essas empresas, precisarei de ressaltar: é válido defender o uso de SGBDs nos projetinhos de aprendizados.

se eu estivesse lá em 2012, eu ainda escolheria o postgresql se eu: não soubesse como sqlite funciona; se eu não tivesse conhecimento sobre bancos de dados; se eu precisasse de outros tipos de ferramentas.

para um servidor de jogo 2D feito no rpg maker xp em 2015, faz todo sentido usar o sqlite.
se eu usasse o postgres para isso, sendo que na verdade eu usaria mysql porque esse o hype da época, eu sentiria tanta dificuldade OU ficaria tão pesados as rotinas e os serviços (meu hardware na época era fraco), que provavelmente eu redescobriria a existência do sqlite e a necessidade de usá-lo para hospedar numa VPS de 1 núcleo com 2GB de RAM com 100GB de HD (SAS? não sei se na época era).

1

Bem legal sua experiência
Um ponto que vi de importante é a questão de conhecimento que você falou.
Tendo o conhecimento de cada opção fica melhor escolher a melhor opção para o projeto naquele momento 👏

3

Boa noite a todos

Eu não uso muito o postgres, não por ser ruim ou algo do tipo. Utilizo muito o mysql por ser a escolha padrão da minha stack (Laravel).

Se for um projeto com recursos limitados, como um app de celular, o sqlite é a melhor escolha, já que não preciso de um serviço de banco de dados rodando em segundo plano e seu custo de recursos é baixo, equivalente a ler um arquivo de texto.

Para projetos onde teríamos pouco acesso simultâneo, o sqlite da conta do recado.

Para projetos médios, o postgres tem ótima performance e o mysql/mariadb não ficam atrás de recursos e performance. Aí nesse caso o sqlite fica muito atrás por acesso simultâneo.

Agora, se sua empresa é grande e teremos um único banco de dados com muitas tabelas, aí terá que ir para um banco mais parado, com Oracle ou mssql server. Pois aí o postgres e o mysql dão conta mas já fica extremamente apertado para trabalhar.

Não existe bala de prata, mas sim analisar qual será o uso. Se algo para testes com poucos acessos vai de sqlite é seja feliz. Se precisar de acesso simultâneo, um mysql ou postgres já resolve. Se precisar de muitos dados, com muitos acessos, Oracle ou mssql server.

1

Valeu pelo comentário, e vejo muitas pessoas pensando assim também
Como se fosse uma escala a questão de banco de dados

  • SQlite
  • MySQL
  • Postgresql
  • SQL Server
  • Oracle

E eu já pensei assim, mesmo para acesso simultâneos, não é assim
Muitos serviços grandes usam Mysql por exemplo (milhares de acessos simultâneos e dificilmente irão para outra solução)
O detalhe é extrair o máximo de cada um e saber usar cada solução (nem vamos entrar nos bancos NoSQL porque se não vira bagunça, brincando 😁, mas seria outras opções se o caso é só velocidade)

Em questão acessos simultâneos, seria algo como:

1 nível. SQlite
2 nível. MySQL, Postgresql, SQL server, Oracle

Resumindo:
MySQL é o padrão de mercado que é muito utilizado ainda hoje, não é atoa quando foi comprado, fizeram um fork free MariaDB
PostgreSQL o banco de dados top também open source (cresceu muito a adoção nos últimos anos)
SQL Server, o banco de dados muito bom, que gosta de uma memória ram e que é proprietário (mundo MS)
Oracle, mais um banco propritário top também, mas tão bom quanto os outros aqui.

OBS: só não inclui o SQLite ainda no nível 2 também porque eu ainda não tive tanta experiência com ele em muitos acessos simultâneos mesmo, mas assim que testar e ver que realmente aguenta também. Os outros já tive experiência e por isso posso falar mais nesse quesito. Mas questão de velocidade, tão bom quanto os outros como comentei.

Outras opções

Outras opções de banco dados sim, podem deixar algo a desejar, por exemplo já trabalhei com firebird (não escrevi errado, não é firebase não rsrs) quem é das antigas vai lembrar, ainda é utilizado na verdade e muito ainda hoje na parte de automação comercial. Mas mesmos essas das antigas evoluíram, não dar para ficar usando é as versões 2.1 e 2.5 ficar dizendo que são ruins. Agora 3.0 4.0 melhoraram e muito

E ainda teve outros que usei Dbase, Access e outros mais que ai é bom ficarem no passado mesmo 😂

2

Sempre PostgreSQL, conheço outros mas PGSQL (ou o dialeto SQL do PostgreSQL) ainda continua sendo essencial para qualidade de vida, coisas como "SELECT DISTINCT ON (coluna)" não tem alternativa para aplicações locais ainda arrisco um SQLite quando é algo simples comprado ao que eu normalmente faço mas passou de uma sala é PostgreSQL

1
2

Penso que o motivo de tantos tutoriais usarem PostgreSQL e MySQL é porque são bancos de dados que frequentemente são usados em projetos reais de empresas. E para quem já trabalha e usa em projetos pessoas, imagino que seja por costume.

0

Sim, também acho. Mas vejo muitas vezes não entendendo o motivo de cada escolha, e acha que só existe uma opção, ou que sempre aquela opção é a melhor.

A ideia é fomentar que tenha outras opções tão boas quanto 😎

2

Eu sempre falo isso, mas pessoas não acreditam.

Se o SQLite performou igual ou é uma situação muito específica ou algo foi feito errado nele, porque é para ser bem melhor, na maioria dos casos.

Defendo muito o SQLite e cada vez mais com o surgimento de novas ferramentas e padrões de uso, mas tenho que dizer que não é para qualquer.

Essa coisa de "Migrar para outro banco de ados" é um mito, as pessoas carregam de penduricalhos achanado que um ia vai precisar, quase nunca vai acontecer, quando acontece é porque a pessoa é ruim demais, a migração não pode ser pura, não pode ser só usar a inicialização do ORM e boa, como muitos acham, dá muito mais trabalho, ao ponto que tentar abstrair faz a profecia ser auto realizável, você vai trocar porque tentou fazer algo genérico em vez de otimizar bem para um banco dados.

O banco de bem otimizado "opera milagres".

Eu tenho que admitir que o risco de ter que mudar para outra coisa depois quando se usa o SQLite, é maior que os outros candidatos tradicionais, mas ainda é pequeno se a pessoa não for completamente sem noção.

Tem sistemas enormes rodando com milhares de pessoas simultâneamos rodando SQLite. é Caro que a arquitetura e a necessidade especial é que permitaram isso. E podem crescer que fica tempo constante (essencialmente).

Tem casos que deve usar pg, my, Oracle, Sqlserver e outros, até firebird. SQLite serva pata muito mais que a maioria acha, mas não serve para tudo, especialmente se não for algo tão simples assim e a pessoa não sabe fazer nada certo. Tem que ser bom de arquitetura pro SQLite scalar, mas ele escala. A questão é achar o ponto onde o fazer funcionar bem pode sair mais caro que outra opção mais preparada para grandes escalas.

A esmagadora maioria das pessoas que trabalham com DB não está atualizada com tudo que ocorre na cena do SQLite, o que ele falarem é algo do passado que não vale mais hoje.

O SQLite tem algumas limitações em acerto ponto, mas escolha entre MySQL e PostgreSQL vai mais pelo gosto ou algo muito específico o que qualquer outras coisa. Ambos alguém firme os maiores sites do mercado, é só saber fazer.

SQL Server, Oracle e provavelmente DB (conheço quase nada) podem ser melhores em alguns casos, geralmente as versões mais varas, é como precisa do Core i9, quase ninguém precisa, mas se precisa desse pouquinho a mais ele entrega e arranca seus rins.

È bom lembrar que eu já escrevi artigos sobre DBs há 10 amos atrás que hoje tem valor quase zero, porque o mundo dá voltas. Então cuidado se estiver lento em 2035, 2030 ou 2027.

S2


Farei algo que muitos pedem para aprender a programar corretamente, gratuitamente (não vendo nada, é retribuição na minha aposentadoria) (links aqui no perfil também).

1

Opa, muito legal a sua contribuição

Não queria chegar já mandando 2 polêmicas rsrsrs Questão da perfomance ser melhor também em vários casos 😂
Mas já que comentou, eu vi isso na prática aqui
Como comentei, consegui popular a base dados com postgres e sqlite
No Sqlite até de maneira automatizada pela facilidade nele, claro no postgres também deria ter conseguido se pesquisado talvez mais um pouco. Mas manualmente foi e de maneira até mais rápida a população do banco, mas como é o insert inicial não foi tão relavante esse detalhe, MAS pensando que é uma base de muitos GBs pode ser algo interessante

O banco de bem otimizado "opera milagres".

Concordo

Eu tenho que admitir que o risco de ter que mudar para outra coisa depois quando se usa o SQLite, é maior que os outros candidatos tradicionais, mas ainda é pequeno se a pessoa não for completamente sem noção.

100% 👍

Um ponto que até falou e fiquei pensando, citou novamente o firebird
Um teste muito bom, pelo menos para sistemas legados, de PDV e coisas assim seria usar o sqlite como altenartiva por causa de uma coisa que via muito acontecer: corrompimento de banco de dados junto com delphi (acho que em grande parte era culpa do delphi que tinha feito o ERP na época, mas outra do DB, porque não vi isso aconetecendo com outras banco de dados, mesmo com devs ruins ou iniciantes), poderia ajudar muito se talvez usassem um sqlite, já que são no máximo ali umas 5, 10, 20 conexões no banco em uma rede no cabeada.

Creio que o motivo de não ter pego o sqlite nesse cenário, porque o firebird ainda é muito forte na parte de automação com delphi ainda.

Mais uma vez obrigado por sua contribuição

2

Caixa pode e deveria ter um db pra cada unidade, o que faz o SQLite a púnica solução sensata (as outras funcionam também sem problemas). Uma hora de juntar tudo, que pode ou não acontecer de acordo com o sistema, mas vamos considerar que tenha que juntar, é só enfileirar e o SQLite não terá problema, mas é um caso que admito que o SQLite já não é perto de 99% de certeza que é a melhor solução. Se deseja já mandar tudo junto, dá também, para centenas de caixas operando juntos, mas pode ser que a pessoas tenha que saber fazer isso de forma correta, e outros DBs já estão preparados para isso.

O Firebird é bem interessante mas ele não tem algo que faça ele ser relevante no mercado, tanto que quase 100% do uso dele é em aplicações Delphi, ou seja, o motivo é o que tem mais à mão ali, não é um motivo técnico. Ele é pesado e tem mais problemas que o SQLite (sim, ele foi feito em uma época e por pessoas que não entendiam bem oque estavam fazendo e nunca foi corrigido, funciona em quase 100% das vez e isso está bom para alguns) e não tem todos os recursos que um MySQL ou PostgreSQL têm. Em muitos casos ele não casa bem com a linguagem que o operará porque ninguém fez um driver decente.

1

Top,
Pensei mais na opção de deixar o banco centralizado no caso do SQlite
Mas realmente o que falou pode fazer sentido mesmo

Em um tempo que trabalhava muito com firebird e depois conheci o mysql, a primeira coisa que pensei foi "porque não usam isso aqui em vez daquela carroça, comrrompedor, firebird"

Depois de um tempo só comprovei o que pensei mesmo 😂

As versões posterior pode/melhorou isso, eu sei, mas o trauma ficou, mas até hoje o considero, não fico só pensando só nos problema que tive com ele na versão 2.1 e 2.5 acompanho as atualizações e etc.

Aproveitando firebird está na versão 5 já (desse ano) 🙃😂

1

Eu usava sempre Postgres no back como default, comecei a usar SQLite como default faz uns 2 anos e não me arrependo!

Inclusive para apps iOS, parei com Core Data e agora vou direto no SQLitee não me vejo usando outra coisa para mobile.

1
1

O dia a dia é sempre tão corrido, que é verdade, as vezes a gente automatiza algumas decisões, porque nos trazem segurança, pode até não ser a melhor decisão para aquele projeto, mas a diferença não vai ser grande.

Na minha cabeça existem papéis determinados. Se vou fazer uma api, um serviço auxiliar, eu vou de mysql/mariadb. Tenho dois RDS e crio vários bancos ali dentro e separo as permissões para cada aplicação e boas, vida que segue.

Uma aplicação mais robusta, a mão coça pra usar mysql pela praticidade, mas acabo indo de Postgre.

Um ERP sempre vai ser MS Sql Server ou Oracle, mas isso só chega até nós, raramente estaremos na decisão de escolher um banco de dados de um ERP, e é uma delícia trabalhar com Sql Server.

Agora Sqlite, é só para banco de um app mobile, mas na outra ponta, na api certamente os dados virão de um outro banco mysql/postgre/firebase/dynamo. Porque apesar de toda evolução que possa ter acontecido, o conceito do sqlite e do firebird embedded é um arquivo de texto, que é acessado via drivers que padronizam e otimizam esse arquivo texto, mas não deixa de ser. A chance de um badblock, uma queda de energia, ou qualquer problema no servidor te fazer perder um banco de dados inteiro é com certeza muito maior do que nas outras opções onde você tem um serviço de banco de dados.

É aquela coisa, você testa e está funcionando, está lindo, mas quando a coisa cresce, os anos passam e acontece algum pepino você se arrepende por não ter escolhido algo mais robusto.

1

Valeu pela contribuição
A ideia da maioria é assimm mesmo, já tem escolhas pré prontas

A ideia do post é exatamente vir de encontro a isso. Muitas já tem essa cartilha por descições do passado, ou como tu comentou outros tomam a decisão então nem tem muito o que fazer, ou mesmo vai pela ideia dos outros.

Mas qualquer banco de dados por atender qualquer tipo de aplicação na verdade, foi feito para isso, é usado para isso, e tem funcionado muito bem por muitas pessoas que sabem usar realmente aquela opção.

A questão de robusto, poderia dizer que todos são, porque entre escrever um arquivo e um banco muda muita coisa (são muitos mecanismo para ajudar a não acontecer o corrompimento e outros problemas), para chegar a ser usado por muitos, isso é muito testado, e o mais legal pode ser comprovado pela pessoa. O único banco que eu vi comrromper até hoje foi o firebird, e olha que já fezemos muitos testes, temos diversas soluções, já trabalhei em várias outras, e mesmo nesse caso ainda acho que o programador teve culpa pelo jeito que usava o firebird (conexão sempre aberto e outras gambiarras a mais).

SQL Server é bacana mesmo, só o lado de uso da memória ram e o jeito de cobrança deles que não achei legal, mas ali é banco completão mesmo.