2010-03-27 63 views
13

我有龐大的數據庫(還挺共發現),並想知道,如果它更容易使用,而不是MySQL的卡桑德拉| PostrgreSQLCassandra或MySQL/PostgreSQL?

我所有的生活中,我採用的是MySQL和PostrgreSQL,我可以很容易地認爲,在關係代數方面,但幾個星期前,我學習了cassandra,並在Facebook和Twitter上使用它。

更方便嗎?

現在通常使用哪些DBMS來存儲社交網絡的數據,對象之間的關係,wordnet?

+0

我覺得這個鏈接對於決定業務用例的SQL/NoSQL決策是最有用的:http://kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis – 2015-08-14 16:01:17

+0

這個問題應該關閉,它不適合SO。 – 2018-02-13 17:08:31

回答

6

「NoSQL」數據庫有許多不同的風格。如果你的應用程序真的很喜歡Wordnet,也許你應該看看圖形數據庫,如Neo4j

0

所有不同的產品,他們都有他們的專業和conn的。你有什麼樣的問題需要解決?

巨大的,就像在結核病的?

+0

E.g我有這些對象的btw連接對象和權重。我想快速找到所有可能的路徑和它們的權重。 – Ivri 2010-03-27 18:28:04

7

我建議分析您的請求。

  1. 如果您正在使用多個羣集去,生產的機器的NoSQL
  2. 如果你的數據模型很複雜 - 需要如果你適合在幾臺機器高效的組織架構採取的NoSQL
  3. (與類型的列沒有限制)沒有比例尺,你不需要超級性能的多重請求(例如在社交網絡 - 很多用戶發送http請求),並且你認爲你不涉及可銷售性採用RDBMS(Postgres有一些好的功能和結構你可以使用它,比如數組列類型)。

卡桑德拉應該更好地處理大規模的數據,多用途。 neo4j - 對特殊結構,圖形會更好。

4

Cassandra和其他NoSQL存儲正在用於基於社交的網站,因爲它們需要大量基於寫入的操作。並不是說MySQL和Postgres無法實現這一點,但一般來說,NoSQL需要的時間和金錢要少得多。

聽起來像你可能想看看Neo4J,只是根據你的對象模型的需要。

8

沒有什麼像銀色的子彈,一切都是爲了解決具體問題而建立的,有其自身的優點和缺點。這取決於你,你有什麼問題陳述以及什麼最適合解決這個問題。無論您使用Cassandra(NoSQL)還是MySQL(RDBMS),它都是從您的系統需求驅動的。以下是有助於您在決定數據庫時做出更好決策的輸入。

爲什麼要使用NoSQL的

在RDBMS數據庫的情況下,做出的選擇是很容易的,因爲幾乎所有像MySQL,甲骨文,MS SQL,PostgreSQLin數據庫這一類提供了幾乎相同類型的面向解決方案ACID屬性。當涉及到NoSQL時,決策變得困難,因爲每個NoSQL數據庫都提供不同的解決方案,您必須瞭解哪一個最適合您的應用/系統需求。例如,MongoDB適合您的系統需要無模式文檔存儲的用例。 HBase可能適合搜索引擎,分析日誌數據,任何需要掃描巨大的二維無連接表的地方。Redis旨在提供內存中搜索各種數據結構(如樹,隊列,鏈接列表等),可以很好地適用於製作實時排行榜,pub-sub類系統。同樣,這個類別中還有其他數據庫(包括Cassandra),適合不同的問題陳述。現在讓我們轉到原始問題,並逐一回答。

當使用卡桑德拉

作爲NoSQL的家庭的一部分卡桑德拉的問題,在您的要求是有很重的寫系統提供解決方案,你想有非常敏感的報告系統上存儲的數據的頂。考慮Web分析的用例,其中爲每個請求存儲日誌數據,並且您希望圍繞它建立分析平臺,以實時方式按小時,瀏覽器,IP等統計點擊次數。你可以參考博客文章(http://blogs.shephertz.com/2015/04/22/why-cassandra-excellent-choice-for-realtime-analytics-workload/)瞭解更多關於哪裏卡桑德拉適合的用例。

何時使用關係數據庫管理系統,而不是卡桑德拉/ NoSQL的

Cassandra是基於NoSQL的數據庫,而且不提供ACID和關係數據屬性。如果你對ACID財產有強烈的要求(例如財務數據),Cassandra就不適合這種情況。很明顯,你可以用它來解決問題,但是最終你會寫很多應用程序代碼來處理ACID屬性,並且會很快放棄上市時間。用Cassandra管理這種系統對你來說也是複雜而乏味的。