Le insidie ​​dell'utilizzo di MySQL come scelta del database? [chiuso]


20

Ho letto online in più occasioni che MySQL è un cattivo database. I luoghi che ho letto includono alcuni thread su Reddit, ma non sembrano mai approfondire il motivo per cui è un prodotto scadente.

C'è qualche verità in questa affermazione? Non l'ho mai usato oltre uno scenario CRUD molto semplice, e quello era per un progetto universitario durante il mio secondo anno.

Quali insidie, se presenti , ci sono quando si sceglie MySQL come database?


7
La trappola principale, ovviamente, è che i fanatici di Postgres cercheranno di renderti insicuro sulla tua scelta.
Dan Ray

Wikimedia lo usa, quindi non dovrebbe essere troppo male.
Arlen Beiler,

Risposte:


32

Esistono due diversi tipi di insidie, quelli dell'utilizzo di MySQL come tipo di RDBMS e quelli dell'utilizzo di un RDBMS invece di altri tipi di database.

Utilizzando MySQL invece di RDBMS alternativi:

  • Vedi questa tabella di confronto di Wikipedia per vari confronti di MySQL con altri RDBMS.
  • Probabilmente preferirai Microsoft SQL Server se stai creando un'applicazione web ASP.NET, poiché il sistema è progettato per funzionare bene insieme, credo sia per gli sviluppatori che per i responsabili IT
  • Potresti preferire Oracle se hai bisogno di una configurazione DB più avanzata che coinvolga il clustering (Oracle RAC) o procedure DB avanzate. Non che MySQL non supporti molte delle funzionalità, ma da quello che ho visto, è molto più probabile trovare un DBA esperto che conosca queste cose per Oracle rispetto a MySQL.
  • Vedi questa domanda su SO per ampi confronti di PostgreSQL con MySQL che lo dicono meglio di me.
  • Ancora più SO: svantaggi di mysql rispetto ad altri database

Utilizzo di RDBMS invece di altri tipi:

Detto questo, MySQL è un ottimo database e non ho lavorato in un'azienda negli ultimi 8 anni che non lo ha utilizzato, in una vasta gamma di applicazioni Web (come e-commerce, siti Web / app , impresa / B2B, giochi web). Per la maggior parte dei casi d'uso tipici delle applicazioni Web, è un'ottima scelta.


4
Ottima risposta, soprattutto per MySQL vs RDBMS e RDBMS vs. NoSQL
Josh K

1
SQL Server ha anche il clustering e le funzionalità avanzate. Ma sei sicuro che avrai più problemi a trovare un esperto di database mySQL in grado di gestire tali cose o persino di saperle progettare. Queste persone si specializzano principalmente in Oracle, db2 o SQL Server.
HLGEM

1
@HLGEM, grazie per aver chiarito che, intendevo mostrare quali punti di forza ha Oracle, non che altri DBMS non supportano tali funzionalità. SQL Server è assolutamente capace in quelle aree, ha solo il rovescio della medaglia naturale della dipendenza da Windows per un'azienda che non usa Windows per nient'altro.
Nicole

1
questo è assolutamente vero, la dipendenza di Windows fa male a SQL Server.
HLGEM

8

MySQL è ora sotto il controllo di Oracle, anche se open source decidono ancora la direzione del progetto e cosa entra.

In termini di database errato, no, è solo "più semplice" di altri.

Se stai cercando punti deboli, te li segnalerò per te, prendiamo PostgreSQL per esempio.

  1. MySQL manca di tipi e array di contenitori.
  2. MySQL non ha sequenze reali (usano l'auto-increment) - Le sequenze Postgres consentono a più tabelle di utilizzare una singola sequenza in modo da poter garantire la cardinalità su più tabelle.
  3. Postgres è conforme ACID, MySQL è parzialmente conforme.
  4. Postgres implementa la variazione dei caratteri e il testo allo stesso modo (Tabelle Toast) - questo approccio che molti sostengono sia migliore di MySQL.
  5. Postgres ha un solo back-end di archiviazione: ciò significa che avrai le stesse funzionalità ovunque.
  6. Postgres consente funzioni lato server scritte in TCL, Python, R e Perl.
  7. Postgres ha un buon supporto per i driver asincroni in Python - Penso che sia un po 'sbagliato con MySQL

6

Storicamente, il supporto delle transazioni era debole e le transazioni sono importanti se è necessario mantenere un database coerente. Al giorno d'oggi, il grande rap è che Oracle lo possiede.


4

Per molto tempo MySQL è stato più un database "giocattolo". Non gestiva le sotto-selezioni nidificate, non supportava il partizionamento dei dati, non offriva più livelli di isolamento delle transazioni, non supportava trigger o procedure memorizzate - molte cose. Molte persone provenienti da background Oracle o SQL Server lo hanno respinto.

Penso che il vero motivo per cui non vedi molti elenchi delle carenze di MySQL sia che ha una base di fan piuttosto rabbiosa che cancella o declassa qualsiasi menzione pubblica di essi. So che ogni volta che ho menzionato i problemi che ho avuto con esso, le risposte tendono ad essere estremamente negative.


3

MySQL è compatibile con ACID se utilizzato con il motore di archiviazione InnoDB - nessun motivo per non farlo così MySQL è compatibile con ACID (a partire dalla versione 5.5 InnoDB è il motore di archiviazione predefinito).

MySQL riceve molta cattiva stampa perché viene spesso utilizzato (o lo era fino all'avvento di NoSQL) come RDBMS di scelta da persone che avevano a malapena bisogno di un database (e forse avevano competenze RDBMS limitate) e quindi lo usavano in modo piuttosto goffo maniera.

Ho usato MySQL molto e da quando è arrivato 5.x c'è ben poco di cui lamentarsi per il 95% delle installazioni che hanno requisiti intermedi.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.