我应该使用NoSQL而不是MySQL吗?

时间:2011-09-26 01:45:53

标签: php mysql nosql rdms

我正在使用PHP开发Web应用程序。我用MySQL作为我的RDMS。对于RDMS工作的许多事情,许多问题可以通过规范化等解决。但有些情况对RDMS不起作用,因此设计了其他解决方案,如NoSQL。

我不清楚NoSQL哪种情况更适合。一些不同的NoSQL选项有何不同,哪种情况可能比另一种更好,哪些与PHP 5.3或更高版本兼容(API明智)?

所以我正在寻找一个我可以使用的NoSQL服务器软件列表(例如MySQL作为RDMS)以及为什么我会使用其中一个(任何混合型?)。还有使用NoSQL而不是RDMS解决的问题的具体示例。

最后,我想知道NoSQL服务器在这种情况下是否能更好地工作:

数据表,其中每行可以具有不同的列/字段。一行可能有5列,另一行可能有5列完全不同,另一行可能有10列。但是在所有这些行中,只有一个主要的自动递增数字ID。数以百万计的“行”。

(正如上面我假设NoSQL是完美的,因为它是对象的集合,而不是表中的行。不确定A.I主键。)

在RDMS中,您可以创建最常用的列,然后使用PHP的serialize / unserialize来存储其他列。但是当您必须对此“序列化”中存在的列运行报告时,这非常低效并且使事情变得复杂。数组“,例如名为”birthday_pledge“的列的所有行上的SUM(每行使用的位置)。

在我的情况下,每个“列”(主键除外)都是自定义和用户定义的。但我需要能够在这些“列”上运行报告(总和,过滤器,搜索)。因此,如果NoSQL不是解决方案,我唯一能想到的就是为用户创建自定义表(虽然可能会变得复杂)。

我还想指出可扩展性(多个数据库服务器,冗余和故障转移)非常重要。

1 个答案:

答案 0 :(得分:1)

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

本文比较了大多数人口的nosql数据库系统和theire pro / con。

希望它可以提供帮助。

PS:在我的想法中你正在寻找的是couchdb或mongodb,但我可能是错的。