#node.js #mongodb #redis #database #nosql
#node.js #mongodb #redis #База данных #nosql
Вопрос:
Я работаю над веб-сайтом «реального времени», используя Nodejs. В настоящее время я использую Redis, потому что мне нужна высокая производительность для доступа на чтение. Доступы на запись на самом деле не имеют значения для моего варианта использования.
Кроме того, в Redis нет языка запросов для поиска. Итак, я создаю свои индексы вручную и использую некоторые объединения / пересечения /… чтобы найти некоторые значения.
Я думаю, что будет проще использовать MongoDB со встроенной системой поиска и ORM-подобной (Mongoose, например). Проблема в том, что я не уверен, что MongoDB — лучший выбор для моего использования.
Какие ваши советы по поводу базы данных NoSQL, которая мне нужна? Redis? CouchDB? MongoDB? Cassandra ? и т.д.
Я повторяю: я хочу иметь действительно хорошую производительность при доступе на чтение и при поиске (доступы на запись незначительны), максимально простую (orm-подобную? система поиска? и т.д.)
Спасибо.
Комментарии:
1. Проблема с вашим вопросом в том, что это полностью зависит от того, какой тип чтения. Например, если вы в основном объединяете и агрегируете, лучшим вариантом будет использовать старый добрый SQL с Memcached…
2. -2 по вопросу, а «проблема с вашим вопросом» и «бессмысленный» — это немного грубо. Желание узнать, какая база данных лучше по скорости доступа на чтение, чем на запись, не является плохим или бессмысленным вопросом. Лучшим комментарием было бы запросить детали, которые важны для принятия возможного решения, что делает его полезным не только для Sandro, но и для других, кто сталкивается с подобными случаями, зная, какие соображения наиболее важны при принятии такого решения.
3. Спасибо rossdavidh, я согласен с вами!
4. Я был бы очень заинтересован в этом ответе. 1
5. Ответы на подобные вопросы требуют многого. Согласованность данных, устойчивость к потере данных, соотношение # чтения и # записи, виды выполняемых поисков, требования соответствия ACID и т.д.; все это факторы. Честно говоря, мне приходится задаваться вопросом об ответах на некоторые из вопросов, которые я видел подобным образом, потому что кажется, что ответы, похоже, не затрагивают суть вопроса, но дают несколько хороших указаний. Я не говорю, что вопрос и ответы здесь плохие, но я еще не впечатлен сравнениями, которые я видел, и все же, безусловно, у каждой базы данных есть преимущества для разных сценариев.
Ответ №1:
Я считаю, что redis был бы лучшим решением по следующим причинам.
-
Вам требуется быстрый доступ на чтение, а redis предоставляет самое быстрое решение, поскольку ключи находятся в памяти, если не большинство.
-
Хотя mongodb проще запрашивать в общем случае, ваша проблемная область узка, и как только вы решите, как вы хотели бы запросить данные, вы можете установить правильные структуры данных и индексы на месте.
Ответ №2:
Я бы сказал, что Redis хорошо подходит для вашей базы данных, и вам следует обратить внимание на что-то вроде Solr или elasticsearch, чтобы обеспечить ваш поиск.
Ответ №3:
CouchDB будет работать лучше в среде с высокой нагрузкой на запись. Хотя я этим не пользуюсь. MongoDB будет работать лучше в среде с большим объемом чтения.
Для поиска и индексирования: MongoDB потребовал бы отдельного индекса для каждого из ваших критериев поиска для повышения производительности (по крайней мере, это то, что я помню).
Правильный индекс важен в MongoDB. И никаких объединений!!
Вот несколько ссылок, по которым вы могли бы пройти:
http://www.mongodb.org/display/DOCS/Comparing Mongo DB and Couch DB
http://www.snailinaturtleneck.com/blog/2009/06/29/couchdb-vs-mongodb-benchmark/
http://kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis
Надеюсь, это поможет вам найти правильную базу данных
Удачи