Должен ли я использовать NoSQL вместо MySQL? - PullRequest
5 голосов
/ 26 сентября 2011

Я использую PHP для разработки веб-приложений.Я использовал MySQL в качестве моей RDMS.Для многих вещей RDMS работает, и многие проблемы могут быть решены путем нормализации, среди прочего.Но некоторые ситуации просто не работают с RDMS, поэтому были разработаны другие решения, такие как NoSQL.

Что мне не ясно, так это ситуации, в которых NoSQL подойдет лучше.Чем отличаются различные параметры NoSQL, какие ситуации могут быть лучше, чем другие, и какие из них совместимы с PHP 5.3 или выше (по API)?

Итак, я ищу список серверов NoSQLпрограммное обеспечение, которое я могу использовать (например, MySQL в качестве RDMS) и почему я должен использовать одно поверх другого (любые гибриды?).Также приведены конкретные примеры проблем, которые решаются с использованием NoSQL вместо RDMS.

Наконец, я хочу знать, будет ли сервер NoSQL работать лучше в этой ситуации:

Таблица данных, гдекаждая строка может иметь разные столбцы / поля.В одной строке может быть 5 столбцов, в другой может быть 5 совершенно разных столбцов, а в другой может быть 10. Но из всех этих строк есть один первичный числовой идентификатор с автоматическим приращением.Миллионы «строк».

(С учетом вышесказанного я предполагаю, что NoSQL идеально подходит, поскольку представляет собой набор объектов, а не строк в таблице. Не уверен насчет первичного ключа AI).

В RDMS вы можете создать наиболее используемые столбцы, а затем использовать сериализацию / unserialize PHP для хранения других столбцов. Но это очень неэффективно и усложняет ситуацию, когда вам нужно запускать отчеты по столбцам, которые существуют в этом «сериализованном массиве».", например, SUM во всех строках столбца с именем" birthday_pledge "(с каждой строкой, в которой он используется).

В моей ситуации каждый " столбец ", отличный от основногоключ, пользовательский и определяется пользователем.Но мне нужно иметь возможность запускать отчеты (суммы, фильтры, поиски) по этим «столбцам».Поэтому, если NoSQL не является решением, единственное, что я могу придумать, - это создание пользовательских таблиц для пользователя (хотя это может быть сложно).

Я также хочу отметить эту масштабируемость (несколько серверов баз данных)., резервирование и отработка отказа) очень важны.

1 Ответ

1 голос
/ 26 сентября 2011

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

В этой статье сравниваются наиболее популярные системы баз данных nosql и theire pro / con.

Надеюсь, это поможет.

PS: По-моему, вы ищете couchdb или mongodb, но я могу ошибаться.

...