Pet*_*ney 10 cloud amazon-web-services amazon-simpledb
我正在构建移动应用程序(iPhone/Android)并希望将应用程序数据存储到Amazon的SimpleDB上,因为我们不想托管我们自己的服务器来提供这些服务.我一直在浏览所有文档,元素值的最大存储大小是1024字节.
在我的情况下,我们需要存储1024到10K的文本数据.
我希望了解其他项目如何使用SimpleDB,因为它们有更大的存储需求,比如我们的项目.我读到可以存储指向文件的指针,然后存储在S3(文件系统)中.不确定这是否是一个好的解决方案.
在我看来,我不确定SimpleDB是否是正确的解决方案.任何人都可以评论已经做了什么或提供了一种不同的方式来思考这个问题?
Moc*_*cky 14
有多种方法可以存储您的10k文本数据,但是否可以接受将取决于您需要存储的其他内容以及您计划如何使用它.
如果您需要存储任意大的数据(尤其是二进制数据),那么S3文件指针可能很有吸引力.SimpleDB在此方案中添加的值是能够针对存储在SimpleDB中的文件元数据运行查询.
对于限制为10k的文本数据,我建议将其直接存储在SimpleDB中.它很容易适合单个项目,但您必须将其分布在多个属性中.基本上有两种方法可以做到这一点,每种方法都有一些缺点.
一种方法更灵活,搜索更友好,但需要您触摸您的数据.您将数据拆分为大约1000字节的块,并将每个块作为属性值存储在多值属性中.没有对多值属性进行排序,因此您必须在每个块前面添加一个用于排序的数字(例如01)
您将所有文本存储在一个属性中的事实使得查询在谓词中使用单个属性名称变得容易.您可以为1k到200 + k之间的每个项目添加不同大小的文本,并对其进行适当处理.但是你必须要知道你的前缀行号可以为你的查询弹出正面(例如,如果你搜索的01每个项目都匹配该查询).
在SimpleDB中存储文本的第二种方法不需要在文本块中放置任意排序数据.您可以通过将每个文本块放在不同的命名属性中来进行排序.例如,你可以使用属性名:desc01 desc02... desc10.然后将每个块放在适当的属性中.您仍然可以使用这两种方法进行全文搜索,但使用此方法搜索会更慢,因为您需要指定许多谓词,而SimpleDB最终将通过单独的索引搜索每个属性.
可能很容易将这种类型的工作视为黑客,因为对于数据库,我们习惯于在数据库中为我们处理这种类型的低级细节.SimpleDB专门设计用于将此类事物从数据库推出到客户端,作为提供可用性作为一流功能的一种方式.
如果您发现关系数据库将您的文本拆分为1k块以存储在磁盘上作为实现细节,那么它似乎不是一个黑客攻击.问题是SimpleDB客户端的当前状态是你必须自己实现很多这种类型的数据格式.这是理想情况下在智能客户端中为您处理的事物类型.目前还没有任何智能客户可以免费使用.
| 归档时间: |
|
| 查看次数: |
4500 次 |
| 最近记录: |