Amazon SimpleDB
Кто-нибудь считал, что использует что-то в соответствии с данными хранилища данных Amazon SimpleDB в качестве своей базы данных?
Хостинг SQL Server (по крайней мере, в Великобритании) стоит дорого, поэтому для создания приложений, которые могут расти с вашим приложением, может быть что-то подобное вместе с облачным хранилищем файлов (S3).
Великий в теории, но кто-нибудь подумает об использовании этого. Фактически, кто-то действительно использует его сейчас для реального программного обеспечения для производства, так как я бы хотел прочитать ваши комментарии.
Ответы
Ответ 1
Это хороший анализ услуг Amazon от Dare.
S3 обрабатывал то, что я обычно слышал, как "хранилище blob". Типичное веб-приложение обычно имеет мультимедийные файлы и другие ресурсы (изображения, стили CSS, скрипты, видеофайлы и т.д.), К которым просто обращаются по имени/пути. Однако многие из этих ресурсов также имеют метаданные (например, видеофайл на YouTube содержит метаданные об этом рейтинге, кто его загрузил, количество просмотров и т.д.), Которые также необходимо сохранить. Эта потребность в запрашиваемом, схематизированном хранилище - это место, где входит SimpleDB. EC2 предоставляет виртуальный сервер, который может использоваться для вычислений в комплекте с экземпляром локальной файловой системы, который не является постоянным, если по какой-либо причине виртуальный сервер пойдет на убыль. С SimpleDB и S3 у вас есть строительные блоки для создания большого класса приложений стиля "Web 2.0", когда вы бросаете вычислительные возможности, предоставляемые EC2.
Однако ни S3, ни SimpleDB не предоставляют решение для разработчика, который просто хочет, чтобы типичный опыт разработчиков LAMP или WISC в создании веб-приложения, управляемого базой данных, или для приложений, которые могут обладать специальными требованиями к хранению, которые не подходят аккуратно в ведра хранилища blob или схематичное хранение. Без доступа к постоянной файловой системе разработчикам на платформе облачных вычислений Amazon приходилось разрабатывать сложные решения, включающие резервное копирование данных вручную с EC2 на S3 для получения желаемого опыта.
Ответ 2
Я только что закончил писать библиотеку, чтобы упростить перенос приложения на простой в Perl, Net:: Amazon:: SimpleDB:: Simple, потому что я обнаружил, что клиентские библиотеки Amazon болезненны. Библиотека еще не включена в CPAN, но она находится на http://rjurneyopen.s3.amazonaws.com/SimpleDB/Simple.pm. Идея заключалась в том, чтобы сделать тривиальным для хэшей в и из SimpleDB.
Я просто портировал приложение, чтобы использовать его. В целом меня впечатляет SimpleDB... даже неэффективные запросы занимают всего 2-3 секунды, чтобы вернуться. SimpleDB, похоже, не заботится о размере вашей таблицы из-за ее Erlang/parallel nature. Таблицы легко для него.
Боль возникает из-за того, что вы не можете рассчитывать, суммировать или группировать. Если вы планируете делать какие-либо из этих вещей... тогда SimpleDB, вероятно, не для вас. На данный момент с точки зрения функциональности он существует где-то между memcached и MySQL. Вы можете выбрать ORDER BY LIMIT, что приятно. Его также приятно, что вам не нужно масштабировать его самостоятельно, и его приятно, что вам все равно, сколько вы вкладываете в него. Но более совершенные операции, такие как аналитика, в лучшем случае болезненны. Вам придется делать собственные расчетные серверы. Его также большой плюс, который на любом компьютере я могу использовать упрощенную CLI http://code.google.com/p/amazon-simpledb-cli/ для запроса моих данных.
Есть некоторые запутывающие "gotchas". Например, атрибуты могут иметь более одного значения, и вам необходимо явно установить "replace" при хранении элементов. Кроме того, сохранение undef или null string приводит к ошибке библиотеки, вместо удаления этой пары имя/значение атрибута или установки ее нулевой/пустой строки.
Изучение мысли с точки зрения в значительной степени ненормализованного способа тоже немного странно, поэтому я бы предпочел, что это будет лучше для новых приложений. Портирование из приложения SQL в SimpleDB было бы болезненным, потому что ваша прикладная логика изменилась бы. То, как вы делаете, немного другое. Документы amazon довольно хорошо объясняют это.
Все это извлекается в библиотеке, которая сидит поверх SimpleDB, поэтому для использования SimpleDB вы захотите выбрать хорошую библиотеку... вы, вероятно, не хотите иметь дело с ней напрямую. Есть некоторая работа на стороне PHP, чтобы упростить задачу, и есть моя библиотека. Существует ресурс RAILS, но, похоже, он мало чем подходит для вас.
В целом все еще рано в игре, но по сравнению с другими API-интерфейсами (твиттер приходит на ум), я должен сказать, что SimpleDB REST API довольно прост (особенно учитывая, что это XML) и вежливо работает с, Я бы порекомендовал его... в зависимости от требований вашего приложения и экономики от его использования. Если вы хотите быстро масштабировать службу, которая не создает большой нагрузки на БД и не хочет беспокоиться о масштабируемой компиляции MySQL/memcache..., то SimpleDB может предложить вам "простое" решение.
Я ожидаю, что его функции будут продолжать расти, и это будет хорошим выбором для большего количества приложений, которые занимаются более сложными и интересными вещами. Но сейчас он ориентирован и подходит для вашего типичного сервиса Web 2.0.
Ответ 3
Мы используем SimpleDB почти исключительно для наших новых проектов. Нулевое обслуживание, высокая доступность, отсутствие инсталляционных аспектов слишком хороши. И для ваших разработчиков Ruby, SimpleRecord, интерфейс ActiveRecord для SimpleDB, который делает его очень простым в использовании.
Ответ 4
Но вам действительно нужен SQL Server? Вы не можете жить с PostgreSQL или MySQL? Оба оказались в порядке для большинства задач.
Теперь, если вам нужны функции SQL Server, вам не повезло.
Другой вариант - арендовать сервер. Как дорого стоит дорого?
(Я использовал Amazon S3 для хранения изображений для приложения, это нормально и отлично работает, по крайней мере для этого)
Ответ 5
Я не использовал SimpleDB, но использовал наше приложение для комбинации S3, EC2 и MySQL.
Пока вы готовы использовать SimpleDB, вы можете также рассмотреть возможность использования MySQL (что очень масштабируемо и не так дорого).
На стороне S3 и EC2 это также отлично на практике.
Ответ 6
SimpleDB отлично подходит для многих приложений.... если ваш проект потребует много аналитической отчетности, присоединения и т.д., вы можете рассмотреть MySQL или гибридную модель.
Если вы идете SimpleDB, мы разработали Radquery.com для нашего внутреннего использования и открыли его для публики.