数据存储成熟度,实验性数据存储¶
https://blueprints.launchpad.net/trove/+spec/experimental-datastores
迄今为止,Trove 并没有明确区分哪些数据存储被认为是“实验性的”,哪些被认为是“适合通用用途的”。在西雅图(Kilo 版本)中期会议上,我们讨论了引入一个清晰的“实验性”数据存储定义,以及如何将数据存储从“实验性”迁移到“适合通用用途”的可能性。
问题描述¶
当数据存储的代码提交到 Trove 时,并没有明确的指示表明该数据存储是否处于适合通用用途的状态。例如,虽然单个实例的 MySQL 数据存储在某些开发和测试用例中完全可用,但单个实例的(例如)Cassandra 数据存储则用处小得多。支持备份和恢复的数据存储比不支持的数据存储更有用。
作为一个社区,我们希望欢迎各种更改,但并非所有更改集都是一样的。有些包含广泛的功能和测试覆盖,而另一些则比较基础。为了明确我们作为社区认为数据存储的“就绪程度”,我们认为对数据存储进行分类是一个好的改进。
提议的变更¶
引入数据存储分类¶
我们建议创建三组数据存储,如下文详细所述。这种分类意味着任何数据存储都可以被认为是(a)“实验性的”,(b)“技术预览”,或(c)“稳定的”。
在每个版本中,从 Kilo 版本开始,每个数据存储都将根据其严格遵守每个分类的要求,被赋予一个分类,该分类将是上述值之一。
这些分类将是包容性的;也就是说,满足“技术预览”要求的数据存储也必须满足“实验性”的所有要求,而满足“稳定”要求的数据存储也必须满足“技术预览”的所有要求。
引入策略分类¶
类似地,我们还将为每个策略分配一个分类。有些策略可能比其他策略经过更彻底的验证和测试(例如)。纯粹为了说明,mysql_binlog 可能被认为是“稳定的”,但可能有一个不同的复制策略被认为是“实验性的”。
配置¶
至少,这种更改将影响 trove-guestagent.conf 文件,因为它通过提供实现(manager.py)的路径来列出数据存储注册表。
任何在配置文件(或代码中)调用实现位置的类似位置都必须进行更改。
数据库¶
这不应该有数据库更改。
公共 API¶
此更改不会影响公共 API。
公共 API 安全¶
不适用。
内部 API¶
没有内部 API 的更改。
Guest Agent¶
它不会改变 guest agent 的行为,只是更改了代码的位置。
要求¶
实验性
如果数据存储包含以下项目,则可以考虑在实验阶段合并。
实现 Trove API 的基本子集,包括创建和删除
guest agent “元素”,允许用户创建 guest agent
支持的操作系统定义
基本单元测试,用于验证 guest agent 的操作和非投票测试套件
如果提供了实现并包含基本单元测试以验证策略的操作,则该策略将被认为是实验性的。还应提供通过且非投票的测试套件。
技术预览
如果数据存储满足“实验性”的要求,并且进一步
实现 API,以实现数据存储兼容性矩阵中定义的存储功能,该矩阵位于 [https://wiki.openstack.org/wiki/Trove/DatastoreCompatibilityMatrix]
请注意,数据存储不必实现所有功能(调整大小、备份、复制、集群等)即可满足此分类。
还需要为所有功能提供非投票的 gate 测试,以及一种构建 guest 镜像的机制,允许用户行使这些功能。
通常不会考虑将策略归类为“技术预览”。
稳定
如果数据存储满足“技术预览”的要求,并且稳定的投票测试套件是 gate 的一部分,则该数据存储将被认为是“稳定的”。
如果策略满足“实验性”的要求,并且 gate 的一部分也有稳定的投票测试,则该策略将被认为是“稳定的”。
更改详情¶
计划是编辑所有需要反映一些数据存储和策略位置更改的文件。
备选方案¶
另一种选择是创建一个网页来列出此信息,而无需实际重新组织代码。
实现¶
负责人¶
- 主要负责人
amrith slicknik
里程碑¶
kilo-3
工作项¶
确定每个分类中的数据存储。
确定每个分类中的策略
实施将代码重新定位到适当目录结构的更改
如果合适,实施 trove-integration 中的更改(redstack)
依赖项¶
无
测试¶
必须启动并验证每个数据存储以确保其正常运行。
文档影响¶
这将对文档产生影响,并将为此打开一个 bug。
参考资料¶
这在中期会议上讨论过。etherpad 是 [https://etherpad.openstack.org/p/trove-kilo-sprint-state-of-ci]