Что такое NoSQL, как он работает и какие преимущества он дает?[закрыто]

StackOverflow https://stackoverflow.com/questions/1145726

  •  16-09-2019
  •  | 
  •  

Вопрос

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

Поэтому у меня всего несколько вопросов:

  1. Что именно?

  2. Как это работает?

  3. Почему это лучше, чем использование базы данных SQL?И насколько это лучше?

  4. Является ли технология слишком новой, чтобы ее можно было начать внедрять, или на нее стоит обратить внимание?

Это было полезно?

Решение

  1. Что именно?

    С одной стороны, конкретная система, но оно также стало общим словом для обозначения множество новых серверов хранения данных которые не соответствуют модели реляционной БД.

  2. Как это работает?

    Каждая из систем, помеченных общим именем, работает по-разному, но основная идея состоит в том, чтобы предложить лучшую масштабируемость и производительность за счет использования моделей БД, которые не поддерживают все функциональные возможности универсальной СУБД, но все же имеют достаточную функциональность, чтобы быть полезными.В некотором смысле это похоже на MySQL, в котором когда-то не было поддержки транзакций, но именно потому что из них удалось превзойти другие системы БД.Если бы вы могли написать свое приложение так, чтобы не требовались транзакции, это было бы здорово.

  3. Почему это лучше, чем использование базы данных SQL?И насколько это лучше?

    Было бы лучше, если бы ваш сайт требовал настолько масштабного масштабирования, что лучшая СУБД, работающая на лучшем оборудовании, которое вы можете себе позволить и максимально оптимизированном, просто не могла бы справиться с нагрузкой.Насколько это лучше, зависит от конкретного варианта использования (большая активность обновлений в сочетании с большим количеством объединений очень сложна для «традиционных» СУБД) - в крайних случаях вполне может быть коэффициентом 1000.

  4. Является ли технология слишком новой, чтобы ее можно было начать внедрять, или на нее стоит обратить внимание?

    Зависит главным образом от того, чего вы пытаетесь достичь.Он определенно достаточно зрелый, чтобы его можно было использовать.Но немногие приложения действительно нуждаются в таком массовом масштабировании.Для большинства достаточно традиционной СУБД.Однако, поскольку использование Интернета становится все более повсеместным, вполне вероятно, что приложения, которые это делают, станут более распространенными (хотя, вероятно, и не доминирующими).

Другие советы

NoSQL не существует!

NoSQL — это модное слово.

На протяжении десятилетий, когда люди говорили о базах данных, они имели в виду реляционные базы данных.И когда люди говорили о реляционных базах данных, они имели в виду те, которыми вы управляете вместе с Эдгаром Ф.Язык структурированных запросов Кодда.Хранить данные каким-то другим способом?Безумие!Все остальное — это просто плоские файлы.

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

Философия всех этих баз данных была разной.Но у всех этих баз данных было одно общее: язык структурированных запросов больше не подходил для их использования.Таким образом, каждая база данных заменила SQL своим собственным языком запросов.Так родился термин NoSQL, обозначающий все технологии баз данных, которые бросают вызов классической модели реляционной базы данных.

Так что же общего между базами данных NoSQL?

На самом деле, не так уж и много.

Часто приходится слышать такие фразы:

  • NoSQL масштабируем!
  • NoSQL — для больших данных!
  • NoSQL нарушает ACID!
  • NoSQL — это прославленное хранилище ключей/значений!

Это правда?Что ж, некоторые из этих утверждений могут быть верными для некоторых баз данных, обычно называемых NoSQL, но каждое из них также неверно как минимум для одного другого.На самом деле единственное, что общего у баз данных NoSQL, это то, что они не используют SQL.Вот и все.Единственное, что их определяет, это то, что отличает их друг от друга.

Так что же отличает базы данных NoSQL?

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

Документоориентированный

Примеры:МонгоБД, CouchDB

Сильные стороны:Разнородные данные, работа объектно-ориентированная, гибкая разработка

Их преимущество в том, что они не требуют согласованной структуры данных.Они полезны, когда ваши требования и, следовательно, структура вашей базы данных постоянно меняются или когда вы имеете дело с наборами данных, которые принадлежат друг другу, но выглядят совершенно по-разному.Если у вас много таблиц с двумя столбцами, называемыми «ключ» и «значение», возможно, их стоит изучить.

Графовые базы данных

Примеры:Neo4j, ЖирафДБ.

Сильные стороны:Сбор данных

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

Их внимание сосредоточено на определении данных через их отношение к другим данным.Если у вас много таблиц с первичными ключами, которые являются первичными ключами двух других таблиц (и, возможно, некоторыми данными, описывающими отношения между ними), то это может вам подойти.

Хранилища ключей и значений

Примеры:Redis, Кассандра, MemcacheDB.

Сильные стороны:Быстрый поиск значений по известным ключам

Они очень упрощены, но это делает их быстрыми и простыми в использовании.Если вам не нужны хранимые процедуры, ограничения, триггеры и все эти расширенные функции базы данных, и вам просто нужно быстрое хранение и извлечение ваших данных, тогда они для вас.

К сожалению, они предполагают, что вы точно знаете, что ищете.Вам нужен профиль пользователя User157641?Нет проблем, это займет всего микросекунды.Но что, если вы хотите, чтобы имена всех пользователей в возрасте от 16 до 24 лет имели «вафли» в качестве любимой еды и заходили в систему за последние 24 часа?Везет, как утопленнику.Если у вас нет определенного и уникального ключа для конкретного результата, вы не сможете так легко получить его из своего магазина K-V.

SQL устарел?

Некоторые сторонники NoSQL утверждают, что их любимая база данных NoSQL — это новый способ ведения дел, а SQL остался в прошлом.

Правы ли они?

Нет, конечно, это не так.Хотя существуют проблемы, для решения которых SQL не подходит, у него все же есть свои сильные стороны.Множество моделей данных лучше всего представить в виде набора таблиц, ссылающихся друг на друга.Тем более, что большинство программистов баз данных десятилетиями обучались думать о данных в реляционном ключе, и попытки применить этот образ мышления к новой технологии, которая не была создана для нее, редко заканчиваются хорошо.

Базы данных NoSQL не заменяют SQL — они являются альтернативой.

Большинство программных экосистем вокруг различных баз данных NoSQL еще не настолько развиты.Несмотря на достигнутые успехи, у вас все еще нет дополнительных инструментов, которые были бы столь же зрелыми и мощными, как те, которые доступны для популярных баз данных SQL.

Кроме того, существует гораздо больше ноу-хау по SQL.Поколения ученых-компьютерщиков посвятили десятилетия своей карьеры исследованиям реляционных баз данных, и это показывает:Литература, написанная о базах данных SQL и реляционном моделировании данных, как практическая, так и теоретическая, могла бы заполнить множество библиотек, полных книг.Как построить реляционную базу данных для ваших данных — это настолько хорошо изученная тема, что трудно найти крайний случай, в котором не существовало бы общепринятой лучшей практики.

С другой стороны, большинство баз данных NoSQL все еще находятся в зачаточном состоянии.Мы все еще пытаемся найти лучший способ их использования.

Поскольку кто-то сказал, что мой предыдущий пост не по теме, я постараюсь компенсировать это :-) NoSQL не предназначен и никогда не был предназначен для замены более распространенных баз данных SQL, но пару слов для того, чтобы понять вещи в правильном ракурсе.

В самом сердце Философия NoSQL В основе лежит соображение, что, возможно, по коммерческим соображениям и по соображениям переносимости, механизмы SQL склонны игнорировать огромную мощь операционной системы UNIX и ее производных.

Используя базу данных на основе файловой системы, вы можете немедленно воспользоваться преимуществами постоянно растущих возможностей и мощности базовой операционной системы, которые в течение многих лет неуклонно растут в соответствии с законом Мура.При таком подходе многие команды операционной системы автоматически становятся также «операторами базы данных» (вспомните «ls», «sort», «find» и другие бесчисленные утилиты оболочки UNIX).

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

Я управляю сотнями веб-сайтов, и все они в большей или меньшей степени используют NoSQL.На самом деле они не хранят огромных объемов данных, но даже если бы некоторые из них это сделали, я, вероятно, мог бы подумать о творческом использовании NoSQL и файловой системы для преодоления любых узких мест.Что-то, что, вероятно, было бы сложнее с традиционными «тюрьмами» SQL.Я призываю вас поискать в Google слова «unix», «manis» и «shaffer», чтобы понять, что я имею в виду.

Если я правильно помню, это относится к типам баз данных, которые не обязательно соответствуют реляционной форме.На ум приходят базы данных документов, базы данных без определенной структуры и не использующие SQL в качестве специального языка запросов.

Как правило, он лучше подходит для веб-приложений, которые полагаются на производительность базы данных и не нуждаются в более продвинутых функциях Relation Database Engines.Например, хранилище ключей->значений, обеспечивающее простой запрос по интерфейсу идентификатора, может быть в 10–100 раз быстрее, чем соответствующая реализация SQL-сервера, с меньшими затратами на обслуживание разработчика.

Одним из примеров является это бумага для ОЛТП Tuple Store, в котором транзакции приносились в жертву ради однопоточной обработки (нет проблем с параллелизмом, поскольку параллелизм не разрешен) и хранились все данные в памяти;достижение производительности в 10-100 раз выше по сравнению с аналогичным СУБД управляемая система.По сути, он отходит от взгляда «Один размер подходит всем» на SQL и системы баз данных.

На практике NoSQL — это система баз данных, которая поддерживает быстрый доступ к большим двоичным объектам (документам, файлам JPG и т. д.) с использованием стратегии доступа на основе ключей.Это отход от традиционного доступа SQL, который подходит только для буквенно-цифровых значений.Традиционный SQL ограничивается не только внутренним хранилищем и стратегией доступа, но также синтаксисом и ограничениями формата отображения.BLOB-реализации традиционных реляционных баз данных также страдают от этих ограничений.

За кулисами это косвенное признание неспособности модели SQL поддерживать любую форму OLTP или поддержку новых форматов данных.«Поддержка» означает не только хранение, но и возможности полного доступа — программные и по запросам с использованием стандартной модели.

Энтузиасты реляционных технологий поспешили изменить определение NoSQL с Not-SQL на Not-Only-SQL, чтобы сохранить SQL в поле зрения!Это нехорошо, особенно когда мы видим, что большинство Java-программ сегодня прибегают к отображению ORM базовой реляционной модели.Новая концепция должна иметь четкое определение.В противном случае это будет похоже на SOA.

В основе систем NoSQL лежит случайная пара ключ-значение.Но это не ново.Традиционные системы баз данных, такие как IMS и IDMS, поддерживали хешированные произвольные ключи (без использования какого-либо индекса) и поддерживают до сих пор.Фактически, в IDMS уже есть ключевое слово NONSQL, с помощью которого они поддерживают доступ SQL к своей старой сетевой базе данных, которую они назвали NONSQL.

Это как джакузи:одновременно бренд и общее название.Это не просто конкретная технология, а скорее конкретная тип технологий, в данном случае речь идет о крупномасштабных (часто разреженных) «базах данных», таких как Google BigTable или CouchDB.

NoSQL реальная программа выглядит как реляционная база данных, реализованная на awk с использованием плоских файлов на серверной стороне.Хотя они и заявляют: «NoSQL по сути не имеет произвольных ограничений и может работать там, где другие продукты не могут.Например, нет ограничений на размер поля данных, количество столбцов или размер файла», я не думаю, что это крупномасштабная база данных будущего.

Как говорит Джоэл, массово масштабируемые базы данных, такие как Большой стол или HBase, гораздо интереснее.GQL — это язык запросов, связанный с BigTable и App Engine.В значительной степени SQL изменен, чтобы избежать функций, которые Google считает узкими местами (например, объединений).Однако я раньше не слышал, чтобы это называлось «NoSQL».

NoSQL — это система баз данных, которая не использует строковые SQL-запросы для получения данных.

Вместо этого вы создаете запросы, используя предоставляемый ими API, например Amazon DynamoDB — хороший пример базы данных NoSQL.

Базы данных NoSQL лучше подходят для больших приложений, где важна масштабируемость.

Означает ли NoSQL нереляционную базу данных?

Да, NoSQL отличается от СУБД и OLAP.Он использует более свободные модели согласованности, чем традиционные реляционные базы данных.

Модели согласованности используются в распределенных системах, таких как распределенные системы с общей памятью или распределенное хранилище данных.

Как это работает внутри?

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

Он может работать со структурированными и неструктурированными данными.Он использует коллекции вместо таблиц.

Как вы запрашиваете такую ​​«базу данных»?

Смотреть SQL против NoSQL:Битва серверов;это все объясняет.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top