Die Frage ist sehr weit gefasst, aber ich werde versuchen, sie so gut wie möglich zu beantworten.
Im Allgemeinen beantworte ich solche Fragen nicht gerne, weil es so aussieht, als hätten Sie sehr wenig recherchiert, bevor Sie zu SO gekommen sind. Es scheint auch, als wären Sie mit Anwendungs- und Datenbankrollen verwechselt. Ich beginne Sie zumindest mit etwas Material/Ideen und lasse Sie selbst entscheiden.
Es gibt keine Wunderwaffe für ein Backend-Design, insbesondere wenn es um Datenbanken geht. SQL-Datenbanken sind im Allgemeinen in den meisten Datenbankfunktionen sehr gut, und das zu Recht; Es ist eine Technologie, die sehr ausgereift ist und sich aus gutem Grund bewährt hat. Die meisten NOSQL-Lösungen sind auf bestimmte Zwecke spezialisiert. Zum Beispiel:Wenn Sie viele Informationen protokolliert haben, sollten Sie sich Cassandra ansehen. Wenn Sie mit vielen relationalen Daten zu tun haben, sollten Sie etwas wie Neo4j (oder PostgreSQL/MySQL für RMDBS) verwenden. Wenn Sie mit vielen Echtzeitdaten zu tun haben, sollten Sie sich Redis ansehen.
Es ist aus mehreren Gründen dumm, NOSQL vs. SQL zu fragen:
NOSQL ist generell ein Schimpfwort. Und es bedeutet nicht "No SQL". Es bedeutet „Nicht nur SQL“. Leider hat der Begriff sogar das genaueste Gegenteil von Datenbanken zusammengefasst.
Nur Sie kennen die volle Funktionalität Ihrer Anwendung. Selbst wenn ich die Grundlagen dessen wüsste, was Sie erreichen wollten, könnte ich Ihnen immer noch keine endgültige Antwort geben. Kann auch niemand sonst. Es ist höchst subjektiv, und wiederum wissen nur SIE GENAU, was Ihre Anwendung tun soll.
Der wichtigste Grund:Es ist 2014. Warum eine Datenbank? Vor zehn Jahren wäre „DatabaseX vs DatabaseY“ eine praktische Frage gewesen. Jetzt können Sie viele Anwendungsframeworks konfigurieren, um mehrere Datenbanken innerhalb weniger Minuten zuverlässig zu verwenden. Moral der Geschichte:Verwenden Sie jede Datenbank für ihren speziellen Zweck. Mehr zur polyglotten Persistenz hier .
Was Facebook betrifft:Eine fünfminütige Google-Suche zeigt, welche Backend-Technologien sie in der Vergangenheit verwendet haben, und es ist nicht so schwierig, einige ihrer aktuellen Backend-Lösungen zu recherchieren. Du bist nicht Facebook. Sie müssen sich jetzt nicht auf eine Milliarde Benutzer vorbereiten. Beginnen Sie mit einfachen, bewährten Technologien. Auf diese Weise können Sie Ihre Anwendung auf natürliche Weise skalieren. Wenn diese Technologien zu Engpässen werden, machen Sie sich Sorgen um die Skalierbarkeit.
Ich hoffe, dies hat Ihnen beim Start Ihrer Codierungsreise geholfen, aber verwenden Sie bitte Stack Overflow als letzten Ausweg, wenn Sie Probleme mit dem Code haben. Keine unmittelbare Anlaufstelle.