实时流计算系统设计与实现:数据存储-关系型数据库查询!

实时流计算系统设计与实现:数据存储-关系型数据库查询!

技术教程gslnedu2025-01-11 14:28:0912A+A-

关系型数据库查询

在实时流计算系统中,传统关系型数据库最主要的作用是存储各种元数据和业务实体数据。

说到元数据,笔者想起以前初入计算机领域时,遇到一个词“元数据”(metadata)。当时不甚明白,查资料给出的解释是“关于数据的数据”,顿时有了一种“道可道非常道”的云雾感。数据就是数据,怎么还有“关于数据的数据呢”?后来遇见的事情多了,学到的知识也多了,于是笔者明白了,原来除了类似于从传感器收集来的原始数据外,当我们对数据进行格式化、压缩、归档、存储、传输、管理等各种处理时,还需要用另外一部分数据对原始数据进行说明和描述,这部分数据就是所谓的“元数据”了。元数据在我们的系统中可谓是无所不在。

Hive里数据库和表相关的信息是元数据,Azkaban里作业和调度相关的信息是元数据,Cloudera Manager里集群部署和配置信息是元数据,GitLab里项目和提交信息也是元数据。除了第三方系统使用的元数据以外,我们自己开发的业务系统也存在各种各样的元数据,如配置信息、模型参数等。保护元数据的完整性是非常重要的事情,极端情况下,当元数据被破坏时,系统就不能正常工作了。

相比元数据,我们可能更加关心的是各种业务实体数据,如用户账户、业务配置等。这些数据处置不当,如丢失了账户信息、混淆了不同版本业务配置,造成的后果就可能是与客户的纠纷,甚至是直接的经济损失了。所以,我们在为此类业务场景设计系统及实现软件时,一定要时刻注意数据安全的问题。

元数据和业务实体数据对数据的安全性(包括完整性和一致性等)有着非常高的要求,这时就是关系型数据库发挥作用的时候了。虽然传统关系型数据库在对事务的支持上已经非常成熟,但这是建立在单节点的基础上的。要想让数据真正安全、可靠,还必须针对传统关系型数据库做高可用方案设计。以MySQL为例,常见的MySQL高可用方案是为主数据库配置一个从数据库,从数据库通过复制并重放主数据库的binlog文件,实现对主数据库的同步。

很明显,这种简单的主从复制方案存在问题,即主从数据库之间的数据并非时刻保持一致,如果主从数据库之间的网络存在问题,或者从数据库自己宕机了,那么从数据库和主数据库至少在一段时间内的数据并不一致。鉴于此,MySQ.5.7版本引入了全新的真正意义上的高可用关系型数据库方案,即Group Replication。Group Replication基于分布式一致性算法Paxos实现(非常有名的分布式一致性算法,大多数分布式强一致性数据系统使用该算法或其衍生算法实现),只要集群中有半数以上节点存活着,集群就能够正常提供数据库服务,因此这是一个真正意义上的高可用数据库集群方案。Group Replication支持两种模式,即单主模式和多主模式。

图9-13展示了MySQL Group

Replication集群的单主模式。在单主模式下,集群先从各个节点中选举出一个主节点,之后只有主节点同时支持读写访问,而其他节点仅支持读访问。单主模式是MySQL官方推荐的Group Replication复制模式。


传统数据库终究不是为大数据时代设计的,它们有自己的缺陷,因此,现在越来越多的企业和开源软件组织开始实现真正属于大数据时代的关系型数据库。这类数据库不仅支持分布式数据的强一致性,而且支持分布式事务功能,除了支持SQL,还支持NoSQL。它们将传统数据库的各种优良特性在大数据环境中实现,真可谓是功勋卓著了。与SQL和NoSQL一样,这类数据库逐渐具有了自己的专属名字,即NewSQL。目前比较有名的开源NewSQL数据库有TiDB和CockroachDB等。应该说,NewSQL数据库在未来会发挥越来越大的作用,并成为大数据时代关系型数据库的主流。

点击这里复制本文地址 以上内容由朽木教程网整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
qrcode

朽木教程网 © All Rights Reserved.  蜀ICP备2024111239号-8