寻找一种在云中存储小数据包的简单方法

时间:2010-11-25 21:56:44

标签: web-services cloud

我正在寻找一个非常简单且免费的云存储来存储小数据包。

基本上,我想编写一个Greasemonkey脚本,用户可以在具有共享数据集的多台机器上运行该脚本。数据主要只是一个数字,每个用户8个字节就足够了。

这一切都归结为以下要求:

  • 简单开发(这是一个有趣的项目几个小时,我不想在同步中投入两倍)
  • 每个用户存储8个字节(或者可能多一点,但它真的很小)
  • 理想情况下,用户无需注册(他们只需获得一个可以在所有机器上输入的随机密钥)
  • 我不需要注册(这是Greasemonkey,所以没有办法隐藏秘密,就像开发人员密钥一样)
  • 值中没有私有数据,因此另一个用户通过猜测随机密钥来访问该信息并不是什么大不了的事。
  • 信息很容易重新创建(在云端共享它只是为了方便),因此另一个接管“密钥”的用户也很容易修复

第一个想法:

  • 使用表单作为前端存储在Google文档中。当然,这有点难看,每个用户都需要重新设置它。
  • 我可以设置一个Google App Engine实例,该实例允许将数字存储到密钥并按键检索数字。这并不难,但对我所需要的东西来说仍然有些过分。
  • 我可以创建一个Firefox附加组件而不是Greasemonkey脚本并使用Mozilla Weave / Sync - 遗憾的是它不支持存储HTML5本地存储,因此GM还不够。当然,我必须为Opera和Chrome实现相同的功能(假设它们有相似的服务),而不仅仅是重用用户脚本。

任何人都有一个我不知道的聪明主意或服务?


对那些好奇的人进行更新:我最终选择了GAE路线(大约半页的Python代码)。之后我才发现了OpenKeyval(见下文)。优点是用户可以轻松连接所有计算机(只需一个Google帐户登录,没有其他密钥可以从机器A转移到机器B),缺点是每个人都需要一个Google帐户。

4 个答案:

答案 0 :(得分:4)

OpenKeyval几乎就是我想要的。

OpenKeyval正是我所寻找的,但显​​然已被关闭。

答案 1 :(得分:1)

我认为GAE将是不错的选择。根据您对存储容量的要求,您永远不会通过500 MB的GAE商店。由于服务的REST特性,在浏览器中移植脚本很容易;)

答案 2 :(得分:1)

我被要求分享我的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()

答案 3 :(得分:0)

我见过的最接近的事情是亚马逊的简单队列服务 http://aws.amazon.com/sqs/

我自己没有使用它,所以我不确定开发人员关键方面是如何工作的,但是他们每个月会给你100,000个免费查询。