Frage

Wir leben in einem goldenen Zeitalter der Datenbanken mit zahlreichen hochwertigen kommerziellen und kostenlosen Datenbanken.Das ist großartig, aber der Nachteil ist, dass es für jemanden, der für sein nächstes Projekt eine Datenbank benötigt, keine einfache, offensichtliche Wahl gibt.

  • Welche Einschränkungen/Kriterien verwenden Sie für die Auswahl einer Datenbank?
  • Wie gut erfüllen die verschiedenen von Ihnen verwendeten Datenbanken diese Einschränkungen/Kriterien?
  • Welche Besonderheiten haben die Datenbanken?
  • Welche Datenbanken empfehlen Sie gerne weiter?

usw...

War es hilfreich?

Lösung

Ich würde zunächst darüber nachdenken, welche Systemanforderungen für Datenzugriff, Datensicherheit, Skalierbarkeit, Leistung, nicht verbundene Szenarien, Datentransformation und Datengröße gelten.

Berücksichtigen Sie andererseits auch die Erfahrung und den Hintergrund von Entwicklern, Betreibern und Plattformadministratoren.

Sie sollten auch darüber nachdenken, welche Einschränkungen Sie hinsichtlich Programmiersprachen, Betriebssystemen, Speicherbedarf, Netzwerkbandbreite und Hardware haben.

Zu guter Letzt müssen Sie über geschäftliche Aspekte wie Budget für Lizenzen, Support und Betrieb nachdenken.

Nach all diesen Überlegungen sollten Sie am Ende nur noch ein paar Optionen haben und die Auswahl sollte einfacher sein.

Mit anderen Worten: Wählen Sie die Technologie aus, die den Einschränkungen und Anforderungen Ihrer Organisation und Ihres Projekts am besten entspricht.

Ich denke sicherlich, dass Sie recht haben, wenn Sie sagen, dass dies angesichts der Vielzahl an Alternativen keine offensichtliche Wahl ist, aber ich denke, dass dies die einzige Möglichkeit ist, sie auf diejenigen einzugrenzen, die für Ihr Projekt wirklich machbar sind.

Andere Tipps

Meine Auswahlkriterien (hauptsächlich programmorientiert):

  • Wartung:Wie werden Updates/Hotfixes installiert?
  • Transaktionskontrolle:Wie es umgesetzt wird
  • Werden gespeicherte Prozeduren unterstützt?
  • Können Sie die Ausnahmebehandlung in gespeicherten Prozeduren verwenden?
  • Kosten
  • Als Vorteil:Können Sie Rekursion für gespeicherte Prozeduren verwenden?(Z.B.in SQL Server 2000 stoppt die Rekursion nach 32 IIRC-Durchgängen)

Für die meisten Menschen in einem Unternehmensumfeld kommt es darauf an, „das zu wählen, was wir haben“.

Da Sie anscheinend das Glück haben, die Wahl zu haben, gehe ich die Fragen kurz durch und stelle am Ende vielleicht noch ein paar weitere.

Das größte Kriterium dürften die Kosten sein.Möchten/sind Sie bereit, für Ihre DBMS-Plattform zu zahlen?Wenn nicht, sind Oracle, MS SQL Server, Sybase und andere wahrscheinlich nicht mehr verfügbar. Wenn Sie jedoch keine kommerzielle App erstellen, gibt es möglicherweise etwas Spielraum.Außerdem Plattform – können Sie die Software auf Ihrer Hardware ausführen?

Weitere zu berücksichtigende Dimensionen könnten die erwartete Anzahl gleichzeitiger Verbindungen, transaktionale vs. hauptsächliche Lesevorgänge, Größe, Verfügbarkeit und vermutlich viele andere sein.

„Besonderheiten“ sind grundsätzlich zu vermeiden – in meiner zynischen Weltanschauung sollen sie einen an eine Plattform binden.So etwas wie PL/SQL von Oracle ist eine Funktion, die zwar leistungsstark ist (und wahrscheinlich den Bedarf an zusätzlicher CPU-Leistung bei höheren Lizenzkosten mit sich bringt), aber nicht portierbar ist.Wenn Sie extrem hohe Volumina erwarten, kann eine Partitionierung meiner Meinung nach nützlich sein.

Ich habe mit Oracle, MS SQL Server, MySQL, PostreSQL, SQLite und Sybase gearbeitet, die mir einfallen.Ich würde gerne alle außer Sybase empfehlen, worüber ich heutzutage einige Bedenken habe (ich könnte mich leicht irren, aber ich persönlich denke, das Geld könnte woanders besser angelegt werden), aber nicht alle für die gleichen Anwendungen.

Im Idealfall möchte ich das gute Gefühl haben, dass es keine Rolle spielt, welche DB-Plattform ich verwende, weil ich die Portierung problemlos durchführen kann.Mit einer guten Abstraktionsschicht zwischen Daten und Geschäftslogik sollte ich in der Lage sein, lokal beispielsweise mit dem hervorragenden SQLite zu entwickeln und beispielsweise auf Postgres problemlos zu implementieren.Mit etwas wie ActiveRecord von Rails und ein wenig Bewusstsein für Dinge wie Unterschiede bei reservierten Wörtern ist dies fast völlig kostenlos.

Der überzeugendste Faktor ist sicherlich das Fachwissen von Ihnen oder Ihrem Team … oder der Ressourcenpool, den Sie in Zukunft wahrscheinlich einstellen werden.Meistens tendiere ich dazu, mit dem Strich zu gehen und MySQL in einem LAMP-Team und SQL Server in einem MS-Team zu verwenden, da jedes dieser Produkte in der Lage ist, auch in einer Umgebung mit hoher Auslastung alles Notwendige zu tun.

Die Vorteile einer anderen Datenbank werden im Vergleich zu den Mühen, die es mit sich bringt, zu lernen, wie man sie richtig nutzt, marginal sein.Die einzige Ausnahme hiervon wäre meiner Meinung nach ein Umfeld mit hoher Nachfrage, in dem:

A.Die offensichtliche Wahl wurde ausprobiert und scheitert

B.Die Vorteile der Skalierung vervielfachen den Grenznutzen so sehr, dass sich die Kosten für die Verwendung von etwas Unerwartetem lohnen.

Ich gehe davon aus, dass mindestens zwei, vorzugsweise drei hervorragende Datenbankadministratoren eingestellt werden müssen, die sich seit langem mit der neuen Datenbank auskennen.

Und zunächst würde ich versuchen, sie für die Technologie einzustellen, die versagt hat, denn es ist wahrscheinlicher, dass die Art und Weise, wie sie verwendet wird, das Problem verursacht, und nicht die Technologie selbst.

Die vorhandenen Antworten sind großartig.Bedenken Sie, dass Oracle jetzt über eine XE-Version seiner 10g-Datenbank verfügt, die kostenlos erhältlich ist und mit Application Express, einer großartigen webbasierten Entwicklungsumgebung, geliefert wird.

Es ist begrenzt, 4 GB HD, 1 GB RAM und verwendet nur eine CPU.Dies reicht jedoch aus, um ein kleineres System zu betreiben, und kann bei Bedarf zu einem späteren Zeitpunkt problemlos aktualisiert werden.Oracle kann am schwierigsten zu erlernen sein, ist aber auch eines der besten, die man im Lebenslauf haben kann :-)

Ich denke, dass SQLServer von Microsoft auch eine Datenbank vom Typ „Starter“ hat.Lassen Sie die kommerziellen Produkte nicht außer Acht – wenn Sie Ihr Unternehmen auf eine Datenbanktechnologie setzen, würde ich persönlich lieber ein Produkt von Oracle oder Microsoft verwenden.Das heißt nicht, dass mit Open Source etwas nicht stimmt.

Verbringen Sie eine Weile damit, sie zu bewerten :-)

  • Linux, Web-gehostet – MySQL (PostreSQL vielleicht)
  • Mainstream-KMU – MS SQL
  • Big Iron (Bankwesen usw.) – Oracle

Über etwas anderes als diese drei nachzudenken ist Selbstbefriedigung – jede der anderen Datenbanken wird zu einer Diskussion über Nischenprodukte zur Lösung bestimmter Probleme, auf die Sie wahrscheinlich noch nicht gestoßen sind.Wenn Sie etwas anderes als die drei oben genannten wählen, werden Sie –

  1. Schwierigkeiten haben, Leute zu finden, die an dem Projekt arbeiten oder die Datenbank am Laufen halten
  2. Haben Sie Mühe, Ihre Entscheidung ohne eine wissenschaftliche Diskussion zu begründen?
  3. Ein paar Jahre später wird jemand Sie, Ihre Vorfahren und Ihre Abstammung verfluchen – und Ihre Wahl trotzdem ersetzen.

Nischendatenbanken sind nicht der Ort, an dem architektonische Fortschritte gemacht werden – es sind Technologien wie Middleware, Messaging, Cloud-Dienste usw., bei denen Sie es sich leisten können (und sollten), bei der Suche nach guten Produkten aufs Ganze zu gehen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top