La question est extrêmement large, mais je vais essayer d'y répondre au mieux de mes capacités.
En général, je n'aime pas répondre à des questions comme celle-ci, car il semble que vous ayez fait très peu de recherches avant de venir à SO. Il semble également que vous soyez confus avec les rôles d'application et de base de données. Je vais au moins commencer avec du matériel/des idées et vous laisser décider par vous-même.
Il n'y a pas de "solution miracle" pour une conception de backend, en particulier lorsqu'il s'agit de bases de données. Les bases de données SQL sont généralement très bonnes pour la plupart des fonctionnalités de base de données, et à juste titre ; c'est une technologie qui est très mature et qui a résisté à l'épreuve du temps pour une raison. La plupart des solutions NOSQL sont spécialisées à des fins particulières. Par exemple :si vous enregistrez beaucoup d'informations, vous voudrez peut-être regarder Cassandra. Si vous traitiez beaucoup de données relationnelles, vous voudriez utiliser quelque chose comme Neo4j (ou PostgreSQL/MySQL pour RMDBS). Si vous avez affaire à beaucoup de données en temps réel, vous voudrez peut-être vous tourner vers Redis.
C'est stupide de demander NOSQL vs SQL pour plusieurs raisons :
NOSQL est un mauvais terme en général. Et cela ne signifie pas "Pas de SQL". Cela signifie "Pas seulement SQL". Malheureusement, le terme a encapsulé même l'opposé le plus polaire des bases de données.
Vous seul connaissez toutes les fonctionnalités de votre application. Même si je connaissais les bases de ce que vous vouliez réaliser, je ne pouvais toujours pas vous donner de réponse définitive. Ni personne d'autre. C'est très subjectif, et encore une fois, VOUS seul savez EXACTEMENT ce que votre application doit faire.
La principale raison :nous sommes en 2014. Pourquoi une seule base de données ? Il y a dix ans, "DatabaseX vs DatabaseY" aurait été une question pratique. Désormais, vous pouvez configurer de nombreux frameworks d'application pour utiliser de manière fiable plusieurs bases de données en quelques minutes. Morale de l'histoire :utilisez chaque base de données pour son objectif spécifique. En savoir plus sur la persistance polyglotte ici .
En ce qui concerne Facebook :une recherche Google de cinq minutes révèle les technologies backend qu'ils ont utilisées dans le passé, et il n'est pas si difficile de rechercher certaines de leurs solutions backend actuelles. Vous n'êtes pas Facebook. Vous n'avez pas besoin de vous préparer pour un milliard d'utilisateurs dès maintenant. Commencez par des technologies simples et éprouvées. Cela vous permettra de dimensionner naturellement votre application. Lorsque ces technologies commencent à devenir un goulot d'étranglement, s'inquiéter de l'évolutivité.
J'espère que cela vous a aidé à démarrer votre parcours de codage, mais veuillez utiliser Stack Overflow en dernier recours si vous rencontrez des problèmes avec le code. Pas un rendez-vous immédiat.