Недавно меня спросили:
Почему NoSQL быстрее, чем SQL?
Я не согласился с предпосылкой вопроса ... это просто нонсенс для меня лично. Я не вижу никакого повышения производительности при использовании NoSQL вместо SQL. Может быть, SQL поверх NoSQL, да, но не так.
Я что-то упускаю из-за NoSQL?
performance
nosql
CND
источник
источник
Ответы:
Вокруг существует множество решений NoSQL, каждое из которых имеет свои сильные и слабые стороны, поэтому следующее следует рассматривать с недоверием.
Но, по сути, то, что делают многие базы данных NoSQL, это полагается на денормализацию и пытается оптимизировать для денормализованного случая. Например, предположим, что вы читаете сообщение в блоге вместе с его комментариями в базе данных, ориентированной на документы. Часто комментарии сохраняются вместе с самой записью. Это означает, что будет быстрее получить их все вместе, так как они хранятся в одном месте, и вам не нужно выполнять соединение.
Конечно, вы можете сделать то же самое в SQL, и денормализация является обычной практикой, когда требуется производительность. Просто многие NoSQL-решения спроектированы с самого начала и всегда используются таким образом. Затем вы получаете обычные компромиссы: например, добавление комментария в приведенном выше примере будет медленнее, потому что вы должны сохранить весь документ вместе с ним. И как только вы денормализовали, вы должны позаботиться о сохранении целостности данных в вашем приложении.
Более того, во многих решениях NoSQL невозможно выполнять произвольные объединения, а следовательно, произвольные запросы. Некоторые базы данных, такие как CouchDB, требуют, чтобы вы заранее продумали запросы, которые вам понадобятся, и подготовили их внутри БД.
В общем, все сводится к ожиданию денормализованной схемы и оптимизации операций чтения для этой ситуации, и это хорошо работает для данных, которые не являются в высокой степени реляционными и требуют гораздо больше операций чтения, чем записи.
источник
Что вам не хватает в NoSQL, так это то, что NoSQl нельзя сравнивать с SQL никоим образом. NoSQL - это название всех технологий персистентности, которые не являются SQL. БД документов, БД ключей-значений, БД событий - все это NoSQL. Все они различаются практически во всех аспектах, будь то структура сохраненных данных, запросы, производительность и доступные инструменты.
Так что если кто-то задает вам такой вопрос на собеседовании, это должен быть ответ.
источник
Базы данных NoSQL (или, точнее, нереляционные) отказываются от некоторых функций традиционных баз данных для скорости, но, что более важно, для горизонтальной масштабируемости.
Недостающие функции зависят от конкретного продукта, как правило, полные свойства ACID или даже операции объединения не поддерживаются. Это цена за повышенную производительность.
источник
Вы правы, было бы глупо заявить об этом в общем заявлении. Что, вероятно, весь смысл; вместо одного ответа интервьюер, вероятно, ожидает, что вы ответите на вопросы, которые помогут вам выяснить, каков контекст проблемы (какие данные, сколько их, в какой операционной среде и т. д.), конкретное решение NoSQL , Они попытаются выяснить, как вы анализируете проблемы, и по пути понять, как много вы знаете о различных решениях, которые существуют.
источник
Базы данных NoSQL обычно имеют смысл только в том случае, если вы создаете свои данные на их основе.
Если вы намереваетесь просто использовать их в качестве замены СУБД, вы можете получить скорее меньшую производительность, чем большую, особенно если у вас недостаточно бюджета для оплаты серверов с большим объемом оперативной памяти.
Посмотрите на эту статью, которая сравнивает использование дискового пространства MySQL с использованием MongoDB: http://blog.trackerbird.com/content/mysql-vs-mongodb-disk-space-usage
источник
Какая база данных NoSQL? Какая база данных SQL? Если кто-то скажет вам, что NoSQL быстрее, чем SQL, вам следует уйти. Или еще лучше посмотреть это видео:
http://www.youtube.com/watch?v=b2F-DItXtZs
Я не скажу, что половина вещей, заявленных о NoSQL, неправильны, но я скажу, что существует множество фанатов NoSQL от людей, которые действительно не очень хорошо понимают это.
У SQL есть свои ограничения (конечно), но это также очень зрелая технология, которая хорошо понятна и имеет большой круг разработчиков, которые понимают, как правильно ее использовать. Я не могу сказать то же самое для всех форм NoSQL.
источник
NoSql поддерживается базами данных, ориентированными на столбцы, где RDBMS - это база данных, ориентированная на строки ... И скажем, например, у нас есть таблица Employee с именами, возрастом, Salery, Address, EmployeeId и т. Д. ... мы помещаем одну и ту же таблицу в MySql (поддержка RDBMS) и HBase (Поддержка NoSQL). Если клиент / клиент пишет запрос, чтобы получить данные о среднем возрасте или сале из записей сотрудников 1Lakh ... что происходит?
В RDBMS она будет проходить по каждой строке и собирает значение, сумму и деление для результата. Когда дело доходит до базы данных Columnar, не нужно беспокоиться обо всех итерациях одной строки lakh. Но имейте дело только с одной строкой, которая быстрее вычисляется. Таким образом, иногда NoSQL быстрее, чем SQL. В этом случае NoSQL не волнует, жалобы ACID стоят!
источник
Забудьте теорию о базах данных ... после того, как вы поймете свои запросы, вы можете сохранять данные в базах данных nosql точно так, как они фактически используются в вашем приложении ....
Например, возьмем этот пример: у вас есть модель покупателя с множеством заказов и множеством товаров, связанных с каждым заказом, тогда у них также есть много сохраненных товаров для последующих покупок ... если вы большой интернет-магазин, скажем, с 10 миллионами клиентов и 50 миллион заказов. И этот клиент входит в свою панель управления, которая отображает эти точные данные, сколько работы базы данных sql потребуется, чтобы найти клиента, объединить заказы, каждую позицию и сохраненные позиции. В базе данных sql все эти данные, вероятно, должны быть каким-то образом объединены ... или вы можете создать в своей базе данных коллекцию под названием usercache и сохранить эти данные в точности так, как вы используете их в реальной жизни. Так что это действительно может быть один запрос к одному полю [id], чтобы получить все эти данные обратно. Кроме того, база данных nosql не
Так может ли sql db запросить одно поле Id так же быстро, если не быстрее, чем nosql? Да, но может ли база данных sql вернуть все необходимые данные, запросив одну таблицу и одно поле? Нет, если вы не сделаете что-то вроде сохранения данных в Json внутри большого текстового поля. Но теперь эти данные не могут запрашивать для потенциального использования в будущем.
источник