大数据应用之双色球算奖平台总体设计历史数据存储篇

简介: 大数据应用之双色球算奖平台总体设计历史数据存储篇 作者:张子良 版权所有,转载请注明出处 1.1 引子:文件OR数据库   历史期次的双色球选注数据的存储,采用什么样的格式比较好呢?这需要重点从三个方面考虑,一、文件访问方便吗?二、文件服务器空间够用吗?三、软硬件故障环境下,如何保障数据的可用性。

大数据应用之双色球算奖平台总体设计历史数据存储篇

作者:张子良

版权所有,转载请注明出处

1.1 引子:文件OR数据库

  历史期次的双色球选注数据的存储,采用什么样的格式比较好呢?这需要重点从三个方面考虑,一、文件访问方便吗?二、文件服务器空间够用吗?三、软硬件故障环境下,如何保障数据的可用性。基于这几个方面的考虑,到底是采用文件存储还是采用数据库存储呢?本文,从传统和前沿技术两个角度给出了两种相应的解决方案。

1.2 文件存储

1.2.1 三大问题

  根据上一篇《大数据应用之双色球算奖平台总体设计数据规模估算篇》分析,双色球单期次数据的存储规模在7G左右,记录数在2亿条左右。可以考虑以文本文件的方式进行存储,这里面面临三大问题,一、单个文件过大的问题,访问不便,文本文件一般来讲超过200M,使用常规文本文件阅读器打开,都会成为问题,各位可以自行尝试。二、历史期次存储空间问题,技术总是在发展的,目前一般的服务器存储空间,单台服务器硬盘配置个NT,从技术和成本角度,都不会成为障碍,双色球每周三期,考虑到节假日的因素,每年约156期,156*7=1092,所需空间约1T。三、数据高可用性问题,传统单点存储方式的缺点,不做说明,考虑一个极端,硬盘坏了,或者服务器宕机,数据怎么访问?

1.2.2 传统方案

  问题的存在,不代表没有解决的方法,一切软件问题的技术解决方案,其实都是在各种妥协中寻求平衡点而已。当然总有无法平衡的时候,而这时总会有技术方面的突破,有需求才有动力。传统的方式,针对问题一,可以按照地域或者期次进行文件夹组织,按照投注站进行文件命名,不同投注站的单独期次的文件存放到同一个文件中,这样做的好处是单个文件的大小变小了,读取成为可能,缺点是你要去管理大量的小文件。针对问题二、如果考虑一台主机就能存个三年五载的数据,不妨搞个磁盘阵列,或者多加几块T级的存储硬盘。这么做的好处是空间问题得到解决了,缺点是仍然面临IO读取速度的问题。针对问题三、可以采用磁带机,或者物理隔离的冗余备份,考虑到数据的特点,数据一次写入,不会发生变更,所以即使是刻盘的方式都是能够解决问题的,这么做自然能做到保障数据的可用性,但是同样的存在问题,那就是即时可用性,无论什么原因,我必须停下当前的工作,重新进行数据的导入和加载。

1.2.3 前沿技术

  如果双色球历史数据存储的问题,结合最新的分布式存储(HDFS),会得到怎么样的效果呢?我们不妨仔细的考虑一下。如果采用分布式单文件存储,每一期作为一个文件,可以很好的解决存储空间和高可用性的问题,但是分段读取还是一个障碍,除非你一次想使用整个文件。所以还是要妥协,那就是把文件按照上一节中提到的方式进行切分。只是考虑业务分析的需求,粒度可以控制在以地域为单位或者以投注站为单位,粒度过细则会涉及到HDFS文件分块的问题(64M)。

1.3 数据库存储

1.3.1 核心问题

  考虑到双色球投注数据的特点,每一个选注为一个独立的数据单元,一条记录。采用关系型数据库进行存储的好处很明显,就是结构清晰,访问方便。但是由于数据规模的问题,单表存储2亿条记录,如果采用传统关系型数据库,面临的核心问题就是单表记录数过大的问题。

1.3.2 传统技术-分区&分表

  历史的因素,关系型数据一致面临大数据应用领域的挑战,当然也衍生出来许多的解决办法,比如说分区,比如说分表。分区的核心思想在于增加单表的空间,而分表的核心思想则在于分而治之。但是都无法逃避单点访问受限的问题,再怎么变,也要受控于RDMS服务器的性能。

1.3.3 前沿技术-NoSQL

  如果采用No-SQL技术(Hbase)又会是怎么样的情形呢?我们以期次为单位组织表结构,每期一个文件,以投注站编号和流水号为rowkey,以红球为family1,以篮球为family2。根据Hbase的特点,则既可以解决记录数的问题,也可以解决访问并发访问性能的问题(Hbase文件存储采用HDFS)。同时Hbase基础之上有很多分布式并行计算的工具可用,可以很好的协调多服务器的并行计算。

1.4 对比分析

  前文已述,很喜欢No-SQL方式的实现,个人认为是目前最为恰当的方式。引玉抛砖,还是多听听各位大牛的意见吧。


作者:张子良
出处:http://www.cnblogs.com/hadoopdev
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

相关实践学习
简单用户画像分析
本场景主要介绍基于海量日志数据进行简单用户画像分析为背景,如何通过使用DataWorks完成数据采集 、加工数据、配置数据质量监控和数据可视化展现等任务。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
19天前
|
存储 消息中间件 监控
【Flume】Flume在大数据分析领域的应用
【4月更文挑战第4天】【Flume】Flume在大数据分析领域的应用
|
1月前
|
Cloud Native 数据处理 云计算
探索云原生技术在大数据分析中的应用
随着云计算技术的不断发展,云原生架构作为一种全新的软件开发和部署模式,正逐渐引起企业的广泛关注。本文将探讨云原生技术在大数据分析领域的应用,介绍其优势与挑战,并探讨如何利用云原生技术提升大数据分析的效率和可靠性。
|
1月前
|
存储 消息中间件 大数据
Go语言在大数据处理中的实际应用与案例分析
【2月更文挑战第22天】本文深入探讨了Go语言在大数据处理中的实际应用,通过案例分析展示了Go语言在处理大数据时的优势和实践效果。文章首先介绍了大数据处理的挑战与需求,然后详细分析了Go语言在大数据处理中的适用性和核心技术,最后通过具体案例展示了Go语言在大数据处理中的实际应用。
|
29天前
|
数据采集 分布式计算 大数据
Java语言在大数据处理中的应用
传统的大数据处理往往依赖于庞大的数据中心和高性能的服务器,然而随着大数据时代的到来,Java作为一种强大的编程语言正在被广泛应用于大数据处理领域。本文将探讨Java语言在大数据处理中的优势和应用,以及其在分布式计算、数据处理和系统集成等方面的重要作用。
|
1月前
|
存储 大数据 数据挖掘
云计算与大数据:从基础设施到实际应用
云计算与大数据:从基础设施到实际应用
126 0
|
21天前
|
NoSQL 大数据 数据挖掘
现代数据库技术与大数据应用
随着信息时代的到来,数据量呈指数级增长,对数据库技术提出了前所未有的挑战。本文将介绍现代数据库技术在处理大数据应用中的重要性,并探讨了一些流行的数据库解决方案及其在实际应用中的优势。
|
26天前
|
机器学习/深度学习 人工智能 数据可视化
基于Python的数据可视化技术在大数据分析中的应用
传统的大数据分析往往注重数据处理和计算,然而数据可视化作为一种重要的技术手段,在大数据分析中扮演着至关重要的角色。本文将介绍如何利用Python语言中丰富的数据可视化工具,结合大数据分析,实现更直观、高效的数据展示与分析。
|
1月前
|
存储 NoSQL 大数据
新型数据库技术在大数据分析中的应用与优势探究
随着大数据时代的到来,传统数据库技术已经无法满足海量数据处理的需求。本文将探讨新型数据库技术在大数据分析中的应用情况及其所带来的优势,为读者解析数据库领域的最新发展趋势。
|
2月前
|
分布式计算 并行计算 大数据
Python多进程在数据处理和大数据分析中的应用
Python多进程在数据处理和大数据分析中的应用
|
2月前
|
存储 NoSQL 大数据
新型数据库技术在大数据处理中的应用探讨
【2月更文挑战第2天】随着信息时代的到来,大数据处理成为了各行业发展的关键。本文将探讨新型数据库技术在大数据处理中的应用,分析其优势和挑战,为读者提供深入了解和思考。
27 5