В SQL по сравнению с NoSQL (скорость)
когда люди сравнивают SQL и noSQL и заключают плюсы и минусы каждого из них, я никогда не слышу, чтобы кто-то говорил о скорости.
обычно не выполняет SQL-запросы быстрее чем выполнение запросов noSQL?
Я имею в виду, для меня это будет действительно очевидный вывод, потому что вы всегда должны быть в состоянии найти что-то быстрее, если вы знаю структура вашей базы данных, чем если бы вы не надо.
но люди никогда не упоминают об этом, поэтому я хочу знать, правильно ли мое заключение или нет.
6 ответов:
определение систем noSQL является очень широким - база данных, которая не использует SQL / не является СУБД. Поэтому ответ на ваш вопрос, короче говоря: "это зависит".
некоторые системы noSQL в основном являются просто постоянными хранилищами ключей / значений (например,Проект Волдеморт). Если ваши запросы имеют тип "поиск значения для данного ключа", такая система будет (или, по крайней мере,должно быть) быстрее, чем СУБД, потому что он должен иметь только много меньший набор функций.
еще один популярный тип системы noSQL-это база данных документов (например CouchDB). Эти базы данных не имеют предопределенной структуры данных. Их преимущество в скорости в значительной степени зависит от денормализации и создания макета данных, адаптированного к запросам, которые вы будете запускать на нем. Например, для блога можно сохранить сообщение блога в документе вместе с его комментариями. Это уменьшает потребность в соединениях и поиске, что делает ваши запросы быстрее, но это также может уменьшить вашу гибкость в отношении запросов.
люди, которые склонны использовать noSQL, используют его специально, потому что он подходит для их случаев использования. Будучи отделенным от обычных связей и ограничений таблиц РСУБД, а также кислотности данных, очень легко заставить его работать намного быстрее.
рассмотрим Twitter, который использует NoSQL, потому что пользователь делает только очень ограниченные вещи на сайте, или один точно - твит. И параллелизм можно считать несуществующим, поскольку (1) никто другой не может изменить ваш твит и (2) вы обычно не будете одновременно чирикают с нескольких устройств.
Как сказал бы Эйнштейн, скорость относительна.
Если вам нужно сохранить простое приложение master / detail (например, корзину покупок), вам нужно будет сделать несколько инструкций Insert в вашем приложении SQL, также вы получите набор данных информации, когда вы делаете запрос, чтобы получить покупку, если вы используете NoSQL, и вы используете его хорошо, тогда у вас будут все данные для одного заказа в одной простой "записи" (документ, если вы используете термины баз данных NoSQL, такие как djondb).
Итак, я действительно думаю, что производительность приложения может быть измерена количеством вещей, которые ему нужно сделать для достижения одного требования, если вам нужно сделать несколько вставок для хранения заказа, и вам нужна только одна простая вставка в базу данных, например djondb, тогда производительность будет в 10 раз быстрее в мире NoSQL, просто потому, что вы используете в 10 раз меньше вызовов на уровень базы данных, вот и все.
чтобы проиллюстрировать мою точку зрения, позвольте мне связать пример, который я написал некоторое время назад о различиях между NoSQL и подход к модели данных SQL: http://djondb.com/blog/?p=4, я знаю, что это с собственной ссылкой, но в основном я написал это, чтобы решить этот вопрос, который я нашел это наиболее сложный вопрос в РСУБД парень мог и это всегда хороший способ, чтобы объяснить, почему NoSQL-это так отличается от SQL мире, и почему он будет добиться более высокой производительности в любое время, а не потому, что мы используем "НАСА" технологии, это потому, что NoSQL-это позволит разработчику сделать меньше... и получить больше, и меньше кода = больше производительность.
ответ: это зависит. Вообще говоря, целью баз данных NoSQL (без "запросов") является масштабируемость. СУБД обычно имеют некоторые жесткие ограничения в какой-то момент (я говорю о миллионах и миллионах строк), где вы больше не можете масштабировать традиционными средствами (репликация, кластеризация, секционирование), и вам нужно что-то еще, потому что ваши потребности продолжают расти. Или даже если вам удастся масштабировать, общая настройка довольно сложна. Или вы можете масштабировать чтения, но не пишет.
и запросы зависят от конкретной реализации вашего сервера, типа запроса, который вы делаете, столбцов в таблице и т. д... помните, что запросы-это только одна часть СУБД.
быстрее для чего? Обновления данных? Вставляет? Одиночн-рядка запросы? Сложные запросы? Вопрос, как говорится, практически бессмыслен. В зависимости от того, что вы делаете, любая технология может быть оптимальной.
короче говоря: нет, NoSQL не быстрее, чем SQL, и SQL не быстрее, чем NoSQL. Это разные технологии, которые подходят для разных работ.
вопросы, подобные вашим, распространены, но наивно предполагают, что есть один правильный ответ. Мы могли бы также спросить плотника, Если молоток это лучше, чем дрель или пила. Все они являются инструментами, полезными для тех целей, для которых они были разработаны. Нет смысла использовать исключительно одно или другое.