2008-10-19 6 views
5

Ich muss anfangen, die Architektur für ein Datenbankprojekt zu bauen, aber ich kenne wirklich nicht die Unterschiede zwischen den Motoren.postgresSQL mysql Orakel Unterschiede

Jeder kann erklären, was die Vor- und Nachteile jeder dieser drei Motoren ist? Wir haben einen von ihnen zu wählen, und das einzige, was ich über sie eigentlich wissen, ist dies:

  • Mysql & Postgres:
    • frei sind, aber nicht so gut wie Orakel
    • Mysql als Sicherheit Probleme (ist das wahr?)
  • Oracle:
    • Beste Datenbank-Engine in der Teure Welt

Kann jemand räumen andere Unterschiede zwischen ihnen? Dies ist ein mittleres/großes (wir denken an etwa 100 bis 200 Tische) Projekt mit geringem Budget, was würden Sie wählen? Und mit einem höheren Budget?

Vielen Dank für die Klärung der Unterschiede.

ps: Ich hoffe, ich bin nicht ein vorhandener Post duplizieren, aber ich habe versucht zu suchen, und ich habe keine gefunden.

Antwort

12

Vor ein paar Jahren musste ich eine Übersetzungs-Engine schreiben; Sie füttern es eine Menge von SQL und es wird in den Dialekt der aktuell verbundenen Engine übersetzt. Meine Engine arbeitet auf Postgres (AKA PostgreSql), Ingres, DB2, Informix, Sybase und Oracle - oh und ANTS. Ehrlich gesagt, ist Oracle mein unbeliebtester (mehr dazu weiter unten) ... Leider sind mySql und SQL Server für Sie nicht auf der Liste (zu der Zeit wurde keines als seriöses RDBMS betrachtet - aber die Zeiten ändern sich).

Ohne Rücksicht auf die Qualität oder Leistung des Motors - und die einfache Herstellung und Sicherungen wiederherstellen - hier sind die wichtigsten Bereiche der Unterschied:

  • Datentypen
  • Grenzen
  • Invaliden
  • vorbehalten Wörter
  • null Semantik (siehe unten)
  • Zitat Semantik (einfaches Zitat ', doppelte Anführungszeichen "oder e ither)
  • Anweisungsende-Semantik
  • Funktionssemantik
  • Datum Handhabung (einschließlich konstanten Schlüsselwörter wie ‚jetzt‘ und die Eingabe/Ausgabefunktion Formate)
  • ob Inline-Kommentare erlaubt sind
  • maximale Attributlängen
  • maximale Anzahl der Attribute
  • Verbindungssemantik/Sicherheitsparadigma.

Ohne Sie alle Conversion-Daten zu langweilig, hier ist ein Beispiel für einen Datentyp, lvarchar:

Orakel = varchar (% x) sybase = text db2 = "long varchar" Informix = lvarchar postgres = varchar (% x) ants = varchar (% x) ingres = varchar (% x,% y)

Der größte Deal von allen, meiner Meinung nach, ist null Behandlung; Oracle SILENTLY konvertiert leere Eingabezeichenfolgen in Nullwerte. ... Irgendwann, vor langer Zeit, las ich einen Artikel, den jemand über "Die siebzehn Bedeutungen von Null" geschrieben hatte, und der wirkliche Punkt ist, dass Nullen sehr wertvoll sind und der Unterschied zwischen einer Null-Zeichenkette und einer leeren Zeichenkette ist nützlich und nicht trivial! Ich denke Oracle hat einen großen Fehler gemacht. keiner der anderen hat dieses Verhalten (das ich jemals gesehen habe).

Mein zweitletzter Favorit war ANTS, weil sie im Gegensatz zu allen anderen die albernen Regeln für perfekte Syntax, die absolut niemand sonst tut, und obwohl sie vielleicht die einzige DB-Firma sind, die perfekte Einhaltung des Standards bieten, sind sie auch ein königlicher Schmerz im Hintern, um Code zu schreiben.

Weit weg ist mein Liebling Postgres; Es ist sehr schnell in _real_world_ Situationen, hat große Unterstützung und ist Open Source/Free.

+0

Oracle empfiehlt die Verwendung von varchar2 nicht varchar. –

+0

Danke für das Update, Mark. Ich werde dafür sorgen, dass es wieder in die Engine eingespeist wird - und nimm dir einen Moment Zeit, um nach weiteren Updates zu suchen. RT –

3

Siehe die Vergleichstabellen auf 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 kann oder nicht die beste sein kann. Es ist teuer, aber das heißt nicht, am besten.

Haben Sie sich DB2 angesehen? Sybase? Teradata? MS SQL?

+0

ty, ich bin ein student und es ist für ein universitätsprojekt, der db-lehrer sprach nur über diese, ich wusste über ms sql aber hatte keine ahnung über die anderen. Tks für den Link :) – fmsf

+0

HTH :) ..Ich bleibe bei jedem rdbms, auf den die Schule Zugriff hat: sei es MS SQL, Oracle, MySQL oder PostgreSQL (es ist unwahrscheinlich, dass sie DB2 haben, aber möglich) – warren

+0

wir können aus jedem frei wählen – fmsf

4

Die Unterschiede zwischen verschiedenen SQL-Implementierungen sind groß, zumindest unter der Haube. Diese Bretter werden nicht ausreichen, um sie alle zu zählen.

Wenn Sie fragen müssen, müssen Sie sich auch fragen, ob Sie in der Lage sind, eine gültige und fundierte Entscheidung zu treffen.

A comparison von MYSQL and Postgres can be found here

Beachten Sie, dass Oracle in Funktionen auch eine Express (XE) edition, reduzierte bietet, aber kostenlos zu benutzen. Auch, wenn Sie wenig Wissen haben, um zu beginnen, müssen Sie sich selbst lernen, ich würde nur irgendeinen wählen und anfangen zu lernen, indem ich es benutze.

+0

Gleicher Kommentar, den ich für Warren hinterlassen habe, ich bin ein Student, und es ist für ein Projekt in einer Klasse, wir haben versucht zu recherchieren, aber wir können nicht herausfinden, was wäre besser für die Verwendung. Die Univ gibt uns Schlüssel für Orakel. Tks für den Link und die Referenz – fmsf

+0

Sie benötigen nur XE, wenn Sie es in Prod verwenden möchten. Wenn Sie es gerade ausprobieren, laden Sie die Enterprise Edition herunter und lernen Sie alle Funktionen kennen. –

2

Ich denke, dass für Low-Budget-Szenarien Oracle nicht in Frage kommt. 100-200 Tabellen ist nicht groß und in der Regel ist die Anzahl der Tabellen in einem Schema kein Maßstab. Datensatz und Durchsatz ist.

Sie können einen Blick auf http://www.mysqlperformanceblog.com/ (und ihr hervorragendes Buch) werfen, um zu sehen, wie MySQL große Bereitstellungen handhaben kann.

In der Regel können die meisten RDBMSes fast alles, was Sie in einer sehr ernsten Anwendung benötigen, tun.