I would like to get some opinion about using WordPress as a data intense Web Application, let say like rememberthemilk where a user can have multiple post (task) just in a single day. Or maybe like twitter where one can even have multiple post (twitter) in an hour. Another point is that those web application is open for public, not on a limited group of users.
If downloaded and tried P2 theme, as the closest benchmark, but I am not sure how it performs with a large number of users.
And the question is;
- is it advisable to create those kind of app in WordPress?
- What are the drawbacks if it is build using WordPress?
Update :
Currently I’m experimenting a custom WordPress theme that can be used a personal finance log. This was started only as wp-ajax experiment.
The theme has a front-end upload form, to log each transaction, and put them in the ‘budget’ (transaction category) and ‘account’ taxonomy to be queried. Every users have their own main budget and account custom-post-type with child budgets and accounts.
But along this experiment I started to wonder whether a single WordPress installation is suitable as a private-blog-that-anyone-can-register-to like this. Is it possible to handle large number of users ? And how far can I push a WordPress as an app framework?
Its more than possible to create a data-intensive, even real-time web application, using the WordPress platform as a base framework.
The WordPress database architecture is as such that is suits websites that are either blogs or content management systems of some kind.
What is defined as being a CMS-like-site can be wide and varied in opinion, but neither of the aforementioned are really related to data intense web applications such as you mention, Remember The Milk or Twiiter.
Because of this, its not going to be without a deal of effort on your part to understand your options and equally know how to execute them in the form of a strategy that compliments your application now and in the future by being able to scale upward with any growth you experience.
With that in mind, the existing database table structure might not be suitable for what you want to achieve outright, however one of the great abilities we have when working with PHP and in this case WordPress, is that we can define database-tables that have an alternative structure/schema that more closely fits our needs.
In fact, not only can you define your own tables within the default WordPress database of your installation, but you can also go well beyond that and..
I must mention though that any data contained with external databases especially of different varieties (NoSQL, Key/Val) won’t be accessible through your usual WordPress API functions directly but I’d assume if you’re going to such lengths you’d know how to query your data sets in-conjunction with using template/theme functions for presentation.
Another important aspect to consider is,
Your hosting platform will play an equally important role in performance so making the right investment to back your project is essential.
The biggest drawback to all of this is rather simple and that’s if any of the above sounds confusing and or complex then building a web application of high quality might not be the best choice, with WordPress.
Instead, you might be better off using a PHP framework and building your application from scratch, where you can have fine grained control over the intricacies of each layer and component. You will be faced with similar challenges however, in that database choice, architecture/structure and so on will play an important role in the performance of your application.
It’s not really a matter of performance, it’s a matter of functionality performance. You need to better define your exact needs. Twitter doesn’t take multiple post per hour, it handles over 3k tweets per second on average with peaks going to 30k per second, a default WordPress isn’t going to do that.
At the end of the day if you end up having to extend your code away from WordPress, as userabuser suggests, you have to question why use WordPress in the first place, there are many frameworks that have database abstractions, http API’s, routing, etc.
After your edit
Since you do seem to be using built in WordPress functionality I don’t see any particular problem. With that being said once you start to scale into the tens of thousands of CPT’s categories and taxonomies you might start to see some slow areas crop up that need to be optimized, but this depends on your query and just what it is doing.
In your case it would be really beneficial to create a dev server script that mimics real usage, creates 10k+ CPT/ with data and the appropriate tax/cat. Then throw some tests at it via curl or some bench-marking tools and see what happens with various amount of ram and cache settings. Unless your doing something weird/unique I don’t see any issues, especially if your on a solid server/cluster.
@ifdion, Matt announced that WordPress would soon be offering features/functions that would qualify it as an app engine. I think it’s scalable with the right hosting provider; You can check out wpengine, page.ly or zippykid (all wordpress specific hosts)
Anyway, I am building something similar on WordPress. Only problem is, I am more of a design than a through and through developer. Can you share how you managed to create the budget manager page and got it saved for each user?
I would be glad if you could teach me how to implement something similar on WordPress. I want a feature where people can save and track their expenses with their budgets.