xyb*_*rek 5 java database algorithm amazon-s3 amazon-web-services
我在我的项目中使用 Wasabi 作为 S3 存储,并且我一直在考虑利用 S3 作为键值存储。Wasabi 不对 API 请求收费,如此处所述https://wasabi.com/cloud-storage-pricing/
任何人都可以轻松地(也许使用任何编程语言)实现 Amazon S3 的如此简单的接口:
value = store.get(key)
store.put(key, value)
store.delete(key)
Run Code Online (Sandbox Code Playgroud)
其中key
是字符串,value
是二进制数据。有效地将其用作高度分布式和弹性的键值存储。
因此可以存储一个 User 对象,例如
userid:1234567890:username -> johnsmith
userid:1234567890:username:johnsmith:password -> encrypted_password
userid:1234567890:username:johnsmith:profile_picture -> image_binary
userid:1234567890:username:johnsmith:fav_color -> red
Run Code Online (Sandbox Code Playgroud)
值被序列化为二进制。
等等。
我有几个问题,对于那些尝试使用 S3 作为数据库或数据存储的人来说,使用 Amazon S3 作为键值存储的最佳策略是什么。尽管我认为通过查询带有前缀的键并执行代码中所需的逻辑来检索此处描述的整个用户对象相当容易userid:1234567890
,但这样做的明显缺点是您无法搜索值。
username
johnsmith
且仅当其他键也存储或根本不存储时才存储,我在想S3批量操作足以解决这个问题吗?