Ищете простой и минималистичный способ хранения небольших пакетов данных в облаке - PullRequest
3 голосов
/ 26 ноября 2010

Я ищу очень простое и бесплатное облачное хранилище для небольших пакетов данных.

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

Все сводится к следующим требованиям:

  • простой для разработки (это забавный проект на несколько часов, я не хочу вкладывать в синхронизацию в два раза больше)
  • хранить восемь байтов на пользователя (или, может быть, немного больше, но это действительно очень мало)
  • в идеале, пользователям не нужно регистрироваться (они просто получают случайный ключ, который они могут ввести на всех своих машинах)
  • Мне не нужно регистрироваться (это все Greasemonkey, поэтому нет способа скрыть секрет, как ключ разработчика)
  • в значениях нет личных данных, поэтому другой пользователь получает доступ к этой информации, угадывая случайный ключ, это не проблема
  • информация легко воссоздается (делиться ею в облаке просто для удобства), так что другой пользователь, принимающий «ключ», также легко исправляется

Первые идеи:

  • Магазин в Документах Google с формой в качестве внешнего интерфейса. Конечно, это немного уродливо, и каждый пользователь должен настроить его снова.
  • Я мог бы настроить экземпляр Google App Engine, который позволяет сохранять номер в ключе и получать номер по ключу. Это не будет сложно, но все равно звучит излишне для того, что мне нужно.
  • Я мог бы создать дополнение Firefox вместо скрипта Greasemonkey и использовать Mozilla Weave / Sync - который, к сожалению, пока не поддерживает хранение локального хранилища HTML5, поэтому GM недостаточно. Конечно, тогда мне придется реализовать то же самое для Opera и Chrome (при условии, что для них есть аналогичные сервисы) вместо простого повторного использования пользовательского скрипта.

Кто-нибудь получил умную идею или услугу, о которой я не знаю?


Обновление для тех, кому интересно: в итоге я пошел по маршруту GAE (около половины страницы кода Python). Я только открыл OpenKeyval впоследствии (см. Ниже). Преимущество заключается в том, что пользователям довольно легко подключаться на всех своих компьютерах (только для входа в учетную запись Google, без других ключей для передачи с компьютера A на компьютер B), недостатком является то, что каждому нужен аккаунт Google.

Ответы [ 4 ]

4 голосов
/ 12 мая 2011

OpenKeyval - это почти то, что я искал.

OpenKeyval был тем, что я искал, но, очевидно, был закрыт.

1 голос
/ 20 октября 2015

Меня попросили поделиться своим решением для хранения ключей / значений GAE, так что вот оно.Обратите внимание, что этот код не запускался годами, поэтому он может быть неправильным и / или сильно устаревшим кодом GAE:

app.yaml

application: myapp
version: 1
runtime: python
api_version: 1

handlers:
- url: /
  script: keyvaluestore.py

keyvaluestore.py

from google.appengine.api import users
from google.appengine.ext import db
from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app

class KeyValue(db.Model):
    v = db.StringProperty(required=True)

class KeyValueStore(webapp.RequestHandler):
    def _do_auth(self):
        user = users.get_current_user()
        if user:
            return user
        else:
            self.response.headers['Content-Type'] = 'text/plain'
            self.response.out.write('login_needed|'+users.create_login_url(self.request.get('uri')))

    def get(self):
        user = self._do_auth()
        callback = self.request.get('jsonp_callback')
        if user:
            self.response.headers['Content-Type'] = 'text/plain'
            self.response.out.write(self._read_value(user.user_id()))

    def post(self):
        user = self._do_auth()
        if user:
            self._store_value(user.user_id(), self.request.body)

    def _read_value(self, key):
        result = db.get(db.Key.from_path("KeyValue", key))
        return result.v if result else 'none'

    def _store_value(self, k, v):
        kv = KeyValue(key_name = k, v = v)
        kv.put()

application = webapp.WSGIApplication([('/', KeyValueStore)],
                                     debug=True)

def main():
    run_wsgi_app(application)

if __name__ == "__main__":
    main()
1 голос
/ 26 ноября 2010

Я думаю, что GAE будет хорошим выбором.С вашими требованиями к объему хранилища вы никогда не пропустите бесплатные 500 Мб магазина GAE.И будет легко перенести ваш скрипт через браузеры из-за REST природы вашего сервиса;)

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

Самая близкая вещь, которую я видел, - Amazon Simple Queue Service.
http://aws.amazon.com/sqs/

Я не использовал его сам, поэтому не уверен, как работает ключевой аспект разработчика, но они дают вам 100 000 бесплатных запросов в месяц.

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