我創建一個Java web服務器來存儲位置數據(緯度,經度和時間)的JSON字符串 我想知道是否有任何優點(性能,可伸縮性,維護等)使用db4o似乎更容易在java中使用,而不是sql,sqlite。 Hibernate和db4o之間還有什麼區別;db4o vs sql,sqlite在java服務器
回答
DB4O與傳統的基於SQL的RDBMS完全不同。
您需要更好地定義您的要求。例如,DB4O可以相對容易地跟蹤圖形 - 代表JSON的特定結構可能適合該領域。另一方面,DB4O對查詢(特別是報告和聚合)絕對不適合先前定義的圖。
編輯:以上是我的經驗與DB4O(我用的DB40 結合一個SQL RDMBS) - 我做的(以及會)仍然使用DB4O,因爲我覺得它有很多優點。然而,我覺得它更適合於特定的應用程序,這些應用程序必須明確定義(claw hammer),而傳統的SQL RDMB(sledgehammer)具有更廣泛的範圍,可以很好地應對即使不良或平坦的模式,也可以禁止性能考慮因素,可以修改爲「切片和切塊」。兩者都是具有重疊但不同目的的工具 - 人們可以用大錘釘錘(可能不太漂亮),但是試圖用爪錘擊倒水泥牆。
「db4o」中的「o」代表「objects」。這是一個對象數據庫,所以如果你的問題不是「真實的」面向對象的,這可能不適合你。對象數據庫確實適用於深對象圖,長參考鏈(例如CAD或有限元幾何數據)的問題。
閱讀他們的reference guide。
至於存儲描述的JSON字符串,我認爲任何持久性技術都可以。當你放棄SQL時,一定要知道你在做什麼。我並不認爲SQL和關係數據庫是唯一的答案。我只是告誡你,在你有一些數據證明它之前,不要假設你會遇到性能,可擴展性等問題。
如果您能夠將JSON字符串映射到衆所周知的對象類型(具有相同字段的類定義的服務器端,並且在接收到請求時從JSON翻譯/映射到那些衆所周知的類型),那麼db4o會爲你工作。但其他一些解決方案也是如此。還有一些NoSQL數據庫專門支持JSON對象和查詢。 (如Mongo DB或Couch DB),但是(如duffymo所述),當你選擇NoSQL數據庫時,你通常不得不放棄其他一些東西......比如事務性,可組合性(查詢第1列和第3列以及加入另一個隨機表)或大多數人從數據庫中假設的其他功能。 (比如Hibernate),db4o就像許多其他的一樣,db4o只處理衆所周知的對象類型和圖形。它不會讓你的物體以任何其他形狀出現,但它們在插入時就處於其中。但db4o確實可以讓你查詢任何對象上的任何字段。 (一些NoSQL數據庫要求您預先定義哪些/哪些字段是可查詢值)
- 1. Java服務器中的Sqlite JDBC頁面
- 2. db4o activatablelist vs wpf observablecollection
- 3. TC服務器Vs的JBoss服務器
- 4. web服務器vs部署服務器
- 5. wamp服務器vs mysql服務器
- 6. Db4O - DatabaseFileLockedException在重新啓動服務器時
- 7. Web容器在WebSphere VS Tomcat服務器
- 8. 服務器上的readonly sqlite
- 9. 使用SQLite工作與SQL服務器(在iPhone)
- 10. SQL服務器
- 11. SQL服務器
- 12. SQL服務器
- 13. SQL(服務器):
- 14. 的Java> Eclipse和SQL服務器
- 15. 創建語句SQL服務器和Java
- 16. 的DbCommand和參數化的SQL,ORACLE VS SQL服務器
- 17. 服務器路徑/ VS \
- 18. 的Javascript:HTTP源VS服務器
- 19. Oracle VM vs Xen服務器
- 20. IS NULL VS在where子句+ SQL服務器
- 21. SQL服務器:觸發VS數據庫觸發器
- 22. 計算在SQL-服務器
- 23. 加入在SQL服務器
- 24. SQL服務器 - 在觸發
- 25. SQL服務器:在插入
- 26. 平均在SQL服務器
- 27. 索引在Sql服務器
- 28. Pivot'ing在SQL服務器
- 29. 客戶端如何查詢db4o服務器?
- 30. 如何註冊DB4O服務器上的回調?
您的評論有點棘手。事實上,db4o依賴於你定義一個很好的面向對象的模型。然後查詢功能非常強大。 db4o對.NET很好地支持LINQ,即使在CompattFramework上也是如此,在Java方面它帶有一種我們稱之爲「Native Queries」的機制。 – 2010-11-07 12:12:01