2011-09-26 52 views
5

我使用PHP開發Web應用程序。我用MySQL作爲RDMS。對於RDMS的許多作用,許多問題都可以通過規範化來解決。但是有些情況下RDMS不能很好地工作,所以其他解決方案如NoSQL已經被設計出來。我應該使用NoSQL而不是MySQL嗎?

什麼是不明白的是什麼情況下,NoSQL會更適合。一些不同的NoSQL選項如何不同,哪些情況可能比另一個更好,哪些與PHP 5.3或更高版本(API明智)兼容?

因此,我正在尋找一個我可以使用的NoSQL服務器軟件列表(例如MySQL作爲RDMS)以及爲什麼我會使用另一個(任何Hybrids?)。還有使用NoSQL而不是RDMS解決的問題的具體示例。

最後,我想知道,如果一個NoSQL的服務器會在這種情況下更好地工作:

其中每行可以有不同的列/字段中的數據表。一行可能有5列,另一行可能有5個完全不同的列,另一行可能有10列。但是在所有這些行中,有一個主自動遞增的數字ID。數百萬「行」。

(就上面我假設NoSQL是完美的,因爲它是一個對象集合,而不是表中的行,不知道A.I主鍵)。

在RDMS中,您可以創建最常用的列,然後使用PHP的序列化/反序列化來存儲其他列。但是,如果您必須針對存在於此「序列化數組「,例如名爲」birthday_pledge「的列的所有行上的SUM(每行使用該行)。

在我的情況下除了主鍵,「列」是自定義和用戶定義的。但我需要能夠在這些「列」上運行報告(總和,過濾器,搜索)。因此,如果NoSQL不是解決方案,我唯一能想到的就是爲用戶創建自定義表格(儘管可能會變得複雜)。

我也想指出可伸縮性(多數據庫服務器,冗餘和故障轉移)是非常重要的。

+0

看這裏:http://kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis – zerkms

+0

我會建議您描述的數據的關係數據模型可能會涉及多個表匹配不同類型的ID。 在一般意義上(我不建議直接使用),你可以有一個表'integer_values','text_values'等,它們通過主鍵與項目相關聯。 –

+0

我們實際上目前使用的是'id','text'的廣義表格,但該表格有數百萬行並且無法報告。我正在考慮讓應用程序創建自定義表格,除非NoSQL是針對我們情況的RDMS更好的解決方案。 – Luke

回答

1

http://kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis

本文比較最populars的NoSQL數據庫系統和theire PRO/CON。

希望它可以幫助。

PS:在我的想法你正在尋找的是couchdb或mongodb,但我可能是錯的。

+1

如果他們在列表中包含更多,會很好。我也發現了這個[視覺指南](http://blog.nahurst.com/visual-guide-to-nosql-systems),它幫助了很多。另外這個[site](http:// nosql-database。org /)有一個NoSQL數據庫的完整列表。 – Luke