这篇博客文章是CDP中Cloudera的运营数据库(OpDB)系列文章的一部分。每篇文章都会详细介绍新功能。从该系列的开头开始,请参阅《CDP中的运营数据库》,《运营数据库系列之可访问性》,《运营数据库系列之管理篇》,《运营数据库系列之高可用性》。
这篇博客文章概述了OpDB的数据完整性功能,可帮助您实现ACID事务和数据一致性。OpDB保证某些属性以确保原子性、持久性、一致性和可见性。我们将在此博客文章中看到这些功能中的某些功能如何帮助您实现数据完整性目标。
参照完整性
通过实现“约束”以及对表中的属性强制执行业务规则,可以支持引用完整性。
约束是可配置的,您可以在不同的表中使用它。请记住,您必须根据赋予该约束的特定配置来选择一种行为。
您可以使用约束来强制执行某些业务规则。通过检查表中的所有“put”,可以实施数据策略。例如,您可以设置一个策略,其中某个列族-列限定符对的值始终在1-20之间。这样,当值不在该范围内时,“ put”将被拒绝,并保持数据完整性。
有关约束的更多信息,请参阅Apache HBase 开发人员 API 文档中的约束 。
非关系的完整性
与参照完整性类似,非关系的完整性是通过实现约束来实现的,并且用于对表中用户的任何内容类型的属性(例如,确保值在1到10的范围内)执行业务规则。用户选择在他的Schema中实施这些规则。
实体和域的完整性
您可以使用OpDB随附的多个工具,包括HBCK2和IndexScrutinyTool。HBCK2工具可帮助您查找和解决任何完整性问题。并且,您可以使用IndexScrutinyTool识别源表(通常是日期表或索引表)中的无效行。IndexScrutinyTool将找到的无效行写入文件或输出表。
有关使用HBCK2工具的更多信息,请参见使用 HBCK2 工具修复 HBase 群集 。
ACID事务
系统为单行事务玩去遵从ACID特性,以及NoSQL世界中后期绑定的Schema-on-Read的灵活性。OpDB保证以下属性:
• 原子性:事务中的所有更改将成功应用,或者在失败的情况下将不应用任何更改。
• 持久性:成功事务期间写入的数据将持久保存到存储中,并且在系统出现故障时不会丢失。
• 一致性:操作导致表从一种有效状态转换为另一种有效状态。例如,这意味着在交易过程中不会丢失表。
• 可见性:提交更新后的任何后续读取都将看到该更新。
可调一致性
支持强一致性和时间轴一致性。客户端可以指示给定读取操作所需的一致性级别。默认的一致性级别为STRONG ,这意味着读取请求仅发送到为该区域提供服务的RegionServer。
这与不使用只读副本时的行为相同。另一种可能性TIMELINE 将请求发送到所有具有副本的RegionServer,包括主副本。客户端接受第一个响应,包括它是来自主要还是辅助RegionServer。如果来自辅助服务器,则客户端可以选择稍后验证读取还是不将其视为确定的读取。
结论
在此博客文章中,我们研究了如何利用OpDB中的数据完整性功能。在下一篇文章中,我们将介绍OpDB系列的的应用程序支持特性。
来源:https://blog.cloudera.com/operational-database-integrity/
原作者:Gokul Kamaraj& Liliana Kadar