Что нужно учитывать при выборе между MySQL и Amazon SimpleDB для приложения RoR?
-
03-07-2019 - |
Вопрос
Я только начинаю исследовать возможность использования сервиса Amazon SimpleDB в качестве хранилища данных для приложения RoR, которое я планирую создать. Мы будем использовать EC2 для веб-сервера и планировали также использовать EC2 для серверов MySQL. Но теперь вопрос, почему бы не использовать SimpleDB?
Приложение (в случае успеха) должно быть очень масштабируемым с точки зрения количества поддерживаемых пользователей, должно будет поддерживать простую и эффективную базу кода и должно быть надежным.
Мне любопытно, что думают сообщества SO по этому поводу.
Решение
Библиотека Ruby SimpleDB не такая полная, как ActiveRecord (адаптер по умолчанию для Rails DB), поэтому многие функции, к которым вы привыкли, не будут доступны.
С другой стороны, он не имеет схемы, масштабируется и хорошо работает с ec2.
Если вы собираетесь делать такие вещи, как полнотекстовый поиск в своем приложении, тогда SimpleDB может оказаться не лучшим выбором, придерживайтесь AR + sphinx.
Другие советы
Ну, учитывая, что простая БД не использует SQL или даже не имеет таблиц, это означает, что это совершенно другой зверь, чем MySQL и другие вещи на основе SQL ( http://aws.amazon.com/simpledb/ ). Нет никаких ограничений, триггеров или объединений. Удачи.
Вот один из способов его запуска и запуска: http://developer.amazonwebservices.com/connect/entry.jspa?externalID= 1242 (через http://rubyforge.org/projects/aws-sdb/ ) р>
Полагаю, если вам никогда не понадобится запрашивать данные вне рельсов, тогда SimpleDB может оказаться в порядке. Но поскольку это не первоклассная поддерживаемая БД, вы, вероятно, столкнетесь с ошибками, которые трудно исправить. Я бы не хотел запускать приложение для рабочих рельсов в бета-версии с полубета.
Для меня это выглядит так: "Эй, есть эти замечательные инструменты, я должен пойти создать проект, используя их", " а не на самом деле нужно использовать эти конкретные инструменты. Может быть, я просто крэбби, но это похоже на классический случай преждевременной оптимизации. Вы пытаетесь использовать внешнюю службу, которая стоит денег для приложения, которое еще даже не написано, и вы не говорите, что у вас есть гарантированная аудитория или такая, которая обязательно масштабируется до уровня, который этого требует. р>
" Приложение (в случае успеха) должно быть очень масштабируемым с точки зрения количества поддерживаемых пользователей, серьезно, что описывает половину Интернета. Это «в случае успеха» часть, это действительно вопрос. Просто сконцентрируйтесь на создании приложения быстро и легко. Самый простой способ сделать это - просто использовать ROR, так сказать, из коробки. Соедините его с базой данных, используйте ActiveRecord и создайте что-нибудь интересное для пользователей.
На самом деле, я пойду дальше и скажу, что EC2 довольно дорог для всегда на серверах. Разверните его на Slicehost или другом размещенном решении, а затем перенесите его в EC2, если это необходимо для поддержки спроса. Р>
Я сам очень заинтересован в этой теме. Прямо сейчас я нахожусь на высоком уровне облачных вычислений, поэтому я бы сказал, пойти с SimpleDB, поскольку он, вероятно, будет лучше масштабироваться в том смысле, что у вас будет высокая доступность, но это только мои мысли на данный момент. Еще не из опыта.
Редактировать. Это правда, что SimpleDB не имеет нормальных функций, а "нормальных" базы данных, но это должно сработать, если вам нужен только простой слой CRUD для работы, как в моем случае
Существует библиотека под названием SimpleRecord , которая представляет собой замену ActiveRecord, но использует SimpleDB в качестве своей внутреннее хранилище данных.