@ Xeoncross
Я построил свои схемы так, чтобы они не требовали операций соединения, что оставило меня с помощью простого поиска по индексированным столбцам int.Другими словами, столбцы находятся в оперативной памяти, и через них можно быстро проверить значение (ГДЕ user_id IN (12,43,5,2) или revision = 4)
Хорошо, тогда вам понравитсяMongoDB.MongoDB поддерживает индексы, так что вы можете индексировать user_id и revision, и этот запрос сможет возвращаться относительно быстро.
Однако обратите внимание, что многие базы данных NoSQL поддерживают только поиск ключей и не обязательно поддерживают «вторичные индексы», поэтомуВы должны сделать домашнее задание по этому вопросу.
Поэтому я пытаюсь представить, как в мире просмотр каждой строки в базе данных может считаться приемлемым (если действительно так оно и работает).).
Хорошо, если вы выполняете запрос в базе данных на основе SQL, и у вас нет индекса, база данных будет выполнять сканирование таблицы (, т. Е. Просматривая каждую строку * 1018).*).
Они выполняют поиск по каждой записи и передают ее в написанную вами функцию JavaScript, которая вычисляет, какие результаты должны быть возвращены, просматривая каждую из них.
Итакна практике большинство баз данных NoSQL поддерживают это.Но, пожалуйста, никогда не используйте его для запросов в реальном времени.Эта опция в первую очередь предназначена для выполнения операций уменьшения карты, которые используются для суммирования данных.
Вот, возможно, другой подход к NoSQL.SQL действительно хорош в реляционных операциях, однако реляционные операции не очень хорошо масштабируются.Вместо этого многие из NoSQL сосредоточены на концепциях Key-Value / Document-ориентированных.
SQL работает при условии, что вы хотите, чтобы нормализованные неповторяющиеся данные и что вы собираете эти данные в больших наборах.NoSQL работает, исходя из того, что вам нужны быстрые запросы для определенных «кусков» данных, но вы готовы ждать данных, зависящих от «больших наборов» (запуск карты-сокращения в фоновом режиме).
Это большой компромисс, но если он имеет большой смысл в современных веб-приложениях.Большую часть времени тратится на загрузку одной страницы (запись в блоге, запись в вики, вопрос SO), и большая часть данных действительно привязана к этому элементу или «зависает» на нем.Таким образом, концепция захвата всего, что вам нужно, одним запросом с горизонтальным масштабированием действительно полезна.
Это не решение для всего, но это действительно хороший вариант для многих случаев использования.