2012-02-10 82 views
0

我有以下問題。使用Java應用程序,我需要每1秒將外部XML文件的數據插入到數據庫表中。在PostgreSql數據庫中插入並檢查數據

另外,我必須在同一個表上執行選擇/更新查詢。

表格每隔幾天清洗一次。我的問題是:如何最優解決它?一切都必須工作live。我們不能允許存在時間偏移的情況(記錄不是每1秒檢查一次)。

任何想法?

+0

我想你有你通過一定的渠道獲得了一定量的數據,定期,(讓我們在每一秒說, ),你想立即將這些數據插入到PostgreSQL數據庫中。所以讓我們這樣說吧:你必須在第二秒插入一批記錄。瞭解批次中的數據量很重要。您需要在批次中插入多少條記錄?瞭解通過其接收數據的渠道也是一件好事。 – bpgergo 2012-02-10 08:41:23

+0

約10-20條記錄。文件通過外部服務器生成。我通過URL接收數據:http://example.com/get_xml.php?param=2 – Astaz3l 2012-02-10 08:52:03

回答

1

根據您計劃應用程序的複雜程度,您可以考慮使用JPA/Hibernate來訪問數據庫。訪問數據庫變得更加簡單(因爲你操縱POJO來訪問你的數據),但缺點是它在性能方面不是最優的(操縱原始的sql和原始數據總是比操作對象更快)。

爲了您的工作檢查,我會設置石英,這將爲您提供定期安排工作的可能性。

你的問題有點含糊不清,以提供更多的提示。它是一個Web應用程序嗎?一個Java EE嗎?一個沉重的客戶?你需要多高的性能?你想創建一個沒有將來寫在比薩餐巾上的小應用程序嗎?或者你打算有一個將來會擴展的應用程序。

+0

該應用程序安靜複雜。我從XML獲取數據(每秒10條新記錄) 此文件的數據每隔1秒插入數據庫的表中。這已經完成了。 更大的問題是現場檢查這些數據。我們有一個PHP應用程序,其中用戶向另一個表中插入數據(例如'userdata' ='1234') 我需要在後臺運行應用程序(JAVA),它會檢查表1中是否存在用戶數據。 最重要的部分是在檢查時不跳過任何數據。性能很重要。未來可能需要擴張。 – Astaz3l 2012-02-10 08:19:22

+0

然後我會使用原始SQL(PreparedStatement等)來訪問您的數據。設置Quartz看起來也是一個不錯的選擇,因爲它會爲您提供一整套方便的功能來執行作業調度。跳過數據是什麼意思? – 2012-02-10 08:43:54

+0

我的意思是,在第二個添加記錄,下一個必須在最晚檢查。我們不能允許稍後檢查數據的情況(例如,將數據添加到數據庫後3秒) – Astaz3l 2012-02-10 08:55:41

0

每秒10-20條記錄數量不是很大。無論如何,如果您有任何性能問題,確保您使用JDBC batch inserts

PreparedStatement stmt = con.prepareStatement(
    "INSERT INTO table_name (field_name1, field_name2) VALUES (?, ?)"); 

stmt.setInt(1, 2000); 
stmt.setString(2, "String value"); 
stmt.addBatch(); 

stmt.setInt(1, 3000); 
stmt.setString(2, "Other String"); 
stmt.addBatch(); 

// submit the batch for execution 
int[] insertCounts = stmt.executeBatch(); 
+0

添加數據不是問題。插入後更大的問題是檢查數據。插入後我只有一秒鐘檢查表中是否存在記錄。我不知道在檢查數據時是否會有問題。在基地有一天之後會有大約200萬條記錄。我還需要進行幾次詢問,只有一秒鐘就可以做到 – Astaz3l 2012-02-10 09:24:40

相關問題