2010-11-18 9 views
12

Ich untersuche ein neues Projekt, das eine Social Networking Style Site sein wird. Ich lese gerade auf RavenDb und ich mag das Aussehen von vielen seiner Funktionen. Ich habe nicht viel über Nosql gelesen, aber ich frage mich, ob es eine Nische gibt, mit der es am besten passt, und Old School Sql ist immer noch die beste Wahl für andere Sachen.NoSql/Raven DB Implementierung Best Practices

Ich denke, dass die Berechtigungen Plug-in wäre ideal für eine Social-Net-Stil Website - aber wird es wirklich in einer Umgebung, wo die Datenbank wird gehämmert werden - oder ist es für ein Reporting-Stil-System wo optimiert Es ist möglich, weiterhin neue Datenstrukturen in der Datenbank zu erzeugen und über diese Strukturen zu berichten.

Ich bin gespannt, das richtige Werkzeug für den Job zu verwenden - ich werde MVC3, Windsor + entweder Nhibernate + Sql Server oder RavenDb verwenden.

Sollte ich mit der alten Schule sql bleiben oder mit dem neuen Kind auf dem Block gehen: ravendb?

Antwort

20

Diese Frage kann sehr nah an subjektiv sein (obwohl es wirklich nicht ist), Sie sprechen über NoSQL, als ob es nur eine Sache ist, und das ist nicht der Fall.

Sie haben

  • Graph-Datenbanken (Neo4j etc),
  • Map/Reduce-Stil Dokumentendatenbanken (Couch, Raven),
  • Dokumentendatenbanken, die wie gewöhnliche Datenbanken (Mongo) zu fühlen, versuchen,
  • Schlüssel/Wert speichert (Kassandra etc.)
  • Moar geht hier.

Jeder von ihnen versucht, ein anderes Problem durch verschiedene Mittel zu lösen, und ob Sie einen von ihnen über einen traditionellen relationalen Speicher verwenden würde, ist

  • Eine Frage der Eignung
  • Sache persönliche Präferenz

Am Ende des Tages für die primären Datenspeicher für ein einzelnes System, eine Dokumentendatenbank oder relationale Speicher sind prob Was Sie wollen, obwohl Sie für verschiedene Teile Ihres Systems am Ende eine Graphdatenbank (zum Berechnen von Nachbarn usw.) oder einen Schlüssel-/Wertspeicher (wie Facebook für Inbox-Nachrichten) verwenden. Der Hauptvorteil der Auswahl eines Dokumentspeichers als Primärspeicher gegenüber einem relationalen Speicher besteht darin, dass Sie sich keine Gedanken darüber machen müssen, ob Sie versuchen, Ihre Objekte in eine Sammlung von Tabellen zu mappen, und dass der Konfigurationsaufwand geringer ist daran beteiligt.

Der andere Nachteil/Oberseite wäre, dass Sie etwas Neues lernen und dabei Fehler machen müssen.

Also meine Antwort, wenn ich direkt sein werde?

  • RavenDB wäre geeignet
  • SQL
  • geeignet wäre

Welche Sie verwenden bevorzugen?In diesen Tagen würde ich wahrscheinlich nur für Raven gehen, da ich weiß, dass ich Daten für Berichtszwecke in einen relationalen Speicher legen kann und wahrscheinlich auch für andere Teile meines Systems und ohne Freitextsuche und Fastschreib-/Schnelllesevorgänge durch die Anstrengung, separate Lese-/Schreibspeicher zu definieren, ist ein Gesamterfolg.

Aber das bin ich, und ich bin voreingenommen.

+1

das ist eine ausgezeichnete Antwort - @mikehadlow verwendet es in Tardis Bank, die eine gute Quelle des Lernens ist, also werde ich direkt tauchen. Ihre Kommentare + ein paar Kollegen sind genug, um mich davon zu überzeugen, dass es Zeit zu investieren Hier. Das Berechtigungskram sieht interessant aus - leidet es aber unter den gleichen Skalierbarkeitsproblemen, die rhino.security verursacht? – iwayneo

+0

Ich habe nicht die Berechtigungen Zeug verwendet, ich neige dazu, die Dinge ein bisschen grobkörniger als das, wenn ich es tue. Ganz abhängig davon, wie Sie es verwenden, würde ich mir vorstellen –