2010-12-09 98 views
2

我有處理這類數據的Java應用程序:的Java DB選擇更好的性能比較

class MyData 
{ 
    Date date; 
    double one; 
    double two; 
    String comment; 
} 

的所有數據都存儲在CSV格式的硬盤,這樣的數據序列的最大尺寸爲〜150 MB,並就目前而言,我只是將它完全加載到內存中並使用它。

現在我的任務是增加數百GB的最大數據序列。我猜我需要使用數據庫,但我之前沒有和他們一起工作。

我的問題:

  1. 哪個DB更好地選擇我的原因 (將只有1臺 與數據abowe)?
  2. 哪個庫 更好地使用連接的Java < - > DB
  3. 我想會有用過的東西 光標一樣?!?如果是這樣,有沒有 光標實現與良好的記錄 快速訪問緩存?

任何其他提示&關於java的技巧< - > DB歡迎光臨!

+0

感謝所有人!我已經成功地完成了我的任務,我的選擇是:JDBC + Postgresql。它的工作速度非常快! – Arkaha 2010-12-18 08:29:00

回答

5

你的問題是非常不明確的。沒有最好的品種 - 這取決於你有多少錢和什麼樣的硬件。

由於Java和數據庫之間的映射非常簡單,JDBC應該足夠了。 JDBC將根據需要爲您創建一個遊標;在ResultSet的行中丟失了循環。但是,根據數據庫,您可能需要將其配置爲使用遊標。

既然你提到「數百GB」,那就排除了大部分「簡單」數據庫。如果你有錢,試試Oracle。如果你沒有錢,試試MySQL或Postgres。

您還可以嘗試JavaDB(也稱爲Derby)。但我不確定演出會是你需要的。

請注意,他們都有他們的怪癖和「功能」,所以期待花幾個星期找到你的方式與他們。

+0

+1 - 他可能還需要根據他的SQL定義二級索引。 – 2010-12-09 13:18:29

1

我會推薦JavaDB。我在銷售點系統中使用它,它工作得很好。將它集成到Java應用程序中非常簡單,如果需要,您可以將它集成到同一個.jar文件中。

Using Java DB in Desktop Applications可能是一篇有用的文章。您將使用JDBC來連接來自Java的數據庫,如果您不想使用JavaDB,則可以輕鬆切換到另一個數據庫。

1

你會想要評估幾個數據庫(如果它們不是開源/免費的,你可以試用它們中的任何一個)。我建議您嘗試使用Oracle,Mysql/Postgres以及您的數據大小(以及缺乏明顯的複雜性),您可能還需要考慮數據網格(網格或類似)。

雖然是絕對原型。

0

我只想補充一點,「最快」的數據庫不一定是最好的。

您還需要考慮到:

  • 可靠性,
  • 軟件許可成本,
  • 易用性,
  • 便於管理,
  • 可用性的支持,
  • 等。
2

完全取決於您將要處理的數據。您是否需要對其進行索引以檢索特定記錄,或者您是否正在處理整個數據集以生成一些統計信息(例如)?數據庫是否需要由多個客戶端/進程同時訪問?

不要立即衝向SQL/JDBC,關係數據庫功能強大,但它們增加了很多複雜性,對於當前的任務來說通常完全沒有必要。

再次,取決於你實際需要做什麼,像BerkeleyDB可能適合賬單,或者你可能只需要一個更緊湊的二進制消息格式:檢查出Protocol BuffersKryo

如果您確實需要擴展功能,請查看Hadoop/HDFS進行分佈式處理(但這會變得相當複雜)。

哦,一般來說,JavaDB/Derby往往會有所吸引。