2013-09-21 40 views
2

現在我想設計一個數據庫,並且在一些動態屬性中會有一些表。我可以選擇像MySQL這樣的傳統RDBMS,通過EAV設計模型來實現它們。但現在我想嘗試一些新的東西。我聽說NoSQL數據庫可以很容易地解決動態屬性問題,我想在MongoDB和Cassandra之間選擇一個。如何選擇MongoDB和Cassandra之間的數據庫

下面是有關數據庫的一些情況下,我想設計:

會有在這個數據庫中大約200,000項目,該數據庫將在一個單一的服務器存儲。

當用戶想要使用這個數據庫時,主要過程是:用戶首先訪問表B的外鍵表A,然後訪問表B,獲得表C的外鍵。表C有很多固定的屬性和一些動態屬性。然後用戶將從表C中獲得一個元組,讀取一些值,然後修改這個元組的一些值,並且可以添加這個元組的一些動態值。

我會將幾乎所有這些元組從Excel電子表格導入我的Java數據庫中。那麼哪一個對Java有更好的支持呢?

我導入這些數據後,將不會再有插入或刪除操作。幾乎所有外部用戶的操作都被讀取和更新。那麼哪種數據庫更適合這種情況。

我知道在這個小項目中沒有必要使用NoSQL數據庫,但我真的很想嘗試和最近學習一個。所以謝謝你的回答,如果你有其他選擇,那將是非常棒的。

+0

這真的很難給出一個很好的答案,「更好的支持」是很主觀的。您需要解決的真正問題是哪個數據庫最適合您的存儲需求。 – WiredPrairie

回答

2

根據您提供的信息,沒有明顯的答案。

您根據表,連接,外鍵描述了查詢模式。起初,我會建議考慮是否可以進行數據嵌入,而不是引用表之間的數據。

http://docs.mongodb.org/manual/core/data-modeling/

對於我們的項目初期,我們選擇的MongoDB,儘管我們正在一些事情,現在卡珊德拉,我真的不後悔做出這樣的選擇。

Mongo非常簡單,靈活。非常容易開發,應用模式更改,查詢。它原諒了很多。我認爲對於NoSQL新手來說它幾乎是無價的。

卡桑德拉更先進。它需要更多關於模式設計和查詢模式的思考。水平擴展性是NoSQL市場中最好的之一。 Cassandra在寫操作方面也有很大的優勢。

許多Mongodb用戶隨後來了兩個Cassandra。但只有在出現真正的性能和可擴展性原因的情況下

但是既然你要單機安裝--mongodb可能就足夠了。它具有非常好的讀取性能,而數據適合RAM。

這兩個數據庫都有良好支持的驅動程序。

https://github.com/mongodb/mongo-java-driver

對於卡桑德拉這是值得參考的新Datastax司機

https://github.com/datastax/java-driver

我知道這是沒有必要在這個小 項目中使用的NoSQL數據庫,但我真的想嘗試和最近學習一個。

我推薦的MongoDB然後...

+0

謝謝!這就是我要的。我想我可以使用MongoDB來構建數據庫,因爲現在主要目的是導入所有這些數據並更新一些元組。由於數據庫結構不是很複雜,如果我們真的需要非常高的性能和可擴展性,我可以轉向Cassandra。 – Jane

相關問題