2008-10-19 15 views
5

Devo iniziare a costruire l'architettura per un progetto di database, ma in realtà non conosco le differenze tra i motori.postgresSQL mysql differenze oracolari

Chiunque può spiegare quali sono i pro ei cattivi di ciascuno di questi tre motori? Dovremo scegliere uno di loro e l'unica cosa che in realtà so di loro è questo:

  • Mysql & Postgres:
    • sono gratuiti, ma non così buono come oracolo
    • Mysql come la sicurezza problemi (è vero?)
  • Oracle:
    • miglior motore di base di dati in mondo
    • costoso

Qualcuno può cancellare altre differenze tra di loro? Questo è un progetto medio/grande (stiamo pensando a circa 100- 200 tavoli) con un budget basso, cosa sceglieresti? E con un budget più alto?

Grazie a tutti per aiutare a chiarire le differenze.

ps: spero di non duplicare un post esistente, ma ho provato a cercare e non ne ho trovato nessuno.

risposta

12

Alcuni anni fa ho dovuto scrivere un motore di traduzione; lo si nutre di un set di sql e si traduce nel dialetto del motore attualmente connesso. Il mio motore funziona su Postgres (AKA PostgreSql), Ingres, DB2, Informix, Sybase e Oracle - oh e ANTS. Francamente, Oracle è il mio preferito (più su quello che segue) ... Sfortunatamente per te, mySql e SQL Server non sono nella lista (al momento nessuno dei due era considerato un RDBMS serio - ma i tempi cambiano).

senza tener conto della qualità o le prestazioni del motore - e la facilità di fare e di ripristino di backup - qui ci sono le principali aree di differenza:

  • tipi di dati
  • limiti
  • invalidi
  • riservati parole
  • semantica null (vedere di seguito)
  • semantica di quotazione (virgoletta singola, virgoletta doppia ", o e ither)
  • semantica completamento delle istruzioni
  • semantica funzione
  • data la manipolazione (comprese le parole chiave costante come 'adesso' e la funzione di input/output i formati)
  • se commenti in linea sono consentiti
  • massimo attributo lunghezze
  • numero massimo di attributi
  • semantica di connessione/paradigma di sicurezza.

Senza annoiarvi su tutti i dati di conversione, ecco un campione per un tipo di dati, LVARCHAR:

oracolo = varchar (% x) Sybase = testo Postgres db2 = "long varchar" Informix = LVARCHAR = varchar (% x) ants = varchar (% x) ingres = varchar (% x,% y)

Il più grosso di tutti, a mio avviso, è la gestione nulla; Oracle SILENTLY converte le stringhe di input vuote in valori nulli. ... Da qualche parte, molto tempo fa, ho letto una recensione che qualcuno aveva fatto su "The Seventeen Meanings of Null" o qualcosa del genere e il vero punto è che i null sono molto preziosi e la distinzione tra una stringa nulla e una stringa vuota è utile e non banale! Penso che Oracle abbia commesso un errore enorme su questo; nessuno degli altri ha questo comportamento (che io abbia mai visto).

Il mio secondo preferito era ANTS perché, a differenza di tutti gli altri, hanno FORFORATO le regole stupide per una sintassi perfetta che nessun altro fa e mentre potrebbero essere l'unica azienda DB a fornire la perfetta aderenza allo standard, sono anche un dolore reale nel culo per scrivere il codice per.

Di gran lunga il mio preferito è Postgres; è molto veloce in situazioni _real_world_, ha un grande supporto ed è open source/gratuito.

+0

Oracle consiglia di utilizzare varchar2 non varchar. –

+0

Grazie per l'aggiornamento, Mark. Mi assicurerò che venga propagato nuovamente nel motore e prendo un momento per cercare anche altri aggiornamenti. RT –

3

Vedi le tabelle di confronto su wikipedia: http://en.wikipedia.org/wiki/Comparison_of_object-relational_database_management_systems & & http://en.wikipedia.org/wiki/Comparison_of_relational_database_management_systems

Oracle può o non può essere la migliore. È costoso, ma questo non significa migliore.

Hai guardato DB2? Sybase? Teradata? MS SQL?

+0

ty, io sono uno studente ed è per un progetto universitario, l'insegnante di db come ne parlava solo, sapevo di ms sql ma non avevo idea degli altri. Tks per il link :) – fmsf

+0

HTH :) ..Mi associo a qualsiasi rdbms a cui la scuola ha accesso: che sia MS SQL, Oracle, MySQL o PostgreSQL (è improbabile che abbiano DB2, ma possibile) – warren

+0

possiamo scegliere da qualsiasi oracle gratuito – fmsf

4

Le differenze tra le diverse implementazioni SQL sono grandi, almeno sotto il cofano. Queste schede non sono sufficienti per contarle tutte.

Se devi chiedere, devi anche chiederti se sei in grado di raggiungere una decisione valida e fondata in merito.

A comparison von MYSQL and Postgres can be found here

Nota che Oracle offre anche un Express (XE) edition, ridotta nelle caratteristiche, ma liberi di utilizzare. Inoltre, se hai poca conoscenza per iniziare, dovrai imparare te stesso, sceglierei uno qualsiasi e iniziare ad imparare usandolo.

+0

Lo stesso commento che ho lasciato per Warren, io sono uno studente, ed è per un progetto in una classe, abbiamo cercato di fare ricerche ma non riusciamo a capire cosa sarebbe meglio usare. L'univoci ci fornisce le chiavi per l'oracolo. Tks per il collegamento e il riferimento – fmsf

+0

È necessario solo XE se si desidera utilizzarlo in Prod. Se lo stai solo provando ... scarica l'edizione aziendale e impara tutte le funzionalità. –

2

Penso che per gli scenari a basso budget Oracle sia fuori questione. Le tabelle 100-200 non sono grandi e generalmente la quantità di tabelle in uno schema non è una misura di scala. Dataset e throughput è.

Puoi dare un'occhiata a http://www.mysqlperformanceblog.com/ (e al loro superbo libro) per vedere come MySQL può gestire enormi installazioni.

Generalmente oggigiorno la maggior parte degli RDBMS è in grado di eseguire quasi tutto ciò che è necessario in un'applicazione molto seria.