我正在开发一个存储用户创建的调查的数据库。数据库需要为每个调查存储唯一的ID。使用SQL,我只使用SERIAL列类型,因此每行都有一个自动递增的数字键。
SimpleDB似乎将所有内容都存储为字符串,这意味着我必须自己生成一个唯一的密钥。由于此密钥将成为URL的一部分,我认为UUID太长了。我希望能够通过以下方式加载调查:
foo.com/1a
有没有办法让SimpleDB为您存储的每个项目生成唯一的行ID?谢谢!
答案 0 :(得分:2)
好的,所以你在这里要求意见....我会选择任何其他存储机制而不是simpledb。例如,您可以轻松地将MongoDB作为关系数据库的文档存储替代方案,并获得比使用SimpleDB更多的好处。
就想要一个简短的唯一URL而言,您可以搜索并找到一个ruby实现,将ID转换为一个短ID。 http://blog.kischuk.com/2008/06/23/create-tinyurl-like-urls-in-ruby/
该实施将1174229变为“7sH_”(根据帖子.YMMV)
所以,你有类似
的东西class Survey
include Mongoid::Document
def to_param
generate_url(self.id)
end
end
在路线
resources :surverys, :path=>''
这将创造
<强>的http:// yourapp / 7sh_ 强>
当然这种技术可以用于非mongo安装。
答案 1 :(得分:0)
SDB Explorer支持从MYSQL批量上传到Amazon SimpleDB。您可以使用Upload功能将MYSQL数据上传到Amazon SimpleDB。上传SDB Explorer时会生成唯一ID。即使您可以选择自己的MYSQL作为itemName(),也就是Amazon SimpleDB的唯一ID。