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

Почему ключевое значение пары noSQL db быстрее, чем традиционные реляционные БД

Мне было рекомендовано, чтобы я исследовал системы данных Key/Value для замены реляционной базы данных, которую я использовал.

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

Я полностью потерял точку?

4b9b3361

Ответ 1

Ключевым преимуществом реляционной базы данных является способность связывать и индексировать информацию. Большинство систем "NoSQL" не обеспечивают реляционную алгебру или отличный язык запросов.

Что вам нужно спросить себя, действительно ли переключение имеет смысл для моего предполагаемого использования?

Вы пропустили это. Дело в том, что иногда у вас нет индекса (так, как вы делаете с общей реляционной БД). Даже когда у вас есть индекс, способность связывать его вместе сложна и что реляционные базы данных превосходят. Решения NoSQL имеют ряд новых структур, которые делают многие операции упрощенными, например, Redis - это база данных, ориентированная на структуру данных, хорошо подходящую для быстрого создания чего-либо с очередями или их архитектурой pub-sub. MongoDB - это база данных документов произвольной формы, которая хранит документы как JSON (BSON) и превосходит их при быстром развитии. Решения BigTable немного менее структурированы, чем те, но расширяют идею строки, чтобы иметь семейства столбцов - пары ключевых значений, содержащиеся в каждой строке, эффективно организованной на диске. Вы можете создать инвертированный индекс поверх этого с помощью технологии ElasticSearch.

Не все требует гарантий согласованности или расположения дисков традиционной СУБД. Другим важным вариантом использования NoSQL является массивная масштабируемость, многие решения (например, BigTable - HBase/Cassandra) предназначены для масштабирования и масштабирования по горизонтали легко (не так просто с SQL!). Кассандра, в частности, не предназначена для SPOF. Кроме того, столбчатые хранилища данных предназначены для оптимизации скорости диска посредством последовательных чтений (и уменьшения усиления записи). При этом, если вам это действительно нужно, традиционный SQL-сервер обычно достаточно хорош.

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

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

Я не знаю, хорошо ли ваши научные данные подходят для большинства реализаций NoSQL, которые зависят от данных. Если вы посмотрите на HBase или Cassandra, это вполне может удовлетворить потребности ученого (с правильным дизайном rowkey - отметка времени не должна быть первой, проверьте OpenTSDB). Я знаю многих компаний, которые хранят показания датчиков в Кассандре, используя разделитель произвольного порядка и UUID датчика для свертывания показаний в ежедневные жировые ряды. Каждый день новые базы данных создаются вокруг конкретных случаев использования, поэтому ответ может измениться. Для конкретных случаев использования вы можете получить огромные вознаграждения за использование конкретных хранилищ данных за счет гибкости и инструментов.

Ответ 2

Эффективность исходит из трех основных областей:

  • В базе данных гораздо меньше функций: нет концепции объединения и уменьшения или отсутствия требований к целостности транзакций. Меньшая функция означает, что меньше работы означает быстрее, на стороне сервера, по крайней мере.
  • Еще один принцип проектирования заключается в том, что хранилище данных живет в облаке серверов, поэтому ваш запрос может иметь несколько респондентов. Эти системы также утверждают, что многосерверная система улучшает отказоустойчивость посредством репликации.
  • Он полностью совместим с модным словом, используя кучу идей и описаний, которые еще не были полностью изобретены. Например, Amazon в настоящее время предоставляет свои услуги, чтобы лучше понять, как люди могут их использовать и получить некоторый опыт для уточнения спецификации.

На мой взгляд, кто-то, приходящий к вам с требованием, чтобы "наши новые данные были слишком большими для нашей РСУБД", должен либо иметь номера, чтобы поддержать это утверждение, либо признать, что они просто хотят попробовать новое блестящее. Является ли noSQL несерьезным? Возможно нет. Он собирается превратить мир в обратную сторону, когда Java 1.0 был взломан? Наверное, нет.

Нет никакого вреда в расследовании новых вещей, просто не ставьте ферму на них в пользу 50-летней, устоявшейся, хорошо понятной технологии.

Ответ 3

Здесь я предполагаю, что вы хотите оптимизировать один конкретный запрос, который просто ищет запись по ключу. Одним из примеров этого может быть поиск записи userinfo по имени пользователя. Для некоторых систем такой запрос должен быть невероятно быстрым, а все остальные запросы несущественны.

Самым большим фактором производительности базы данных будет количество операций ввода-вывода, необходимых для чтения/записи данных. В большинстве систем баз данных используются аналогичные структуры данных (т.е. B-деревья), которые могут извлекать нераскрытые данные в O/log (n)) I/O. Чтобы дать долговременные обновления, данные должны быть записаны на диск: большинство систем выполняют это последовательно, что является самым быстрым способом.

Итак, где можно сохранить эффективность хранилища ключей?

  • Ненормированные данные. Ввод всех данных в одну строку означает отсутствие объединений.
  • Низкие затраты на процессор. Хранилище с ключом позволяет избежать затрат ЦП на обработку/оптимизацию запросов, проверку безопасности, проверку ограничений и т.д.
  • Легче иметь хранилище в процессе (в отличие от сервера SQL, работающего как отдельная служба), это устраняет накладные расходы IPC.

Большинство систем РСУБД построены поверх того, что похоже на хранилище ключей, поэтому вы можете рассматривать это как вырезание посредника.

Ответ 4

Есть много хороших наблюдений выше, а иногда и слишком много страсти с обеих сторон обоих сторонников. Вернитесь к своему первоначальному вопросу. Предположим, вы делаете дизайн на Cassandra и делаете идентичный дизайн на РСУБД. Скажем, у вас есть набор пар KV в Кассандре, и идите и выполните идентичный набор пар KV на реляционном. (Фактически это можно сделать - скажем, как полностью денормализованная пара значений имени в реляционном). Тем не менее, реляционная будет работать медленнее просто из-за накладных расходов реляционной СУБД - регистрации, доступа к каталогам, проверки целостности, атомарности транзакций и т.д. Кроме того, в хранилище данных семейства столбцов данные лексиграфически сортируются; это не относится к реляционным. Я считаю, что некоторые из социальных сетей сделали это, они построили одинаковые структуры для обоих, но реляционная была медленнее. Важно помнить, что после того, как пользователь запросит базу данных продукта, посмотрит, кто купил то или иное, строит свою корзину покупок и их список желаний, все из которых будут выполняться на NOSQL, когда пользователь нажимает кнопку выписки, транзакция будет выполняться в реляционной базе данных. Почему мы не можем так называемые эксперты понять, что это не одно и не другое в этой дискуссии по базе данных, а скорее то, что есть место для реляционных отношений, так как для NOSQL, графа, инвертированных баз данных столбцов, многомерных и т.д. И даже файлы.