A pergunta é extremamente ampla, mas tentarei respondê-la da melhor forma possível.
Eu geralmente não gosto de responder a perguntas como esta porque parece que você fez muito pouca pesquisa antes de vir para o SO. Também parece que você está confuso com as funções do aplicativo e do banco de dados. Eu vou pelo menos começar com algum material/idéias e deixar você decidir por conta própria.
Não há "bala de prata" para um design de back-end, especialmente quando se trata de bancos de dados. Bancos de dados SQL são geralmente muito bons na maioria das funcionalidades de banco de dados, e com razão; é uma tecnologia que está muito madura e resistiu ao teste do tempo por um motivo. A maioria das soluções NOSQL são especializadas para propósitos específicos. Por exemplo:se você estiver registrando muitas informações, talvez queira dar uma olhada no Cassandra. Se você estivesse lidando com muitos dados relacionais, você gostaria de usar algo como Neo4j (ou PostgreSQL/MySQL para RMDBS). Se você estava lidando com muitos dados em tempo real, talvez queira dar uma olhada no Redis.
É estúpido perguntar NOSQL vs SQL por alguns motivos:
NOSQL é um termo ruim em geral. E isso não significa "Sem SQL". Significa "Não apenas SQL". Infelizmente, o termo encapsulou até mesmo o oposto mais polar dos bancos de dados.
Só você conhece a funcionalidade completa do seu aplicativo. Mesmo que eu soubesse o básico do que você queria alcançar, ainda não poderia lhe dar uma resposta definitiva. Nem mais ninguém pode. É altamente subjetivo e, novamente, só VOCÊ sabe EXATAMENTE o que seu aplicativo deve fazer.
O maior motivo:estamos em 2014. Por que um banco de dados? Dez anos atrás "DatabaseX vs DatabaseY" teria sido uma questão prática. Agora, você pode configurar muitas estruturas de aplicativos para usar vários bancos de dados de maneira confiável em questão de minutos. Moral da história:Use cada banco de dados para seu propósito específico. Mais sobre persistência poliglota aqui .
No que diz respeito ao Facebook:uma pesquisa de cinco minutos no Google revela quais tecnologias de back-end eles usaram no passado, e não é tão difícil pesquisar algumas de suas soluções de back-end atuais. Você não é o Facebook. Você não precisa se preparar para um bilhão de usuários agora. Comece com tecnologias simples e comprovadas. Isso permitirá que você dimensione naturalmente seu aplicativo. Quando essas tecnologias começarem a se tornar um gargalo, preocupe-se com a escalabilidade.
Espero que isso tenha ajudado você a iniciar sua jornada de codificação, mas use o Stack Overflow como último recurso se estiver tendo problemas com o código. Não é um go-to imediato.