弹性+空中应用程序到数据库?
我正在尝试使用 Flex 4.5 创建 Air 应用程序。该应用程序与 LiveCyle Collaboration Service 交互,支持桌面上的屏幕共享和网络摄像头聊天。
我目前正在寻找数据库(不像 SQLite 那样是本地数据库)来存储和加载 Facebook Wall 大小的数据。也就是说,许多用户可以在短时间内从数据库中存储和加载(同步问题)。另外,我将在 Mac mini Snow Leopard 服务器中设置数据库。
我想出了这三个解决方案:
1)使用 AMFPHP 的 MySQL - 通过服务器端语言访问 MySQL。
2)MySQL via asSQL库——直接访问MySQL,但安全性较差。
3) BlazeDS/LiveCycleES 和 ColdFusion - Java EE 后端,但 ColdFusion 是商业的,适合大型项目?
哪一种是中小型项目的最佳解决方案?或者你能推荐任何其他解决方案吗?谢谢。
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.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
Coldfusion 适用于大型项目。除非你的预算不适合它,否则它的商业性并不重要。但是,如果是这样,那么 LiveCycleES 就贵得多,所以如果成本是一个问题,您可能必须使用 BlazeDS。
至于Facebook的“类似墙”功能,有几件事你必须考虑。墙意味着您存储了一些社交图谱。使用关系数据库大规模地实现图网络并不容易。我建议考虑像 MongoDB、Cassandra 这样的 NoSQL 存储。与数据库分片相比,这些选项的扩展工作要少得多,数据库分片需要大量的软件工程才能有效地存储所有内容。
http://www.rackspace.com/cloud/ blog/2010/05/12/cassandra-by-example/
如果您想在两个客户端之间共享屏幕,您将需要使用 PHPAMF 和 BlazeDS 解决一些问题。这两个选项都不支持异步消息传递,因此它几乎是不可能的。 LiveCycle ES 支持此类事物,而 Blaze/DS 过去不支持。您可能需要仔细检查 Blaze/DS 的功能,看看最近是否发生了变化。您可以考虑的一个选项是 Red5,它支持 RTMP/E。
http://www.red5.org/
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/
我会选择 Java/BlazeDS/MySQL,因为它具有价格(免费)和可靠性之间的最佳组合(使用 BlazeDS 的人比使用 AMFPHP 的人多)。 NoSQL 可能听起来很吸引人,但据我所知,从开发的角度来看,所有真正的项目都很昂贵(4-8 名开发人员组成的团队只在持久性方面工作)。像 MySQL 这样的关系数据库将很好地处理您的场景。我使用它配置了一个处理 400 个请求/秒的系统,无需分片。
另一方面,将您的技能与所选堆栈相匹配很重要,您的时间应该花在功能上,而不是学习新语言或复杂的框架上。如果您比 Java 更了解 PHP,请选择 AMFPHP 而不是 BlazeDS。
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.