Great answers here, just wanted to add a few points. One, consider caching, which can significantly affect performance. Two, test for your particular application. Maybe test database, file system, hybrid. Test test test. Only way to really know what will work best because there are so many variables. Three, Engineering 101: keep it as simple as possible. As a system's complexity grows, the probability of problems arising increases exponentially.