复杂查询中的正则表达式¶
https://blueprints.launchpad.net/ceilometer/+spec/regexp-in-complex-query
问题描述¶
目前某些实例或网络相关的服务在 resource_id 中包含额外的标识符。例如,disk.device.* 指标。它们的 resource_id 格式为 - <instance_id>-<disk-id>。我们无法使用指定的 instance_id 查询这些计量器的所有样本,因为磁盘具有不同的 ID。这种行为对最终用户不友好,并给想要了解更多集群工作信息的人带来麻烦。
提议的变更¶
为了支持上述复杂的查询,我们应该添加一个新的正则表达式操作符,并使用相应的 "=~" 符号表示。
实现依赖于后端
1) MongoDB 和 DB2。这些数据库支持 $regex 查询。它为查询中的字符串模式匹配提供正则表达式功能。MongoDB 和 DB2 使用兼容 Perl 的正则表达式 (即“PCRE” ) 版本 8.30,并支持 UTF-8。为了正确工作,我们将 filter query 中的 "=~" 映射到 pymongo 请求中的 "$regex"。
SQLAlchemy。此后端支持 “regexp” MySQL 操作符,它也被映射。
HBase 支持使用 RegexStringComparator 进行正则表达式查询。
替代方案¶
向资源元数据添加额外信息
数据模型影响¶
无。
REST API 影响¶
在复杂查询中添加新的简单操作符 “=~”。
安全影响¶
无。
Pipeline 影响¶
无
其他最终用户影响¶
您可以在复杂查询中使用正则表达式请求。
性能/可扩展性影响¶
对于大型正则表达式,会影响性能,api 服务可能会受到影响。
其他部署影响¶
无
开发者影响¶
无
实现¶
负责人¶
- 主要负责人
ityaptin
- 持续维护者
enovokshonova
工作项¶
在 controller 中将 “=~” 添加到简单操作符列表中
向后端添加正则表达式操作符处理
未来生命周期¶
无
依赖项¶
无。
测试¶
扩展存储场景测试,以包含正则表达式操作符
文档影响¶
更新复杂查询说明,以包含新的操作符
参考资料¶
https://blueprints.launchpad.net/ceilometer/+spec/regexp-in-complex-query