簡體   English   中英

什么時候BIG,足夠大的數據庫?

[英]When is BIG, big enough for a database?

我正在開發一個以性能為核心的Java應用程序。 我有一個大約40,000個“最終”對象的列表,即我有一個40,000個向量的初始化輸入數據。 在整個程序運行期間,此數據保持不變。

我總是針對單個ID屬性執行查找以檢索正確的向量。 目前我在1000個向量的子樣本上使用HashMap ,但我不確定它是否會擴展到生產。

什么時候BIG,實際上足夠大,可以使用DB? 還有一件事,SQLite DB是一個可行的選擇,因為不涉及並發,所以我猜數據庫使用的“閾值”可能更低。

你在問一個有40,000個條目的HashMap是否HashMap 答案是肯定的 - 除非你真的沒有足夠的記憶,否則這應該是絕對正確的。 如果您正在編寫性能敏感的應用程序,那么在運行應用程序的計算機中放入大量快速內存可能是提高性能的有效方法。

每個HashMap條目都不會有很多開銷,所以如果你有足夠的空間將對象本身存儲在內存中,那么地圖的開銷不太可能導致問題。

你有什么理由不能用合理數量的數據測試這個嗎?

如果你真的沒有比以下更多的要求:

  • 啟動時讀取數據
  • 通過單個ID將數據放入映射中(不需要連接,針對不同字段的查詢,子字符串匹配等)
  • 從地圖中獲取數據

...然后使用一個完整的數據庫將是一個巨大的過度殺傷,IMO。

只要你在程序開頭的內存中加載數據集並將其保存在內存中並且沒有任何復雜的查詢,某種序列化/反序列化似乎比完整的數據庫更可行。 。

您可以啟動一個只有100(或更少)的數據庫。 當數據量足夠大以存儲在數據庫中時,沒有一般規則。 如果你認為你應該更好地將這些數據存儲在數據庫中,那就更好了,如果這會給你帶來任何利潤(性能提升,編程更容易,用戶選擇更靈活)。

當收益大於實施成本時,將其放入數據庫中。

Collection與數據庫沒有設置大小。 它取決於您想要對數據做什么。 尺寸不太重要。

您可以擁有包含十億條目的地圖。

沒有“足夠大的數據庫”這樣的東西。 問題是使用數據庫是否有足夠的優勢來克服成本。

話雖如此,40,000不是'大';-)除非對象很大或你有復雜的查詢要求,我會從內存實現開始。 但是,如果您希望隨着時間的推移擴大此數字,那么從一開始就使用數據庫可能會更好。

您可能需要考慮的一個選項是Oracle Berkeley DB Java版庫。 它是一個簡單的JAR文件,可以讀取/寫入持久存儲的數據。 由於它占地面積小,易於使用,因此可用於在小型到大型數據集上運行的應用程序。 它被設計為鏈接到應用程序,因此它是嵌入式的,不需要復雜的客戶端/服務器安裝或協議棧。

更好的是它具有極高的可擴展性(如果最終得到的數據集超出預期,效果很好),速度非常快,並且同時支持Java Collections API和Direct Persistence Layer API(類似POJO)。 因此,您可以將它與Java Collections無縫地結合使用。

Berkeley DB Java Edition專為Java應用程序開發人員而設計。 它的設計易於使用,在所需資源方面重量輕,但速度快,可擴展且可靠。

您可以在此處找到有關Oracle Berkeley DB Java Edition的更多信息

問候,

戴夫

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM