使用哪一個?InnoDB 複製還是 MySQL 集群?
我正在建構一個 url 縮短器,並使用 InnoDB 作為連結數據的儲存引擎。我將從在同一虛擬機上包含應用程序實例和 MySQL 數據庫實例的單個 VPS 開始。我希望應用程序易於擴展,我希望能夠添加新節點並在需要時盡可能輕鬆地使系統性能更好。
我一直在閱讀有關 MySQL Cluster 和 MySQL Replication 的資訊,但我無法決定使用哪一個。您可以想像(一種流行的)url 縮短器將是寫入和讀取密集型的。在這種情況下,您將使用什麼結構?你會選擇集群還是複制?
然後基於集群或複制的選擇,為了能夠從單個 innoDB 引擎數據庫擴展到集群或複制結構,我應該擁有什麼基礎架構/配置?我想正確啟動,我不想陷入無法在需要時擴展/改進數據庫系統的情況。
多謝
先生。
由於您的鍵值查找流量模式,MySQL 集群可能非常適合您。NDB 傳統上在連接或複雜查詢方面很差。然而,我會說它與 MySQL 不同,並且在使用它之前需要了解一些注意事項。它的無共享架構意味著您應該使用體面的(和包容性冗餘)網路基礎設施大規模執行它。也許值得一個概念驗證項目來安裝和測試它。幾家公司的人有配置工具來幫助你啟動和執行。
Mongo 也不錯,正如您所說,您不能放棄 A_I,為什麼不呢?像 (1902jdd,"/page/id") 需求和 auto inc 這樣的值呢?Mongo 文件是無模式的,您可以將多餘的數據添加到您認為合適的文件中,並以 key:value 樣式進行查詢。向前發展的統計數據將使您進入地圖減少世界,這可能很有趣。
與傳統的 RDBMS 保持一致並需要性能,您應該查看 memcached 和 mysql memcached api,以便快速鍵:值訪問數據,這將保留聚合查詢的關係方面(選擇
$$ count|max|avg $$……按順序分組,等等……
MongoDB - 它具有自動分片功能,您將能夠一個接一個地添加節點。否則,要擴展寫入,您將需要以一種或另一種方式對 mysql 進行分片,而集群將無濟於事。