Вопрос

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

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

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

Это было полезно?

Решение

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

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

Другие советы

Я только что закончил писать библиотеку, упрощающую перенос приложения на 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.Вы можете ВЫБРАТЬ ЗАКАЗ ПО ПРЕДЕЛУ, и это приятно.Также приятно, что вам не нужно масштабировать его самостоятельно, и приятно, что ему неважно, сколько вы в него вкладываете.Но более сложные операции, такие как аналитика, в лучшем случае болезненны.Вам придется выполнять собственные расчеты на стороне сервера.Также большим плюсом является то, что на любом компьютере я могу использовать интерфейс командной строки simpledb. http://code.google.com/p/amazon-simpledb-cli/ чтобы запросить мои данные.

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

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

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

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

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

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

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

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

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

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

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

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

Что касается S3 и EC2, то на практике это тоже отлично.

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top