I am building a project requiring high performance and scalability, entailing:
- Role-based authentication with API-key licensing to access data of specific users
- API exposed with REST (XML, JSON), XMLRPC, JSONRPC and SOAP
- “Easily” configurable getters and setters to create APIs accessing the same data but with input/output in different schemas
A conservative estimate of the number of tables—often whose queries require joins—is: 20.
Which database type—e.g.: NoSQL or DBMS—key-value data store or object-relational database—e.g.: Redis or PostgreSQL—and web-framework—e.g. Django, Web2Py or Flask—would you recommend?
The web frameworks you mention they all scale the same and with 20 tables they probably have similar performance. The bottle neck will always be the database. You mention joins. That means you need a relational database. I would not over-engineer it. Make it work. Polish it. Than make it scale but adding extensive caching.