Frage

Die Zielanwendung ist eine mittelgroße Website, die mehrere hundert bis mehrere tausend Benutzer pro Stunde unterstützt, mit einer Option, die darüber skaliert wird. Das Datenmodell ist ziemlich einfach und das Caching -Potential ist ziemlich hoch (~ 10: 1 -Verhältnis von Lesen zum Bearbeiten von Aktionen).

Was sollte die Überlegungen sein, wenn sie zwischen einem relationalen SQL-basierten Datenspeicher zu einer NOSQL-Option (wie HBase und Cassandra) wählen?

War es hilfreich?

Lösung

Für mich haben Sie kein besonderes Problem zu lösen. Wenn Sie Säure benötigen, verwenden Sie eine Datenbank. Wenn Sie dies nicht tun, spielt es keine Rolle. Erstellen Sie am Ende einfach Ihre App. Und lass mich zitieren NoSQL: Wenn es nur so einfach wäre:

Das Real, was Sie darauf hinweisen sollten, ist, dass Sie es falsch machen, wenn Sie zurückgehalten werden, wenn Sie etwas super großartiges machen, weil Sie keine Datenbank auswählen können. Wenn Sie MySQL kennen, benutzte es einfach. Optimieren Sie, wenn Sie tatsächlich müssen. Verwenden Sie es wie AK/V Store, verwenden Sie es wie ein RDBMs, aber um Gott willen, bauen Sie Ihre Killer -App auf! Nichts davon wird für die meisten Apps von Bedeutung sein. Facebook benutzt immer noch viel MySQL. Wikipedia verwendet viel MySQL. Friendfeed verwendet viel MySQL. NoSQL ist ein großartiges Werkzeug, aber es wird sicherlich nicht Ihr Wettbewerbsvorteil sein, es wird Ihre App nicht heiß machen, und vor allem werden Ihre Benutzer nichts davon scheißen.

Andere Tipps

Digg haben einige interessant Artikel auf diese Frage. Im Wesentlichen verlagern Sie die Last der Verarbeitung auf Schreibvorgänge und nicht auf Lesevorgänge, was bei hoch skalierbaren Anwendungen wünschenswert sein kann. Cassandra ist speziell ebenfalls hoch erhältlich.

Einfacher ist Cassandra eine verteilte Datenbank mit einem großen Datenmodell, das auf einer Dynamo -ähnlichen Infrastruktur ausgeführt wird. Es ist säulenorientiert und ermöglicht die Speicherung relativ strukturierter Daten. Es hat ein vollständig dezentrales Modell; Jeder Knoten ist identisch und es gibt keinen einzigen Ausfallpunkt. Es ist auch extrem fehlertolerant; Die Daten werden an mehrere Knoten und in Rechenzentren repliziert. Cassandra ist auch sehr elastisch; Lesen und schreiben Sie den Durchsatz, der linear erhöht wird, wenn neue Maschinen hinzugefügt werden.

Ich mochte die Faustregel von Ian Eure: "Wenn Sie Memcache über Ihrer Datenbank bereitstellen, erfinden Sie Ihr eigenes Ad-hoc, das schwierig ist, das NoSQL-System zu pflegen."

http://www.rackspacecloud.com/blog/2010/02/25/should-you-Switch-to-nosql-too/

Wenn Sie sagen, dass Data modell ziemlich einfach ist, kann dies für die NoSQL -Option sprechen.

Wenn Sie zahlreiche Attribute haben, um Auswahlen, schwere Transaktionslast oder komplizierte Tabellenstrukturen zu treffen, würde dies für herkömmliche SQL -Tabellen gesprochen.

Ich würde empfehlen, herauszufinden, wie schwierig es wäre, den Datenmodell mit ein oder zwei NoSQL -Datenbanken zu implementieren. Wenn dies ziemlich schwierig ist, können Sie auch ein klassisches Tabellenschema erstellen, mit dem Sie vergleichen können.

Wenn Sie Schwierigkeiten mit NoSQL haben, kann dies für die SQL -Option sprechen. Aber es könnte auch sein, dass die schwere Last mit NoSQL besser behandelt wird - aber es könnte auch sein, dass eine gute SQL -Datenbank ausreichend ausreicht ...

Pufferung kann auch mit einem einfachen Proxy-Server durchgeführt werden ...

Bei Schwierigkeiten könnte auch eine Mischung aus NoSQL und SQL berücksichtigt werden.

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