Есть ли веб-сайты электронной коммерции, которые используют базы данных NoSQL [закрыто]
Я много читал в последнее время о базах данных "NoSQL", таких как CouchDB, MongoDB и т. д. Большинство веб-сайтов, которые я видел, используя это в основном текстовые веб-сайты, такие как The New York Times и Source forge.
Мне было интересно, можете ли вы применить это к веб-сайтам, где оплата является огромной проблемой. Я думаю о следующих вопросах:
- как хорошо вы можете обеспечивать данные
- эти системы обеспечивают простое резервное копирование/восстановление механизм
- как обрабатываются транзакции commit / rollback
Я прочитал следующие статьи, которые охватывают некоторые аспекты:
- могу ли я делать транзакции и блокировки в CouchDB?
- Плюсы / Минусы базы данных на основе документов против реляционной базы данных
в этих сообщениях аспект транзакций, если он охвачен. Однако вопросы безопасности и резервного копирования не рассматриваются. Может кто-то пролить немного света на эту тему?
и если возможно, кто-нибудь знает о некоторых веб-сайтах электронной коммерции, которые успешно внедрили базу данных на основе документов.
8 ответов:
редактировать: март 2013
Я изначально разместил ссылку на статью, которую я написал на MongoDB и электронной коммерции, но я больше не согласен со всеми пунктами, которые я сделал там. Я по-прежнему считаю, что модель данных документа MongoDB может очень хорошо работать для управления каталогом сайта электронной коммерции и, возможно, для торговых тележек. Но есть явные случаи, когда транзакции важны, и MongoDB не дает вам их. Ответ на этот вопрос со следующим-наибольшим числом голосование делает много моментов, которые стоит рассмотреть.
вот оригинальная статья для тех, кто заинтересован:
http://kylebanker.com/blog/2010/04/30/mongodb-and-ecommerce/ (archive.org ссылка)
накладные расходы, которые делают СУБД настолько медленными, гарантируют атомарность, согласованность, изоляцию, долговечность, также известную как кислоты. Некоторые из этих свойств довольно важны для приложений, которые имеют дело с деньгами. Вы же не хотите потерять ни одного заказа, когда погаснет свет.
базы данных NoSQL обычно жертвуют некоторыми или всеми свойствами ACID в обмен на значительное снижение накладных расходов. Для многих приложений, это нормально, если несколько "Диггс" пропадают, когда свет гаснет, ничего страшного.
для сайта электронной коммерции, вы должны спросить себя, что вам действительно нужно.
- вам действительно нужен уровень производительности, который не может обеспечить СУБД?
- вам нужна надежность, которую обеспечивает СУБД?
честно говоря, ответ на #2, Вероятно," да", что исключает большинство решений NoSQL. И если вы не имеете дело с уровнями трафика, сопоставимыми с amazon.com ' s, РСУБД, даже на скромное оборудование, вероятно, удовлетворит ваши потребности в производительности просто отлично, особенно если вы ограничиваете себя простыми запросами и правильно индексируете. Что делает ответ на #1 "нет".
вы может тем не менее, рассмотрите возможность использования СУБД для данных транзакций и базы данных NoSQL для некритических данных, таких как страницы продуктов, отзывы пользователей и т. д. Но тогда у вас будет в два раза больше программного обеспечения хранилища данных для установки, и любые отношения между данными в двух хранилищах данных будут нужно управлять в коде - не было бы никакого присоединения к вашей базе данных NoSQL против вашей СУБД. Это, вероятно, приведет к ненужному уровню сложности.
в конце концов, если РСУБД предлагает функции, которые вы должны иметь для надежности, и он выполняет приемлемо для тех видов нагрузки, которые вы будете испытывать, РСУБД, вероятно, лучший выбор.
обработка финансовой информации является одной из областей, где SQL действительно является правильным инструментом для работы. Большинство систем NOSQL были разработаны для улучшения масштабируемости путем принятия более высокого риска потери или несогласованности данных. Они также, как правило, имеют ограниченные возможности для запуска отчетов по всем записям, так как на типичном большом веб-сайте вам нужно только достаточно данных в индексе, чтобы найти и отобразить одну запись - остальные могут быть полностью недоступны, пока вы не узнаете запись, которую вы ищете для.
при работе с деньгами любая несогласованность данных является большой проблемой, и если вам нужно больше масштабируемости, чем может дать вам один sql-сервер, у вас достаточно денег, чтобы вы могли позволить себе более высокую стоимость масштабирования sql. Кроме того, специальная отчетность, доступная из sql,-это то, что вы пропустите, если вы не используете sql - почти любая информация, которую вы хотите о истории продаж, тривиальна для получения из sql, но потенциально требует сложного пользовательского кода из объектного хранилища.
Я не думаю, что безопасность будет отличаться в базе данных NoSQL, чем в реляционной базе данных. В конце концов, безопасность-это ортогональный вопрос о том, как на самом деле хранятся данные. Кроме того, это не похоже на то, что вы разрешили бы доступ к базе данных с чего-либо, кроме ваших серверов бизнес-уровня с точки зрения сети.
Что касается резервных копий, большинство баз данных NoSQL, которые я знаю, позволяют создавать горячие резервные копии, как и обычная база данных.
реальный вопрос, ИМО, является ли вы можете жить с ограничениями, которые база данных NoSQL накладывает на вас - в частности, общее отсутствие специальных запросов. Например, если вы когда-либо хотели знать всех людей, которые когда-либо покупали продукт "X", вам нужно было бы встроить в свой уровень доступа к данным счетчик для этого с первого дня (или запустить очень дорого последовательный поиск все последние транзакции). В обычной базе данных SQL, вы можете просто добавить индекс и сделать запрос и все готово (или даже, не добавить индекс, если это одноразовый). Или, может быть, вы хотите узнать всех людей, которые купили продукт "Y" до выхода последней версии (так что вы можете отправить им напоминание об обновлении или что-то еще): опять же, вы должны планировать это заранее с базой данных NoSQL, но это тривиально с реляционной базой данных.
Я думаю, что это имеет смысл, когда вы можете планировать свою схему и шаблон использования заранее, и где иногда повторное сканирование записей для добавления нового поля или метрики является приемлемым. Но для электронной коммерции сайт, я думаю, что специальные запросы просто слишком ценная функция, чтобы потерять. Конечно, это только мое мнение, и, конечно же, нет причин, по которым вы не могли бы смешивать-N-соответствующие части приложения между двумя базами данных. Я бы лично выберите реляционную базу данных с memcached между ними для дополнительной производительности, хотя...
вы, ребята, должны проверить это:
подтверждение репликации через getlasterror
MongoDB находится на грани обеспечения прочного пишет. Я думаю, что это основная проблема людей обсуждать эту тему Вт.Р.Т. деньги. Рабочая часть менее важна из-за вложенных функций документа.
Gilt.com использует Волдеморт для обработки корзины / инвентаря под огромной нагрузкой. См. эту презентацию из London QCon 2010 по деталям -http://www.infoq.com/presentations/Project-Voldemort-at-Gilt-Groupe
Я бы также повторил тот факт, что" NoSQL "не означает" нет SQL", но" не только SQL", и что вместо того, чтобы смотреть на любую технологию для полного rip/replace любого другого, вы должны смотреть на лучший инструмент для работы. Хранилища данных NoSQL не делают очень хорошие хранилища данных и, вероятно, не подходят для хранения пользовательских транзакций, но они очень хороши в определенных нишевых областях - см. Пример Gilt Groupe выше.
другим ярким примером является домашняя страница BBC-не транзакционная, но тем не менее интересная. Они используют CouchDB для хранения пользовательских настроек. К сожалению, они, кажется, разбились под нагрузкой.
[обновление: я также могу подтвердить, что Asos Marketplace использует некоторые компоненты NoSQL - http://bagcheck.com/bag/9206-asos-marketplace-technology ]
здесь куча коммерческих веб-приложений, которые используют MongoDB, которая является одной из наиболее популярных баз данных NoSQL.
http://www.mongodb.org/display/DOCS/Production + развертывания
Это не совсем сайты электронной коммерции как таковые, но многие из них являются аспектами NoSQL, от которых зависят предприятия. Я могу подтвердить, что ChatPast полностью сделано на MongoDB. Мы занимаемся электронной коммерцией, но это не загружено Chargify из-за проблем безопасности / обработки, а не бояться делать коммерцию на MongoDB.
Да,http://myestoreapp.com использует MongoDB для всего. Проверить это; не стесняйтесь стрелять по любым вопросам.