Подтвердить что ты не робот

SQL по сравнению с noSQL (скорость)

Когда люди сравнивают SQL и noSQL, а также выводя вверх и минус каждого из них, то, о чем я никогда не слышал, говорит о скорости.

Не выполняет SQL-запросы в целом быстрее, чем выполнение запросов noSQL?

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

Но люди никогда, кажется, не упоминают об этом, поэтому я хочу знать, правильно ли я это сделал или неправильно.

4b9b3361

Ответ 1

Определение систем noSQL является очень широким - база данных, которая не использует SQL/, не является РСУБД. Поэтому ответ на ваш вопрос, короче: "это зависит".

Некоторые системы noSQL представляют собой в основном просто постоянные хранилища ключей/значений (например, Project Voldemort). Если ваши запросы имеют тип "поиск значения для заданного ключа", такая система будет (или, по крайней мере, должна быть) быстрее, чем РСУБД, поскольку она должна иметь гораздо меньший набор функций.

Другим популярным типом системы noSQL является база данных документов (например, CouchDB). Эти базы данных не имеют предопределенной структуры данных. Их преимущество в скорости сильно зависит от денормализации и создания макета данных, который привязан к запросам, которые вы будете запускать на нем. Например, для блога вы можете сохранить запись в блоге в документе вместе со своими комментариями. Это уменьшает необходимость в соединениях и поиске, делая ваши запросы быстрее, но также уменьшает гибкость в отношении запросов.

Ответ 2

Люди, которые склонны использовать noSQL, используют его специально, потому что он подходит для их использования. Будучи разведенным с нормальными отношениями и ограничениями в РСУБД, а также с ACID-данными, очень легко заставить его работать намного быстрее.

Считайте Twitter, который использует NoSQL, потому что пользователь только делает очень ограниченные вещи на сайте, или точно - твит. И concurrency можно считать несуществующим, поскольку (1) никто не может изменить ваш твит и (2) вы обычно не будете одновременно чирикать с нескольких устройств.

Ответ 3

Как говорил Эйнштейн, скорость относительна.

Если вам нужно сохранить основное/подробное простое приложение (например, корзину покупок), вам нужно будет сделать несколько операторов Insert в вашем приложении SQL, также вы получите набор данных Data, когда вы выполните запрос, чтобы получить если вы используете NoSQL, и используете его хорошо, тогда у вас будут все данные для одного заказа в одной простой "записи" (документ, если вы используете термины баз данных NoSQL, таких как djondb).

Итак, я действительно думаю, что производительность приложения можно измерить по количеству вещей, которые ему нужно сделать для достижения единого требования, если вам нужно сделать несколько вложений для хранения заказа, и вам понадобится только одна простая вставка в базе данных, например, djondb, производительность будет в 10 раз быстрее в мире NoSQL, просто потому, что вы используете в 10 раз меньше вызовов на уровень базы данных, чтобы это было.

Чтобы проиллюстрировать мою мысль, позвольте мне связать пример, который когда-то писал я о различиях между подходами к моделим данных NoSQL и SQL: http://djondb.com/blog/?p=4, Я знаю, что это самостоятельная ссылка, но в основном я написал ее для решения этого вопроса, который я счел самым сложным вопросом, который может иметь парень из РСУБД, и это всегда хороший способ объяснить, почему NoSQL настолько отличается от SQL-мира, и почему он добиться лучшей производительности в любое время, а не потому, что мы используем технологию "nasa", потому что NoSQL позволит разработчику сделать меньше... и получить больше и меньше кода = большая производительность.

Ответ 4

Ответ: это зависит. Вообще говоря, целью NoSQL DATABASES (нет "запросов" ) является масштабируемость. RDBMS обычно имеют некоторые жесткие ограничения в какой-то момент (я говорю о миллионах и миллионах строк), где вы не могли больше масштабироваться традиционными средствами (репликация, кластеризация, разбиение), и вам нужно что-то еще, потому что ваши потребности продолжают расти. Даже если вам удается масштабироваться, общая настройка довольно сложная. Или вы можете масштабировать показания, но не записывать.

И запросы зависят от конкретной реализации вашего сервера, типа запроса, столбца в таблице и т.д.... помните, что запросы - это всего лишь одна часть СУБД.

Ответ 5

время запроса реляционной базы данных, например SQL для данных 1000 человек, составляет 2000 мс, а база данных диаграмм, например neo4j составляет 2 мс. Если вы кладете больше node 1000000 стабильная скорость 2 мс