Frage

Gibt es beim Speichern von Webanwendungsdaten eine allgemeine Faustregel, um zu wissen, welches Datenbank-Backend verwendet werden sollte?Sollte ich bei der Auswahl die Anzahl der Zugriffe pro Tag, die Anzahl der Datenzeilen oder andere Kennzahlen berücksichtigen?

Meine ursprüngliche Idee ist, dass die Reihenfolge dafür etwa wie folgt aussehen würde (aber nicht unbedingt, weshalb ich die Frage stelle).

  1. Flache Dateien
  2. BDB
  3. SQLite
  4. MySQL
  5. PostgreSQL
  6. SQL Server
  7. Orakel
War es hilfreich?

Lösung

Es ist nicht ganz so einfach. Die einzige Faustregel ist, dass Sie nach einer anderen Lösung suchen sollten, wenn der Strom kann man nicht mehr mithalten. Das könnte unter Verwendung verschiedene Software (nicht unbedingt in jeder global festgelegten Reihenfolge) umfasst, Hardware oder Architektur.

Sie werden wahrscheinlich viel mehr Nutzen aus Caching von Daten mit so etwas wie Memcached bekommen, als zu einem anderen Schalt Zufalls Speicher-Backend.

Andere Tipps

Wenn Sie denken, Sie gehen immer eines der Schwergewichte müssen (SqlServer, Oracle), sollten Sie mit einem von denen am Anfang beginnen. Datenmigrationen sind extrem schwierig. Auf lange Sicht wird es kostet Sie weniger nur an der Spitze beginnen und dort zu bleiben.

Ich glaube, Sie in Ihren Rankings zu spezifisch zu sein. Sie können für etwas größere ziemlich mit flachen Dateien und dergleichen für sehr kleine Datenmengen, gehen bis zu so etwas wie DBM beginnen, die keine SQL-ähnlicher Syntax erfordern und danach zu einer Art von SQL-Datenbank gehen.

Aber wer will all das Umschreiben zu tun? Wenn die Anwendung von Zugriffs profitieren zu beitritt, Stored Procedures, Trigger, Fremdschlüssel Validierung und dergleichen -. Nur eine SQL-Datenbank verwenden, unabhängig von der Datenmenge Größe

, die man sollte, hängt von der bestehenden Anlagen des Kunden und welche DBA Fähigkeiten zur Verfügung stehen, als auf die Menge an Daten, die Sie halten.

Mit anderen Worten, die Größe der Datenbank weitem nicht die einzige Überlegung ist, und vielleicht nicht das wichtigste.

Es gibt keine Decke Antwort auf diese Frage, aber fast immer, flache Dateien verwenden, ist keine gute Idee. Sie haben durch sie zu analysieren (nehme ich an) und sie nicht gut skalieren. Beginnend mit einer geeigneten Datenbank, wie Oracle oder SQL Server (oder MySQL, Postgres, wenn Sie nach freien Optionen suchen) ist eine gute Idee. später für sehr wenig Aufwand, werden Sie sich viel Mühe und Kopfschmerzen speichern. Sie ermöglichen es, Ihre Daten auch in einem nicht dumm Art und Weise zu strukturieren, so dass Sie frei zu denken, was Sie mit den Daten zu tun, anstatt wie werden Sie es in / out bekommen.

Es hängt wirklich von Ihren Daten, und wie Sie beabsichtigen, es zu benutzen. Bei einem meiner früheren Positionen, haben wir Postgres aufgrund der nativen Geo-Location und Zeitzone Erweiterungen, die bestanden, weil es uns unsere Daten mit polygonalen Datentypen zu verwalten erlaubt. Für uns, wir brauchten, das zu tun, und das wollten wir auch Stored Procedures, Views und dergleichen verwenden.

Nun, ein anderer Ort, den ich bei gebrauchten MySQL einfach gearbeitet, weil die Daten normalisieren, Standard Reihe von Zeilendaten.

SQL Server, für eine lange Zeit, hatte eine 4gb Datenbank Grenze (SQL Server 2000 sehen), aber trotz dieser Einschränkung bleibt es eine sehr stabile Plattform für kleine bis mittlere Anwendungen, für die die alten Daten gelöscht werden.

Nun, von der Arbeit mit Oracle und SQL Server 05/08, alles, was ich Ihnen sagen kann, ist, dass, wenn Sie die Creme der Ernte für Stabilität, Skalierbarkeit und Flexibilität wollen, dann diese beide die beste Wahl sind. Für Unternehmensanwendungen, empfehle ich sie stark (nur weil das ist, was wir verwenden, wo ich jetzt arbeiten).

Andere Dinge zu beachten:

  • Sprachintegration (ASP.NET Sitzungsspeicher, Rollenverwaltung, usw.)
  • Abfragetypen (Select, Update, Delete) [Obwohl dies eher ein Schema Design-Problem, kein DBMS Ausgabe)
  • Datenspeicheranforderungen

Ihre Anwendung Nutzung der Datenbank ist die kritischsten. Vor allem, was Abfragen verwendet werden am häufigsten (SELECT, INSERT oder UPDATE)?

Sagen Sie, wenn Sie SQLite verwenden, ist es Getriebe für kleinere Anwendung ist aber für „Web“ Anwendung, die Sie vielleicht ein größeres wie MySQL oder SQL Server.

Die Art und Weise Sie Skripte und Ihre Web-Applikations-Plattformen auch schreiben zählt. Wenn Sie auf einer Microsoft-Plattform entwickelst, dann SQL Server ist eine bessere Alternative.

Normalerweise gehe ich mit dem, was allgemein von akzeptiert wird je nachdem, welchen Rahmen, den ich verwende. Also, wenn ich tue .NET => SQL Server, Python (über Django oder Pylone) => MySQL oder SQLite.

ich flache Dateien so gut wie nie, obwohl verwenden.

Es gibt mehr zu einer RDBMS-Lösung wählen, die nur „Back-End-Leistung“. Die Fähigkeit, Engagement Kontrolle zu haben, zum Beispiel, so dass Sie eine fehlgeschlagene Transaktion ist rückgängig zu machen. Grund.

Wenn Sie nicht in der megatransaction Rate Anwendung sind, würden die meisten Datenbank-Engines ausreichend sein - so ist es eine Frage der wird, wie viel wollen Sie für die Software bezahlen, ob es läuft auf der Hardware und Betriebssystemumgebung Sie wollen, und was Know-how haben Sie diese Software in der Verwaltung.

Das Fortschreiten klingt schmerzhaft. Wenn Sie vorhaben, MS-Produkte (vor allem die for-Pay-SQL Server) in dort überall schließen, Sie auch den gesamten Stack verwenden, da Sie nur für die letzte von ihnen zu zahlen haben:

SQL Server Compact -> SQL Server Express -> SQL Server Enterprise (clustered).  

Wenn Sie Ihre Anwendung auf SQL Server Compact Ziel zunächst, alle SQL-Code ist garantiert, die nächste Version ohne Änderungen zu skalieren. Wenn Sie größer werden als SQL Server Enterprise, dann Glückwünsche. Das ist, was sie nennen eine gut Problem zu haben.

Also: gehen Sie zurück und überprüfen Sie die SO-Podcasts. Ich glaube, dass sie diese kurz gesprochen.

Diese Frage hängt von Ihrer Situation wirklich.

Wenn Sie die Kontrolle über den Server müssen Sie bereitstellen und Sie können installieren, was Dienste Sie benötigen, dann die Zeit, eine MySQL- oder MSSQL Express Server und Code gegen eine bestehende Datenbank Framework zu installieren Struktur VERSUS Codierung gegen flache Datei ist nicht die Mühe wert berücksichtigen.

Was ist Firebird? Wo würde das passen in diese Liste?

und läßt nicht die Anforderungen vergessen, dass der „Kunde“ Ihre Lösung auch an Ort und Stelle haben müssen. Wenn Ihr eine kommerzielle Anwendung für eine kleine Unternehmen zu schreiben, dann könnte Oracle nicht eine gute Wahl sein ... aber wenn Ihr eine maßgeschneiderte Lösung für große Unternehmen zu schreiben, die Daten zwischen mehreren Standorten gemeinsam nutzen müssen, und hat eine gute Größe IT-Abteilung dann die Entscheidung von Oracle vs SQL Server würde auf, was macht die Kunden höchstwahrscheinlich bereits im Einsatz hat.

Die Datenmigration nowdays ist nicht so schlimm, da wir die großen Werkzeuge von Embarcadero haben, so würde ich stattdessen die Bedürfnisse der Kunden lassen die Entscheidung treiben.

Wenn Sie die Option SQL Server eine gute Wahl aus dem Wort gehen, vor allem, weil Sie Zugang zu soliden Verfahren verfügen und Funktionen und die Datenbank-Backup-Einrichtungen sind absolut zuverlässig. Einwickeln so viel wie Ihre Logik, wie Sie können innerhalb der Datenbank selbst (und nicht in welcher Sprache auch immer Sie verwenden) hilft Sicherheit und Leistung - in der Tat gibt es ein gutes Argument ist für Logik insert / update für immer unter Verwendung von Verfahren hergestellt werden, da diese Sie machen unverwundbar-Injection-Angriffe.

Wenn ich die Wahl das einzige Mal habe ich MySQL bevorzugt betrachten möchte, ist mit einem großen, ziemlich einfach, Datenbank überwiegend für den Lesezugriff verwendet. Dies ist nicht MySQL zu bemängeln, die deutlich in der letzten Zeit verbessert hat und ich gerne verwenden, wenn ich die Wahl nicht haben, aber für komplexere Systeme mit Update / Insert-Aktivität MSSQL ist in der Regel die bessere Option.

Ich denke, Ihre Liste ist subjektiv, aber ich werde Ihr Spiel spielen.

Flache Dateien

BDB

SQLite

MySQL

PostgreSQL

SQL Server

Orakel

Teradaten

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