I'm trying to create the Air app using Flex 4.5. The app interacts with LiveCyle Collaboration Service to support the screen-sharing and webcam chatting in the desktop.
I'm开发者_开发知识库 currently looking for the database (not local like SQLite) to store and load the Facebook Wall-sized data. That is, many users can store and load from the database in a short amount of time (synchronization issue). Also, I'll set up the database in Mac mini Snow Leopard server.
I came up with these three solutions:
1) MySQL using AMFPHP - access to MySQL via the server-side language.
2) MySQL via asSQL library - direct access to MySQL, but bad security.
3) BlazeDS/LiveCycleES and ColdFusion - Java EE backend, but ColdFusion is commercial, and suited for the large project?
Which one is the best solution for the small and mid-sized project? or could you recommend any other solution? Thanks.
Coldfusion is suited for large projects. It shouldn't matter that it's commercial unless you have a budget that it doesn't fit into. But, if so then LiveCycleES is much more expensive so if cost is an issue you'll probably have to be use BlazeDS.
As for the "wall-like" feature for Facebook has several things you have to consider. A wall implies you have some soft of social graph stored. Graph networks are not very easy to do on a large scale with a relational DB. I'd suggest looking at a NoSQL storage like MongoDB, Cassandra. Those options will scale with much less effort than sharding with a database which requires a lot of software engineering just to store everything efficiently.
http://www.rackspace.com/cloud/blog/2010/05/12/cassandra-by-example/
You're going to have some issues to solve with PHPAMF and BlazeDS if you want to share screens between two clients. Asynchronous messaging isn't support by either of those options so it's almost a no-starter. LiveCycle ES has support for this type of thing where Blaze/DS hasn't in the past. You might want to double check the features of Blaze/DS to see if that's changed lately. One option you could look at is Red5 which has support for RTMP/E.
http://www.red5.org/
I would choose Java/BlazeDS/MySQL as having the best combination between price (free) and reliability (way more people are working with BlazeDS than AMFPHP). NoSQL may sound appealling but all the real projects that'a I'm aware are expensive from a development point of view (teams of 4-8 developers working just on the persistence side). And a relational database like MySQL will handle your scenario quite well. I've configured a system handling 400reqs/seconds using it, without sharding.
On the other hand it's important to match your skills with the chosen stack, your time should be spent working on features, not on learning a new language or a complex framework. If you know PHP way better than Java choose AMFPHP instead of BlazeDS.
精彩评论