Kii BLOG

理解数据管理中Bucket的概念

Kii Cloud的数据存储管理API中,有个Bucket的概念,是其他一些MBaaS服务中不存在或者是有区别的。虽然更为复杂一些,但功能更加强大。

简单的理解,bucket是个容器,对象存储和文件存储,内容都要放在一个容器中。但实际使用中,又会发现,bucket不是直接创建和删除的,而和内容相关。比如Kii.bucket(“notes”)指向一个名为notes,但它没有create之类的方法。只有当这个容器中放入一个实际对象并存储后,这个bucket才真的在服务器上存在了。类似于我们给某段内容,加上了notes属性,于是查找notes属性的内容时,是有结果的。

那么又为什么需要bucket,而不是把所有内容全放一起,让开发者自己加标签/属性呢?

在笔者理解中,默认的简单的权限归属的控制是一个重要原因。在Kii Cloud中,有三类不同的bucket,分别是属于应用全局的,属于用户组的,和属于单个用户的。那么比如存私人笔记,应该放置于一个属于单用户的bucket中,其他人就读不到了。那么应用设计的需求是,某条笔记或者说文本可以支持多用户共同编辑维护呢?那么就要根据是按用户组,还是全体用户可查看编辑来确定是置于用户组的bucket还是应用全局的bucket了。

具体的查询,写入和权限控制可以参考下面表格

Scope Who can create a new data in the Bucket? Who can query for data in the Bucket? Who can drop the Bucket Who can add ACL entries?
Application – Any authenticated users – Any authenticated users
– Anonymous users
– Any authenticated users Nobody
(The app admin only)
Group – All group members
– The group owner
– The bucket creator
– All group members
– The group creator
– The bucket creator
– The group owner
– The bucket creator
– The group owner
User – The user
– The bucket creator
– The user
– The bucket creator
– The user
– The bucket creator
– The user

这里要注意的是,用户和组的bucket除了用户和用户组的成员外,创建这个bucket的创建者也可访问。不过一般的开发场景下,是由用户创建自己的bucket,不太会有这种需求。

Bucket是Kii Cloud中一个比较重要的概念,也与百度云平台的bucket单纯划分不同存储区域不同,更是parse中没有的概念。相信开发者们熟悉和掌握后可以灵活使用。

发表评论