Как быстро работает БД на основе документов? - PullRequest
9 голосов
/ 11 января 2012

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

Теперь все эти базы данных NoSQL поступили, и я прочитал о том, что они намного быстрее, чем MySQl и другие, и они основаны на документах.Может ли кто-нибудь помочь мне понять эту теорию?Если каждая запись является документом (FILE), то как это так хорошо с точки зрения производительности?Недавно я читал о парне, который использовал Redis в проекте и сказал, что он переключился на MongoDB и у него лучшие результаты, чем у Redis (я понимаю, что сравниваю Cache с БД, но это не реальный вопрос, яХотите знать, как решение на основе документов быстрее, чем решения без документов?)

Ответы [ 6 ]

4 голосов
/ 11 января 2012

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

Только на основе документов означает, что база данных хранит данные в пакетах (например, на листах бумаги, где каждый лист представляет собой набор данных, и вы можете свободно писать на него) вместоочень специфическая структура, такая как таблица.

http://en.wikipedia.org/wiki/Document-oriented_database

А, и почему они могут быть быстрее, чем redis:
Допустим, вам нужно хранить некоторыелинейная информация в наборе (т. е. не каждый набор данных выглядит одинаково, и вы получили разные типы данных в одном наборе. В Redis вы можете хранить только пары ключ-значение, поэтому вам нужно будет связать их вместе с набором в вашем собственном коде / реализации).В базе данных NoSQL это обрабатывается для вас базой данных (возможно) гораздо более оптимизированным способом:)

2 голосов
/ 11 января 2012

Говорят, что NoSQL может быть подвержен недопониманию, поскольку некоторые концепции будут использовать имена, которые имеют значение, отличное от традиционного:

  • На основе файлов не означает (обязательно),то, что хранилище данных будет записывать каждую запись в файл - это означает, что записи в хранилище данных не должны будут соответствовать предопределенной схеме полей определенного типа данных.Думайте о «файле» как о чем-то вроде XML, JSON или друзей.
  • Выигрыш в производительности (большинства) хранилищ данных NoSQL достигается по цене: обычно хорошо понимаемые обещания ACID торгуются на основе более слабой модели согласованности.*
  • Сила реляционных баз данных SQL во многом объясняется тем фактом, что любой запрос может быть написан для существующей схемы.Это не всегда верно для хранилищ данных NoSQL: в самой экстремальной версии доступ к записи возможен только через идентификатор записи.
  • Большинство хранилищ данных NoSQL масштабируются намного лучше, чем типичная реляционная база данных - они являются ответомна вопрос «Чему мы должны пожертвовать из хорошо понятной реляционной БД», чтобы преодолеть пределы масштабирования »
1 голос
/ 11 января 2012

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

В течение нескольких десятилетий реляционные базы данных были единственной игрой в городе.Многие системы на основе SQL платят двойной налог на производительность: один раз за полный набор функций ACID (который им, вероятно, в любом случае не нужен), а затем снова вводят данные своих доменов в модель реляционных таблиц.

Кроме того, одной из общих черт большинства баз данных NoSQL является то, что они проще , поскольку они более специализированы, чем подход "общего случая" базы данных SQL.Это означает меньше логики / кода, который должен выполняться для каждой операции, более простые структуры данных (которые могут потребовать меньшего количества операций ввода-вывода) и в целом - меньше накладных расходов, лучшая производительность.

0 голосов
/ 23 февраля 2019

Одним из факторов, которые делают db на основе документов быстрее, чем реляционные, является Населенный пункт .

Документы являются независимыми единицами :: что повышает производительность (связанные данные считываются непрерывно с диска) и облегчают распределять данные между несколькими серверами, сохраняя их локальность.

База данных документа

0 голосов
/ 11 января 2012

Чтобы получить представление, рассмотрите следующее:

  • с MongoDB вы разработали бы свою схему таким образом, чтобы в одном документе содержалось все необходимое для отображения страницы.
  • с MySQL (или любой другой СУБД) вы нормализуете данные и разбиваете их на множество таблиц.Чтобы отобразить одну и ту же страницу, вам нужно выполнить много SQL-запросов.

Хотя этот монго-запрос может быть медленнее, чем один запрос MySQL, сравнение 1 монго-запроса с 100 запросами MySQL будет намного быстрее.

0 голосов
/ 11 января 2012

Во-первых, вы не можете сравнивать БД NoSQL с БД в памяти. БД NoSQL предназначены для данных, которые не помещаются в памяти.

Теперь, что касается БД NoSQL, они не просто файлы, у них есть индексы, которые обеспечивают быстрый доступ к смещениям в файлах, и именно там скорость действительно есть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...