热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

历史数据库以及迁移系统

对于海量的互联网业务来说,除了线上的数据库,还需要有一套对应的历史数据库,用于查询历史的数据。比如查看历史微博、查看淘宝历史交易。历史数据库架构业务会将最新的数据变更插入在线的My

对于海量的互联网业务来说,除了线上的数据库,还需要有一套对应的历史数据库,用于查询历史的数据。比如查看历史微博、查看淘宝历史交易。


历史数据库架构

业务会将最新的数据变更插入在线的 MySQL 数据库,但 MySQL 数据库仅保留最近半年的数据,超过半年的数据会存放在历史数据库系统中。对于历史数据库的选型来说,一般可以是(分布式)MySQL 数据库、HBase、ElasticSearch。



  • 历史数据库是 MySQL,那么基本和线上架构一致,只是存储的容量会更大。但缺点是,即便使用分布式架构,数据节点的扩容需要搬迁数据,这部分工作相对比较麻烦一些。

  • HBase 是 Hadoop 生态的大数据系统,是一个 KV 系统,非常适合进行点查询,其对于数据的扩容也是非常容易。但是它的缺点是不支持事务,没有二级索引,所以在使用时会有诸多限制,比如二级索引需要自己创建索引表,索引表和主表的数据一致性有可能会存在问题。

  • ElasticSearch 是文档数据库,其他特性与 HBase 类似,支持数据节点动态的扩缩容,查询支持也更为丰富一些

选型需要结合业务具体分析,通常更倾向于使用 ElasticSearch,简单易用。


迁移系统

迁移系统需要做以下两件事情:



  • 将线上数据尽可能地准实时同步到历史数据

  • 清理线上数据库系统,仅保留最近一段时间的数据,如半年的数据

DTS 是 Data Transfer Service,数据迁移服务,负责将在线数据准实时地同步到历史数据库。

DTS 的实现原理是订阅 MySQL 的二进制日志变化,将数据库的变更同步到历史数据库。虽然原理并不复杂,但是由于是异构数据库系统,在数据消费这里还需要做不少的工作。此外,要做到准实时要求,如仅 30 秒内的延迟,对于 DTS 也是一种考验。

业界的 DTS 有 Maxwell、Canal。但通常这些 DTS 仅负责订阅二进制日志,消费需要用户自己实现存储到不同的数据库。

DAS 是 Data Archive Service,数据归档服务,负责清理超过一定时间的线上数据,同时需要确保清理的数据都已经在历史数据库中。所以,DAS 又需要做两件事情:



  • 获取超过某个阈值的数据,确保这些数据都已经在历史数据库中

  • 根据调度,在非业务高峰期,从 MySQL 数据库中删除超过某个阈值的数据

在库表结构设计中,要求每张业务核心表都要有一个最后修改时间的字段,因此那些数据已经超过某一时间点,如半年,是比较容易知道的。然后,再进行线上数据与历史数据库的核对即可。

第二个步骤会真实删除线上数据库中的数据,风险较高,但通过多次数据校验和逻辑判断,DAS 可以确保删除数据的正确性,从而正确删除超过阈值的数据。



推荐阅读
  • 58同城的Elasticsearch应用与平台构建实践
    本文由58同城高级架构师于伯伟分享,由陈树昌编辑整理,内容源自DataFunTalk。文章探讨了Elasticsearch作为分布式搜索和分析引擎的应用,特别是在58同城的实施案例,包括集群优化、典型应用实例及自动化平台建设等方面。 ... [详细]
  • Hadoop入门与核心组件详解
    本文详细介绍了Hadoop的基础知识及其核心组件,包括HDFS、MapReduce和YARN。通过本文,读者可以全面了解Hadoop的生态系统及应用场景。 ... [详细]
  • 本文探讨了2012年4月期间,淘宝在技术架构上的关键数据和发展历程。涵盖了从早期PHP到Java的转型,以及在分布式计算、存储和网络流量管理方面的创新。 ... [详细]
  • 全面解析运维监控:白盒与黑盒监控及四大黄金指标
    本文深入探讨了白盒和黑盒监控的概念,以及它们在系统监控中的应用。通过详细分析基础监控和业务监控的不同采集方法,结合四个黄金指标的解读,帮助读者更好地理解和实施有效的监控策略。 ... [详细]
  • 简化报表生成:EasyReport工具的全面解析
    本文详细介绍了EasyReport,一个易于使用的开源Web报表工具。该工具支持Hadoop、HBase及多种关系型数据库,能够将SQL查询结果转换为HTML表格,并提供Excel导出、图表显示和表头冻结等功能。 ... [详细]
  • 离线安装Grafana Cloudera Manager插件并监控CDH集群
    本文详细介绍如何离线安装Cloudera Manager (CM) 插件,并通过Grafana监控CDH集群的健康状况和资源使用情况。该插件利用CM提供的API接口进行数据获取和展示。 ... [详细]
  • 本文深入探讨了MySQL中常见的面试问题,包括事务隔离级别、存储引擎选择、索引结构及优化等关键知识点。通过详细解析,帮助读者在面对BAT等大厂面试时更加从容。 ... [详细]
  • 本文详细介绍了 Linux 系统中用户、组和文件权限的设置方法,包括基本权限(读、写、执行)、特殊权限(SUID、SGID、Sticky Bit)以及相关配置文件的使用。 ... [详细]
  • 本文探讨了随着并发需求的增长,MySQL数据库架构如何从简单的单一实例发展到复杂的分布式系统,以及每一步演进背后的原理和技术解决方案。 ... [详细]
  • 本文详细介绍了 Apache ZooKeeper 的 FileTxnLog 类中的 setPreallocSize 方法,并提供了多个实际应用中的代码示例。通过这些示例,读者可以更好地理解如何在不同场景下合理设置日志文件的预分配大小。 ... [详细]
  • ArchSummit深圳2014将于7月18日拉开帷幕,所有讲师已确认,涵盖9个热门话题,共36场精彩报告。InfoQ中文站提供了详细的讲师和报告列表。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文探讨了MariaDB在当前数据库市场中的地位和挑战,分析其可能面临的困境,并提出了对未来发展的几点看法。 ... [详细]
  • 探讨如何真正掌握Java EE,包括所需技能、工具和实践经验。资深软件教学总监李刚分享了对毕业生简历中常见问题的看法,并提供了详尽的标准。 ... [详细]
  • 本文探讨了如何在日常工作中通过优化效率和深入研究核心技术,将技术和知识转化为实际收益。文章结合个人经验,分享了提高工作效率、掌握高价值技能以及选择合适工作环境的方法,帮助读者更好地实现技术变现。 ... [详细]
author-avatar
雨润风华_684
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有