Общий интерфейс для CouchDB и Amazon S3 - PullRequest
4 голосов
/ 19 июля 2009

Я только что прочитал тонны материала на Amazon S3 и CouchDB. Может быть, еще недостаточно, но вот мой вопрос:

Обе системы звучат очень привлекательно для меня. CouchDB распространяется с использованием Apache License V2, а с Amazon S3 вы платите за сохраненный мегабайт и генерируемый трафик. Таким образом, есть небольшая разница в денежном выражении.

Но с технической точки зрения, как я понял, обе системы помогают вам хранить неструктурированные данные произвольных размеров (в зависимости от базовой ОС, как я понимаю из CouchDB).

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

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

Также это может быть интересно для целей интеграционного тестирования: например, вы можете протестировать локальный экземпляр CouchDB и запустить свой код на S3 для производственного использования.

Чтобы сформулировать мой вопрос под другим углом: Amazon S3 и CouchDB, по сути, решают одно и то же или это безумие, и я упустил весь смысл?

Обновленный вопрос

После блестящего ответа Джима позвольте мне перефразировать вопрос:

«Общий интерфейс для CouchDB и Amazon SimpleDB»

И, следуя тем же соображениям, видите ли вы проблему с общим интерфейсом между CouchDB и SimpleDB?

Ответы [ 3 ]

11 голосов
/ 19 июля 2009

Вы упускаете суть, чуть-чуть. CouchDB - это база данных. S3 - это файловая система. Оба они относительно неструктурированы, но в S3 вы храните файлы под ключами, а в CouchDB вы храните (произвольно структурированные) данные под ключами.

Аналогом Amazon Web Services для чего-то вроде CouchDB будет Amazon SimpleDB .

Что-то вроде того, что вы ищете, уже существует для Ruby и называется Moneta . Он даже может хранить вещи на S3, что может быть именно тем, что вы хотите.

4 голосов
/ 19 октября 2009

Вы не правы, Джим. S3 не является файловой системой. Это веб-сервис для хранилища значений ключей.

Amazon предоставляет вам ключ. Да, значением этого ключа могут быть данные, представляющие файл. Но то, как это управляется в системе Amazon, является чем-то совершенно другим. Он может храниться в одном узле, нескольких узлах, географически стратегических узлах с облачным фронтом и т. Д. В этом ключе нет ничего, что указывало бы на то, как система будет управлять файлом. Значение ключа никогда не является файлом напрямую. Это данные, которые представляют файл. То, как это значение в конечном итоге разрешается в файл, который получает клиент, является совершенно отдельным.

Значением этого ключа могут быть данные, которые не представляют файл. Это может быть словарь JSON. В этом смысле S3 можно использовать так же, как CouchDB.

Так что я не думаю, что вопрос не в этом. На самом деле это совершенно законный вопрос, поскольку данные в CouchDB не распределяются между узлами. И это может снизить производительность.

Давайте даже не будем говорить об Amazon SimpleDB. Это что-то отдельное. Пожалуйста, не смешивайте термины, а затем выдвигайте требования на основании этого.

Если вы не уверены в этом утверждении и если люди его просят, я с радостью предоставлю бит кода, иллюстрирующий словарь JSON в S3.

Я уважаю ваши ответы на другие вопросы, Джим. Но здесь вы явно не правы и не видите, насколько эти пункты оправданы.

3 голосов
/ 01 августа 2009

Технически возможен общий слой. Однако я сомневаюсь, что это имело бы смысл. Couchdb имеет встроенные функции отображения / сокращения для ваших документов, которые отображаются как «представления». Я не думаю, что у SimpleDB есть что-то подобное. С другой стороны, SimpleDB имеет выражения запросов, которых нет у Couchdb. Конечно, вы можете смоделировать эти выражения как представление в Couchdb, если вы знаете свой запрос во время разработки.

Кроме того, общая функция не более, чем создание / обновление / удаление пары ключ-документ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...