Я хочу использовать базу данных NoSQL для Windows Azure, и объем данных будет очень большим. Является ли хранилище Azure Table или база данных MongoDB, работающая с использованием роли "Рабочий", может обеспечить лучшую производительность и масштабируемость? Кто-нибудь использовал MongoDB на Azure, используя роль Рабочего? Поделитесь своими мыслями об использовании MongoDB на Azure над хранилищем таблиц Azure.
Таблица Azure против MongoDB на Azure
Ответ 1
Хранилище таблиц - это основная функция хранения Windows Azure, предназначенная для масштабирования ( 100TB 200TB 500 Тбайт на одну учетную запись), долговечная (трехкратно реплицированная в центре обработки данных, опционально геореплицируется в другой центр данных) и схематично (каждая строка может содержать любые свойства, которые вы хотите). Строка расположена ключом раздела + ключ строки, обеспечивая очень быстрый поиск. Весь доступ к хранилищу таблиц осуществляется через четко определенный REST API, который можно использовать на любом языке (с SDK, построенным поверх API REST, уже установленным для .NET, PHP, Java, Python и Ruby).
MongoDB - это документально-ориентированная база данных. Чтобы запустить его в Azure, вам нужно установить MongoDB на роли веб-/рабочих или виртуальную машину, указать на облачный накопитель (таким образом, на букву диска) или подключенный диск (для Windows/Linux Virtual Machines), необязательно включить ведение журнала (который я бы рекомендовал), и, возможно, определить внешнюю конечную точку для вашего использования (или получить доступ к ней через виртуальную сеть). Кстати, облачный диск/прикрепленный диск фактически хранится в Azure Blob, что дает вам такую же долговечность и георепликацию, что и Azure Tables.
При сравнении этих двух, помните, что хранилище таблиц является хранилищем как услуга: вы просто обращаетесь к хорошо известной конечной точке REST. С MongoDB вы несете ответственность за ведение базы данных (например, всякий раз, когда MongoDB Inc (ранее 10gen) выталкивает новую версию MongoDB, вам необходимо обновить свой сервер соответственно).
Что касается альфа-версии MongoDB Inc, на которую указывает jtoberon: если вы внимательно посмотрите на нее, вы увидите несколько ключевых моментов:
- Настройка выполняется для автономного экземпляра mongodb без наборов реплик или черепов. Что касается наборов реплик, вы все равно получаете несколько преимуществ, используя автономную версию, из-за того, как работает хранилище Blob.
- Чтобы обеспечить высокую доступность, вы можете запускать несколько экземпляров. В этом случае только один экземпляр обслуживает базу данных, а другой - "теплый резерв", который запускает процесс mongod, как только другой экземпляр выходит из строя (для перезагрузки технического обслуживания, сбоя оборудования и т.д.).
В то время как 10gen-оболочка Windows Azure по-прежнему считается "альфа", mongod.exe нет. Вы можете запустить mongod exe так же, как вы запускаете любой другой exe файл Windows. Это всего лишь код управления вокруг запуска, и то, что демонстрирует реализация alpa.
РЕДАКТИРОВАТЬ 2011-12-8: Это уже не в альфа-состоянии. Вы можете загрузить последний проект MongoDB + Windows Azure здесь, который обеспечивает поддержку набора реплик.
Для производительности я думаю, вам нужно будет провести бенчмаркинг. Сказав это, рассмотрим следующее:
- При доступе к хранилищу таблиц или MongoDB, скажем, к веб-роли, вы все еще обращаетесь к системе хранения Windows Azure.
- MongoDB использует много памяти для собственного кеша. По этой причине множество высокомасштабных систем MongoDB развернуты для большего размера экземпляров. Для доступа к хранилищу таблиц у вас не будет одинакового размера памяти.
РЕДАКТИРОВАТЬ 7 апреля 2015 г. Если вы хотите использовать базовую базу данных как услугу, Azure теперь предлагает DocumentDB.
Ответ 2
Я использовал оба.
Таблицы Azure: мертвые просто, быстро, очень сложно писать даже простые запросы.
Mongo: работает хорошо, много возможностей для запросов, требует нескольких экземпляров, чтобы быть надежным.
В двух словах, если ваши запросы действительно просты (key- > value), вы должны провести сравнение затрат (в основном, количество транзакций против хранилища и стоимость размещения Mongo on Azure). Я бы предпочел пойти в хранилище таблиц для этого. Если вам нужны более сложные запросы и вы не хотите идти в SQL Azure, Монго, скорее всего, ваш лучший выбор.
Ответ 3
Я понимаю, что этот вопрос датирован. Я хотел бы добавить следующую информацию для тех, кто может найти этот вопрос в своих поисках.
Обратите внимание, что теперь MongoDB предлагается как полностью управляемая услуга Azure. (официально в Beta по состоянию на 15 апреля)
См: http://www.mongodb.com/partners/cloud/microsoft или https://azure.microsoft.com/en-us/blog/announcing-new-mongodb-instances-on-microsoft-azure/
См. (включая ценообразование): https://azure.microsoft.com/en-us/marketplace/partners/mongolab/mongolab/
Ответ 4
Мой первый выбор - AzureTables, потому что модель SAAS и низкая стоимость и SLA 99,99%
http://alexandrebrisebois.wordpress.com/2013/07/09/what-if-20000-windows-azure-storage-transactions-per-second-isnt-enough/
некоторые ограничения..
http://msdn.microsoft.com/en-us/library/windowsazure/jj553018.aspx
http://www.windowsazure.com/en-us/pricing/calculator/?scenario=data-management
или AzureSQL для малого бизнеса
DocumentDB http://azure.microsoft.com/en-us/documentation/services/documentdb/ http://azure.microsoft.com/en-us/documentation/articles/documentdb-limits/
второй выбор - многие облачные провайдеры, включая Amazon, предлагают S3
или таблицы Google https://developers.google.com/bigquery/pricing
nTH выбор управлять SHOW сам по себе не спит MongoDB хорошо, я снова посмотрю первые два SAAS
Мой выбор, если я запускаю "CLOUD", я поеду на модель SAAS как можно больше "RENT-IT"...
Вопрос в том, что нужно моему приложению - это AzureTables или DocumentDB или AzureSQL
Документация DocumentDB
http://azure.microsoft.com/en-us/documentation/services/documentdb/
Как работает цена Azure http://azure.microsoft.com/en-us/pricing/details/documentdb/
Это весело http://www.documentdb.com/sql/demo
Ответ 5
Выше ответов все хорошо - но реальный ответ зависит от ваших требований. Вам нужно понять, какой размер данных вы обрабатываете, какие типы операций вы хотите выполнять над данными, а затем выбрать решение, соответствующее вашим потребностям.
Ответ 6
На Build 2016 было объявлено, что DocumentDB будет поддерживать все драйверы MongoDB. Это решает некоторые проблемы с инструментами в DocDB, а также упрощает миграцию приложений Mongo.
Ответ 7
Следует помнить, что Azure Table Storage не поддерживает сложные типы данных. Он поддерживает каждое свойство в сущности как строку или число, логическое значение или дату и т.д. Нельзя хранить объект против ключа, который, по моему мнению, необходим для базы данных NoSql. https://docs.microsoft.com/en-us/rest/api/storageservices/fileservices/understanding-the-table-service-data-model выделите Типы свойств