2011-10-08 144 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。