2010-07-01 50 views
2

我需要建立簡單的服務器哪種技術來選擇了大量的IO操作服務器

  1. 讀取(可能很大)的XML文件
  2. 處理它們在內存中(它們轉換到不同的XML結構)
  3. 將它們寫回磁盤。

計劃的一些重要方面:

  • 速度
  • 分發服務器的能力。這意味着放置(是什麼意思)幾個這樣的服務器,每個服務器將處理不同量的XML文件。
  • 跨平臺
  • 建立在一個非常緊張的死線

基本上我的問題是:
在什麼編程語言,我應該怎麼辦呢?

Java?

  • 發展速度
  • 跨平臺
  • IO操作均高有正確的配置(這裏添加網頁鏈接)。

C++?

  • 執行速度
  • 跨平臺(具有正確的庫)。
  • 然而發展速度較慢。
+4

「我在網上看到IO操作很高,配置正確」 - 說的很高......如果我是這樣的話,我會更瞭解這個問題嗎? – 2010-07-01 21:38:27

+4

你的標題是無法理解的。我可以編輯它,但我不知道是什麼。你不提供足夠的信息;你說C++的開發時間比Java的開發時間長,但是從你所說的話來說,這是不可能的,不可能的,或者說它是決定性的,不相關的,或者介於兩者之間的。你沒有解釋你熟悉的東西。您沒有解釋服務器數量與開發時間之間的成本比率。 – 2010-07-01 21:40:51

+3

「教邏輯」是否應該讀「技術」? – 2010-07-01 21:43:15

回答

7

您可能希望查看ETL或XSLT引擎,而不是使用低級語言編寫此代碼。它們針對性能進行了優化,超出了您通常能夠自行生成的性能,並且已經足夠普及以適應用戶更改(不確定您的XML轉換是一次性事情還是可能隨時間而改變)。

+2

+1 - 使用現有的,經過仔細優化的代碼(特別是對於像這樣的任務)很可能是大多數人將自己寫得很透徹的東西。 – 2010-07-01 21:46:37

+1

可用的XSLT引擎的示例可能有助於 – 2010-07-01 23:01:08

+0

我沒有足夠的XSLT引擎實踐經驗來提出可靠的建議,但是受歡迎的請求:Altova和Saxonica是兩個免費選項。看起來英特爾和微軟也有解決方案。 – Greg 2010-07-02 01:50:20

1

我對你的要求還是有點模糊但是

你在問錯誤的問題。如果語言真的不是問題,你應該尋找可以處理大量磁盤io的第三方庫,這是一個執行XSLT的庫。查看哪些庫存在兩種語言,然後選擇。此外,如果性能是關鍵要求,則需要確定進程是IO綁定還是CPU綁定。這將決定圖書館需要使用以及一般架構。 xml轉換cpu密集?或者可以輕鬆完成一個或兩個通行解析?

+0

+1,也用於使某些事情可以理解OP :-) – 2010-07-01 23:31:04

0

嚴格的截止日期?並行操作需要一個給定的?那麼速度不是問題。只需要投入更多的服務器,直到吞吐量與需求相匹配。

如果您在Java中速度更快,那麼請繼續。您可能需要兩倍的服務器數量,但這些可以在幾天而不是幾周內完成。

在緊迫的期限內,可移植性永遠不是必需條件。只要詢問誰設置了這些最後期限,他是否做出了不可逆轉的選擇。如果是這樣,堅持那些;如果沒有,挑選一些並堅持。你沒有時間在不同的平臺上進行測試,因此無論如何,任何可移植性都是理論上的。