2011-10-08 146 views
0

我正在尝试使用Flex 4.5创建Air应用程序。该应用程序与LiveCyle Collaboration Service交互以支持桌面上的屏幕共享和网络摄像头聊天。Flex + Air App到数据库?

我目前正在寻找数据库(不像SQLite本地)来存储和加载Facebook Wall数据。也就是说,许多用户可以在很短的时间内从数据库存储和加载(同步问题)。另外,我将在Mac mini Snow Leopard服务器中设置数据库。

我想出了这三种解决方案:使用AMFPHP

1)的MySQL - 通过服务器端语言访问MySQL。

2)MySQL通过asSQL库 - 直接访问MySQL,但安全性较差。 3)BlazeDS/LiveCycleES和ColdFusion - Java EE后端,但ColdFusion是商业的,并且适用于大型项目?

哪一个是中小型项目的最佳解决方案?或者你能推荐任何其他解决方案吗?谢谢。

回答

1

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/

+0

非常感谢您的回答!实际上,与LCCS(屏幕共享)和访问数据库的交互将是单独的对方。对困惑感到抱歉。 AIR应用程序将只是记录文件共享(通过Dropbox的)登录到数据库,如创建日期,最后编辑用户,等等。此外,其他用户可以留下评论,类似于Facebook Wall(每篇文章将对应于我的AiR应用程序中的文件)。 你还建议不要使用AMFPHP + MySQL吗?谢谢! – pnmn

+0

我不会将它们分开,因为我不会为这些访问构建两个单独的服务器。我会有AIR应用程序来谈论LCCS/BlazeDS的一切。然后根据在控制器上调用的方法,它可以选择通过RTMP执行屏幕共享,或者与MYSQL,Cassandra或任何您选择的持久性存储进行通信。但是有一台服务器可以使构建,测试,部署和更重要的扩展(水平)变得更简单。你的服务器可以处理它。我会跳过AMFPHP,因为所有给你的都是序列化。剩下的就可以让你构建,而RTMP并不容易。 – chubbsondubs

+0

进入1M领域时,社交图表不能很好地保存到MySQL/Relational中。这就是为什么我认为你会发现一个NoSQL选项更简单。你可以将MySQL/Relational更高一些,但你必须将它们分割。而且,这还需要投入大量的工程成本。 Cassandra可以水平扩展,而不需要特别构建数据。但是,如果使用一台可以完成所有功能的服务器,则使用LCDS/BlazeDS/Red5服务器进行水平伸缩很容易。 – chubbsondubs

1

我会选择Java/BlazeDS的/ MySQL的具有价格(免费)和可靠性之间的最佳结合点(这样更多的人与BlazeDS的工作比AMFPHP)。 NoSQL可能听起来很吸引人,但是从开发角度来看,我所知道的所有真正的项目都是昂贵的(4-8个开发团队只是在持久性方面工作)。像MySQL这样的关系数据库能够很好地处理你的情况。我已经配置了一个使用它处理400reqs /秒的系统,而不需要分片。

在另一方面重要的是要与所选择的堆叠匹配你的技能,你的时间应该花在工作的特点,而不是在学习一种新语言或复杂的框架。如果你知道PHP比Java更好,那么选择AMFPHP而不是BlazeDS。