2012-05-09 7 views
23

Welche Punkte sollten bei der Auswahl der Datenebene für eine Webanwendung berücksichtigt werden?Argumente für die Verwendung der Wahl: RavenDB vs SQL Server - Leistung, Zuverlässigkeit und Einfachheit

Gibt es eine bevorzugte Wahl für die Verwendung von Dokumentendatenbanken gegenüber relationalen, während die Entwicklung von kleinen Projekten über große und schwer beladene oder umgekehrt?

Welche Art von Datenbankarchitektur wird für diese Ansätze bevorzugt - wenn ich eine einfache Datenbank ohne zu viele Beziehungen habe, ist es besser, einen Ansatz gegenüber einem anderen zu verwenden?

Antwort

54

Da diese Frage persönlichen Kommentar lädt, hier ist meine Meinung :

SQL Server ist keine Datenbank nichts außer Ad-hoc-Reporting zum Speichern von Daten. Es ist großartig, Ad-hoc-Berichte, Data-Mining, Echtzeit-Beziehungssuche - und es ist optimal für diese Anwendungen, da Codd die Regeln entwickelt hat, für die es entwickelt wurde (siehe die Data Driven Conspiracy für weitere Details)

Natürlich können Sie andere Datentypen in einer relationalen Datenbank speichern. Zum Beispiel können Sie Ihren Domänenstatus zu einer SQL Server-Datenbank serialisieren und diesen Status zu einem späteren Zeitpunkt abrufen, aber dies ist eine schreckliche Verwendung eines relationalen Systems. So schlimm, dass ganze Schichten von Code (so genannte "Data-Layers" oder DALs), viele Tausende von Zeilen, erforderlich sind, um diese Art von Aufgabe remote machbar, testbar und wartbar zu machen.

Der große, jahrzehntelange Vertrauenstrick war für die SQL-basierten Händler, uns davon zu überzeugen, dass es keine bessere Möglichkeit gibt, hierarchische/Dokumentendaten als Echtzeitkonvertierung zwischen radikal unterschiedlichen Datenstrukturen zu speichern. DALs und das neueste ORM wurden alle verpönt, aber am Ende sind diese nichts anderes als Codecs, die Ihre Bits zwischen verschiedenen Datenorganisationen hin und her donnern - verschiedene Muster auf der Festplatte.

Wahnsinn!

Also vergessen Sie alle itsy-bitsy, Engel-auf-einem-Stecknadel-Argumente über Atomarität, Konsistenz, Isolation, Haltbarkeit. Der Elefant im Raum ist, dass, wenn Sie SQL Server verwenden und Sie kein Pharmaunternehmen sind, das Data-Cubes dynamisch nach versteckten Inferenzen in großen Populationen abschneidet (oder?), Dann verwenden Sie wahrscheinlich die falsche Technologie, um Ihre Daten zu speichern .

Wenn Sie andererseits ein bescheidener Anwendungsentwickler sind - ein Programmierer, der, wie die meisten von uns, den Domänenzustand einfach so serialisieren möchte, dass er nicht eine ganze Reihe neuer Ideologien und Syntax lernt Dann, um Himmels willen, benutze keine relationale Datenbank. Tu es einfach nicht.

RavenDB? Ich benutze das schon seit einer Weile (durch DB4O und CouchBase) und ich kann sagen, dass es tut, was es auf der Dose sagt. Es speichert meine Sachen und gibt es mir zurück, wenn ich frage. Ich musste keine Datenschichten schreiben oder ORMs von Dritten verwenden. Ich musste keine strukturierte Abfragesprache lernen und musste die Extras nicht aktivieren, um die Volltextsuche funktionieren zu lassen (RavenDB basiert auf Lucene, also funktioniert alles "einfach"). So weit, ist es gut.

Aber wirklich, ist es wichtig, was Sie verwenden, solange es ist, für die vorliegende Aufgabe, einfach zu programmieren, schnell und effizient? Für die normale Anwendungsentwicklung ist RavenDB all das, SQL Server dagegen nicht. Das soll nicht heißen, dass relationale DBs schlecht sind - lassen Sie uns das Opfer nicht beschuldigen - ich erkenne voll und ganz an, dass Sie für bestimmte spezialisierte Entwicklungen in der Tat etwas mehr ... exotisches benötigen, wie einen relationalen Datenspeicher.

Aber nur für den Fall, dass Sie immer noch an den Trümmern hängen, müssen Sie sich Folgendes fragen: Wenn wir alle einfache, schnelle, elegante Datenspeicher verwendet hätten, die unseren Bedürfnissen als Anwendungsentwickler nahekamen, und dann schrieb ich eine Meinung Ich werde Sie dazu bringen, SQL Server zu adoptieren, dann würden Sie wahrscheinlich über mich lachen oder mich bemitleiden. Eine Sache ist sicher - Sie würden nicht zu SQL Server wechseln. So demonstrieren wir, dass Trägheit allein die führende Kraft ist, die SQL Server in den Mainstream integriert. Trägheit und Ignoranz. Trägheit, Ignoranz und Unternehmensgier ....

+22

Boo, Frage geschlossen. Nach all meinem Tippen auch. – biofractal

+3

Ich wollte nur sagen - Danke für das Schreiben dieser Antwort. Ich fand es angenehm und informativ. – Andrew

+0

@biofractal: Haben Sie die kommerzielle Version von RavenDB oder die kostenlose Version verwendet? Kann ich RavenDB kostenlos für meine soziale Website nutzen? Gibt es Einschränkungen in der kostenlosen Version? – user636525

Verwandte Themen