質問は非常に幅広いですが、私はできる限り答えようとします。
SOに来る前はほとんど調査をしていなかったように見えるので、私は一般的にこのような質問に答えるのは好きではありません。また、アプリケーションとデータベースの役割と混同しているようです。少なくともいくつかの資料/アイデアから始めて、自分で決めることができます。
特にデータベースに関しては、バックエンド設計に「特効薬」はありません。 SQLデータベースは、一般的にほとんどのデータベース機能で非常に優れており、当然のことながらそうです。それは非常に成熟した技術であり、ある理由で時の試練に耐えてきました。ほとんどのNOSQLソリューションは、特定の目的に特化しています。たとえば、多くの情報をログに記録している場合は、Cassandraを確認することをお勧めします。大量のリレーショナルデータを処理している場合は、Neo4j(またはRMDBSの場合はPostgreSQL / MySQL)のようなものを使用することをお勧めします。大量のリアルタイムデータを処理している場合は、Redisを確認することをお勧めします。
いくつかの理由から、NOSQLとSQLを比較するのは馬鹿げています:
NOSQLは一般的に悪い用語です。そして、それは「SQLなし」を意味するものではありません。 「SQLだけではない」という意味です。残念ながら、この用語は、データベースの最も正反対のものでさえもカプセル化しています。
アプリケーションの全機能を知っているのはあなただけです。あなたが達成したいことの基本を知っていたとしても、私はあなたに決定的な答えを与えることができませんでした。他の誰もできません。これは非常に主観的であり、繰り返しになりますが、アプリケーションが何をすべきかを正確に知っているのはあなただけです。
最大の理由:2014年です。なぜ1つのデータベースなのですか? 10年前は、「DatabaseXとDatabaseY」は実際的な質問でした。これで、数分で複数のデータベースを確実に使用するように多くのアプリケーションフレームワークを構成できます。話の教訓:各データベースをその特殊な目的に使用します。ポリグロットの永続性の詳細
Facebookに関する限り、5分間のGoogle検索で、過去に使用したバックエンドテクノロジーが明らかになり、現在のバックエンドソリューションのいくつかを調査することはそれほど難しくありません。あなたはFacebookではありません。現在、10億人のユーザーに備える必要はありません。シンプルで実績のあるテクノロジーから始めましょう。これにより、アプリケーションを自然にスケーリングできます。これらのテクノロジーがボトルネックになり始めたら、スケーラビリティについて心配します。
これがコーディングの旅を始めるのに役立つことを願っていますが、コードに問題がある場合は、最後の手段としてStackOverflowを使用してください。すぐに行くわけではありません。