SharePoint has come a long way in a short time to allow external applications to interact with it in the way you describe. I wouldn't try it with anything but SharePoint 2013 mostly because the licensing allows for this without additional cost per user and partly because what I mention next isn't available in 2010 or earlier.
You can use a MVC/knockout frontend but, the MVC app for SharePoint template isn't exactly what you want unless you will provision every user as a SharePoint user account. That template is still an SP app which means it's run by an SP user. I would look at SharePoint as just an OData service that your app writes back to. You can either use the client object model (SCOM) and write back directly (each user exists as a SharePoint user), or you can proxy the data access from your MVC controller and use a 'service' SP user to connect to SharePoint using SCOM. SCOM is just REST and OData so you can use any web-capable language you choose. I know there are examples for C# and JavaScript (node.js). There may be others.
If you are expecting a lot of volume, I would suggest you host this application on SharePoint Online (Office 365), if possible, and configure it to federate with the rest of your environment. That way you only need to add more space as your data grows (rather than more and more servers as load grows).
Here's a nice overview of the APIs available to you:
http://msdn.microsoft.com/en-us/library/office/jj164060.aspx
SharePoint 2013 Developer Center:
http://msdn.microsoft.com/en-us/library/office/jj162979.aspx
5 minute video on SharePoint 2013 SCOM:
http://www.microsoft.com/office/preview?videoid=1e859ac8-58ca-46d0-a8e0-00f4189761a8&from=sharepermalink-link
Timely blog on anonymous access to SCOM:
http://blogs.msdn.com/b/kaevans/archive/2013/10/24/what-every-developer-needs-to-know-about-sharepoint-apps-csom-and-anonymous-publishing-sites.aspx