NoSQL - это категория механизмов баз данных, которые не поддерживают SQL (язык структурированных запросов) для достижения функций производительности или надежности, которые несовместимы с гибкостью SQL.
Эти механизмы обычно предоставляют язык запросов, который предоставляет подмножество возможностей SQL, а также некоторые дополнительные функции.То, какое подмножество SQL доступно, полностью зависит от движка, хотя довольно распространено, что JOIN
, TRANSACTION
, LIMIT
и неиндексированные WHERE
не поддерживаются.
Как следствие, перенос существующего программного обеспечения из стандартного ядра базы данных SQL в ядро NoSQL потребует перезаписи всех запросов в этом программном обеспечении и, вероятно, также потребует некоторых изменений всама логика приложения (классический пример - «отображение страницы 11 из 25» невозможно эффективно выполнить в CouchDB из-за отсутствия поддержки LIMIT x OFFSET y
).
В Википедии есть хороший список движков NoSQL .
По общему мнению, NoSQL заключается в том, что если какая-то конкретная часть вашего программного обеспечения выиграет от улучшения производительностинадежность или масштабируемость, допускаемая конкретным механизмом NoSQL, и не использующая какие-либо функции, недоступные в этом механизме, поэтому можно рассмотреть возможность перехода.Весьма редко можно переместить целое существующее приложение на основе SQL в свою целостность в NoSQL.
Некоторые движки NoSQL имеют функции автоматического импорта из SQL, но использование NoSQL налагает некоторые архитектурные ограничения, которые зависят отчто вы делаете с данными, так что рукописная процедура импорта из SQL обычно будет единственным решением независимо от существующих импортеров.
(Наконец, MySQL не имеет никакого отношения к NoSQL. MySQL - это просто имя одной реализации реляционной базы данных. Поскольку он реализует SQL, он, конечно, не является базой данных NoSQL.)