Amazon SimpleDB - PullRequest
       17

Amazon SimpleDB

13 голосов
/ 10 сентября 2008

Кто-нибудь рассматривал возможность использования чего-либо в соответствии с хранилищем данных Amazon SimpleDB в качестве своей внутренней базы данных?

Хостинг SQL Server (по крайней мере, в Великобритании) стоит дорого, поэтому можно использовать что-то подобное вместе с облачным хранилищем файлов (S3) для создания приложений, которые могут расти вместе с вашим приложением.

Великолепно в теории, но кто-нибудь подумает об этом. На самом деле, кто-нибудь на самом деле использует его сейчас для реального производственного программного обеспечения, и я хотел бы прочитать ваши комментарии.

Ответы [ 6 ]

14 голосов
/ 10 сентября 2008

Это хороший анализ сервисов Amazon от Dare .

S3 обработал то, что я обычно слышал, описал как «хранилище BLOB-объектов». Типичное веб-приложение обычно имеет мультимедийные файлы и другие ресурсы (изображения, таблицы стилей CSS, сценарии, видеофайлы и т. Д.), К которым легко получить доступ по имени / пути. Однако многие из этих ресурсов также имеют метаданные (например, видеофайл на YouTube содержит метаданные о его рейтинге, кто его загрузил, количестве просмотров и т. Д.), Которые также необходимо сохранить. Именно здесь требуется SimpleDB для запрашиваемого схематизированного хранилища. EC2 предоставляет виртуальный сервер, который можно использовать для вычислений, в комплекте с экземпляром локальной файловой системы, который не является постоянным, если виртуальный сервер отключается по какой-либо причине. С SimpleDB и S3 у вас есть строительные блоки для создания большого класса приложений в стиле «Web 2.0», когда вы используете вычислительные возможности, предоставляемые EC2. Однако ни S3, ни SimpleDB не предоставляют решения для разработчика, которому просто нужен типичный опыт разработчика LAMP или WISC для создания веб-приложения на основе базы данных, или для приложений, которые могут иметь собственные потребности в хранилище, которые не вписываются в ведра блоб-хранилища или схематизированное хранилище. Без доступа к постоянной файловой системе разработчикам платформы облачных вычислений Amazon пришлось придумывать сложные решения, включающие резервное копирование данных вручную из EC2 в S3, чтобы получить желаемый опыт.

11 голосов
/ 01 января 2009

Я только что закончил писать библиотеку, чтобы упростить перенос приложения на simpledb на Perl, Net :: Amazon :: SimpleDB :: Simple, потому что я нашел, что клиентские библиотеки Amazon болезненны. Библиотека еще не работает на CPAN, но находится на http://rjurneyopen.s3.amazonaws.com/SimpleDB/Simple.pm Идея состояла в том, чтобы сделать ее простой в добавлении хэшей в SimpleDB и обратно.

Я просто портировал приложение, чтобы использовать его. В целом я впечатлен SimpleDB ... даже неэффективные запросы возвращаются за 2-3 секунды. SimpleDB, кажется, не заботится о размере вашей таблицы из-за его Erlang / параллельного характера. Для него легко сканировать таблицы.

Боль возникает из-за того, что вы не можете считать, суммировать или группировать по. Если вы планируете делать что-то из этого ... тогда SimpleDB, вероятно, не для вас. На данный момент с точки зрения функциональности он существует где-то между memcached и MySQL. Вы можете выбрать ORDER BY LIMIT, что приятно. Также приятно, что вам не нужно масштабировать его самостоятельно, и приятно, что вам все равно, сколько вы в него вложите. Но более сложные операции, такие как аналитика, в лучшем случае болезненны. Вам придется делать свои собственные вычисления на стороне сервера. Это также большой плюс, что на любом компьютере я могу использовать простой интерфейс CLI http://code.google.com/p/amazon-simpledb-cli/ для запроса моих данных.

Есть некоторые запутанные «ошибки». Например, атрибуты могут иметь более одного значения, и вы должны явно установить «заменить» при хранении элементов. Кроме того, сохранение неопределенной или нулевой строки приводит к ошибке библиотеки вместо удаления этой пары имя / значение атрибута или установки ее пустой или пустой строки.

Обучение мыслить в терминах в значительной степени ненормализованного способа также немного странно, поэтому я бы поддержал приведенное выше предложение, в котором говорится, что оно лучше для новых приложений. Перенос из приложения SQL в SimpleDB был бы болезненным, потому что логика вашего приложения должна была бы измениться. То, как вы делаете вещи, немного по-другому. Амазонские документы довольно хорошо объясняют это.

Все это можно извлечь из библиотеки, расположенной поверх SimpleDB, поэтому для использования SimpleDB вы захотите выбрать хорошую библиотеку ... вы, вероятно, не хотите иметь с ней дело напрямую. На стороне PHP есть некоторая работа, чтобы упростить задачу, и есть моя библиотека. Существует активный источник RAILS, но, похоже, он мало для вас работает.

В целом, он все еще находится на ранней стадии разработки, но по сравнению с другими API (приходит в голову твиттер), я должен сказать, что SimpleDB REST API довольно прост (особенно учитывая, что это XML) и вежлив с , Я бы порекомендовал это ... в зависимости от требований вашего приложения и экономической эффективности его использования. Если вы хотите быстро масштабировать сервис, который не сильно загружает БД, и не хотите беспокоиться о масштабируемой комбинации MySQL / memcache ... тогда SimpleDB может предложить вам «простое» решение.

Я ожидаю, что его возможности будут продолжать расти, и он станет хорошим выбором для все большего числа приложений, которые делают более сложные и интересные вещи. Но сейчас он нацелен на типичную службу Web 2.0 и соответствует ей.

3 голосов
/ 06 февраля 2010

Мы используем SimpleDB почти исключительно для наших новых проектов. Нулевое обслуживание, высокая доступность, никакие аспекты установки просто слишком хороши. А для ваших разработчиков на Ruby, посмотрите SimpleRecord , подобный ActiveRecord интерфейс для SimpleDB, который делает его очень простым в использовании.

0 голосов
/ 16 ноября 2010

SimpleDB отлично работает для многих приложений .... если вашему проекту потребуется много аналитических отчетов, объединений и т. Д., Вы можете рассмотреть MySQL или гибридную модель.

Если вы зайдете на SimpleDB, мы разработали Radquery.com для внутреннего пользования и открыли для публики.

0 голосов
/ 10 сентября 2008

Я не использовал SimpleDB, но использовал комбинацию S3, EC2 и MySQL для нашего приложения.

Пока вы готовы использовать SimpleDB, вы также можете рассмотреть возможность использования MySQL (который очень масштабируемый и не такой дорогой).

Со стороны S3 и EC2 это также здорово на практике.

0 голосов
/ 10 сентября 2008

Но вам действительно нужен SQL Server? Разве вы не можете жить с PostgreSQL или MySQL? Оба оказались хорошими для большинства задач.

Теперь, если вам нужны функции SQL Server, вам не повезло.

Другой вариант - арендовать сервер. Насколько дорого стоит?

(я использовал Amazon S3 для хранения изображений для приложения, все в порядке и отлично работает, по крайней мере, для этого)

...