#mongodb #amazon-simpledb
#mongodb #amazon-simpledb
Вопрос:
Достаточно ли прост переход с SimpleDB на MongoDB? Есть ли что-нибудь, на что я должен обратить внимание? Есть ли какие-либо ограничения?
Ответ №1:
Джонни, гейт затронул все основные моменты, я просто добавляю сюда несколько актуальных тем, которые, надеюсь, помогут вам быстрее решить, хотите вы это делать или нет:
- Вы используете SimpleDB, потому что не хотите быть администратором сервера, восстанавливать потерянный сервер, запускать резервные копии, обеспечивать работоспособность конфигураций Master / Slave и / или покупать дополнительное оборудование для запуска базы данных.
- Если вы используете Mongo, вам придется все это делать (если вы не пойдете по маршруту MongoHQ), но гибкость и потенциально высокая скорость … здесь есть большое «это зависит».
- SimpleDB имеет очень простую (только строки) модель хранения и запросов; если ваши данные / варианты использования просты, это подходит.
- SimpleDB удивительно хорошо масштабируется по горизонтали (тысячи запросов одновременно), но по вертикали он довольно медленный. Итак, если вы планируете, что несколько пользователей будут запрашивать bejesus из вашего хранилища данных, подумайте о чем-то другом; циклические переходы в SimpleDB и из SimpleDB будут суммироваться. Но если вы пытаетесь создать следующий Twitter и вам нужно обслуживать сотни / тысячи пользователей по горизонтали, SimpleDB обеспечит вам одинаковую производительность при всех подключениях независимо.
- Масштабирование по горизонтали с помощью Mongo очень надежное… но это также означает, что это может быть сложным (помимо Master / Slave, что довольно просто). Наборы реплик и арбитры должны войти в ваш словарь … подумайте, хотите ли вы этого.
- Модель запросов Mongo настолько близка к SQL, насколько это возможно с хранилищем данных NoSQL; она очень богатая.
- Mongo нравится быть единственной службой на аппаратном обеспечении; если вы можете использовать мощное оборудование в Mongo, оно работает как мечта.
- Если вы используете mongo, вам НЕОБХОДИМО запустить как минимум два экземпляра на разных машинах. Если вы этого не сделаете, он будет работать нормально, пока этого не произойдет… и тогда ваш мир растает. Если вы сделаете это, и произойдет сбой сервера, другой сервер автоматически заменит вас.
Итак, я думаю, если бы мне пришлось подвести итог всему этому:
- Используйте SimpleDB, если вы не хотите играть в администратора сервера и не возражаете против более простой модели запросов.
- Используйте MongoDB, если вы не возражаете быть внимательным администратором с хорошими привычками и / или вам нужны возможности сложных запросов.
Надеюсь, это поможет.
Ответ №2:
Я предполагаю, что они оба являются хранилищами документов.
Итак, SimpleDB — это размещенное хранилище данных с API REST / SOAP для манипулирования данными. MongoDB — это механизм хранения данных, который вы запускаете на своем собственном оборудовании. Он использует серию команд BSON для манипулирования данными, но большинство пользователей используют один из поддерживаемых драйверов.
Вещи, которые будут другими:
- Конфигурация (вам понадобятся серверы)
- Обслуживание
- Клиентский код: вам нужно запускать с драйвером, ваши запросы, вероятно, отличаются
- Индексы
- Подкачка
- Возможно, структуры данных (разные инструменты запроса)
- Сопоставление / уменьшение (выполняется на Javascript с помощью MongoDB)
Вещи, которые будут такими же:
- Данные: они оба являются хранилищами документов и должны быть способны обрабатывать одни и те же базовые данные
Теоретически, вы можете просто выгрузить свои данные из SimpleDB в MongoDB, но определенно потребуется некоторая работа с другими движущимися частями ваших данных.
При всем сказанном я настоятельно рекомендую вам протестировать MongoDB, поскольку вы можете обнаружить, что он обеспечивает экономические преимущества по сравнению с SimpleDB.
Комментарии:
1. Хороший момент, я планирую использовать его в качестве серверной части для моего приложения для iphone, но время обновления ios повлияет на обновление драйвера, если позже я решу переключиться, вероятно, тогда попробую MongoDB. Спасибо.
2. Если вы планируете подключаться из своего приложения для iPhone напрямую к MongoDB (или любому другому хранилищу данных, если уж на то пошло), вам следует пересмотреть свой подход. Как вы будете реализовывать аутентификацию? Проверка данных? Контроль доступа? На мой взгляд, независимо от того, какое серверное хранилище вы используете, вам нужен «средний уровень» (веб-приложение с OAuth или HTTP Digest / SSL прекрасно подойдет) для обеспечения соблюдения ограничений вашего приложения.