本发明涉及大数据,更具体地说,本发明涉及一种用于大数据快速存储的方法及系统。
背景技术:
1、当前,应用设备智能互联、数字化转型、高性能存储和云计算等技术的发展加速了大数据相关技术的进步,而作为实现大数据价值的关键环节,数据存储与管理技术也日新月异,引领着大数据的变革。
2、目前,大数据存储涉及介质、数据结构、数据连接控制等关键技术,存储机制正由集中式向分布式、云存储等方向转变。为了实现数据的冗余备份和高可用性,大数据存储通常需要进行数据复制和冗余。这会占用更多的存储空间,并增加维护和管理的复杂性,此外大数据存储涉及大量的敏感数据,数据安全和隐私保护成为重要的问题。
技术实现思路
1、为了克服现有技术的上述缺陷,本发明的实施例提供一种用于大数据快速存储的方法及系统,通过存储优化技术,提高存储系统的性能和响应速度,以解决上述背景技术中提出的问题。
2、为实现上述目的,本发明提供如下技术方案,一种用于大数据快速存储的方法,具体包括以下步骤:
3、101、使用列式数据库存储数据,支持大规模数据处理,减少存储空间和成本;
4、102、通过并行处理和分布式存储,实现大数据的快速写入和读取;
5、103、将切分的数据块和副本分配给不同的存储节点,通过增加节点,实现系统的横向扩展;
6、104、采用存储优化技术,提高存储系统的性能和响应速度,减少存储空间占用;
7、105、根据实际需求为大数据建立索引结构,加快数据的访问速度,加速存储和查询操作;
8、106、在系统发生故障,采取措施使系统恢复到正常工作状态,减少故障对整个系统的影响。
9、在一个优选地实施方式中,所述步骤101中,在使用列式数据库之前,确定数据的结构、字段和关系,定义数据库中每个表的列和其数据类型,列式数据库会根据这些定义来存储和处理数据,具体包括以下内容:
10、s1、数据导入:使用数据导入工具将数据从不同的数据源导入数据库中,在列式数据库中,数据按列存储,每个表的每一列都会被分开存储,将同一列的数据值会连续存储在一起;
11、s2、数据压缩:通过哈夫曼编码对数据进行压缩,提高存储效率并降低存储成本,具体包括以下步骤:
12、步骤1、统计字符出现的频率:通过遍历数据集并记录每个字符的出现次数,统计原始数据中每个字符出现的频率,具体计算公式如下:
13、
14、其中,tf表示词频,n表示某个字符在文章中出现的次数,n表示文章的总词数;
15、步骤2、构建哈夫曼树:根据字符频率构建哈夫曼树,将所有字符作为叶子节点,并根据频率构建一个最小堆,反复执行以下步骤直至只剩下一个节点:
16、1)从队列中选择两个频率最低的节点,作为左右子节点创建一个新的父节点;
17、2)将父节点放回队列中,更新其频率为子节点频率之和;
18、步骤3、生成哈夫曼编码:通过遍历哈夫曼树,从根节点到每个叶子节点的路径上,左子树走0,右子树走1,生成对应的哈夫曼编码;
19、步骤4、压缩数据:使用生成的哈夫曼编码替换原始数据中的字符,将原始数据中的每个字符依次替换为对应的哈夫曼编码;
20、步骤5、储存编码表和压缩数据:将生成的哈夫曼编码表和压缩后的数据一同储存,方便后续解压缩操作使用;
21、s3、数据查询:使用sql查询语言,对列式数据库进行各种查询操作,具体包括以下步骤:
22、步骤1、聚合查询:通过对多个列进行聚合操作,返回查询结果;
23、步骤2、连接查询:根据关联条件进行内连接、外连接,以及交叉连接,将多个表中的数据连接起来,返回联合后的结果;
24、步骤3、子查询:在一个查询语句内部嵌套另一个查询语句,包括in子查询、exists子查询、标量子查询,用于处理复杂的条件和逻辑。
25、在一个优选地实施方式中,所述步骤102中,将待处理的数据划分成多个部分,使每个部分能够被独立地进行处理,通过将数据分发到不同的处理单元,进行并发处理,根据处理单元分配给不同的数据部分,并同时执行处理任务,具体包括以下内容:
26、s1、数据分片:通过哈希函数将待存储的数据分割成多个片段,每个片段都包含一部分数据,将数据片段分配给不同的存储节点,每个存储节点将负责存储和管理分配给它的数据片段,具体包括以下步骤:
27、步骤1、确定分片数目:选择md5哈希函数,将输入数据映射为一个固定长度的哈希值,根据需求确定要将数据分割成的片段数目;
28、步骤2、哈希分片:将数据使用md5哈希函数进行分片,将数据的哈希值与分片数目取余,得到对应的分片编号,不同的数据会被映射到不同的分片上;
29、步骤3、存储和检索:根据分片编号,将数据存储到对应的分片中,通过查询哈希值找到对应的分片,进行数据检索;
30、s2、数据传输:使用http协议将数据片段以并行方式传输到相应的存储节点上,具体包括以下步骤:
31、步骤1、并行请求:客户端通过同时发起多个http请求,利用多个连接和带宽,加快数据的传输速度,从不同的存储节点获取数据片段;
32、步骤2、分块传输:在http响应中,使用分块传输编码将响应数据分成多个块进行传输,客户端边接收边处理每个块,实现数据的并行传输和存储;
33、步骤3、cdn缓存:cdn是一种分布式的缓存系统,将数据缓存在位于全球各地的边缘节点上,当用户请求数据,cdn会根据用户的位置和网络状况,选择最近的边缘节点提供数据,减少延迟和提高传输速度。
34、在一个优选地实施方式中,所述步骤103中,将切分的数据块和副本分配给不同的存储节点,节点负责存储和管理分配数据块和副本,使用一致性哈希算法将数据块和副本放置在节点上,通过增加节点,将数据块分布在更多的节点上,实现系统的横向扩展,具体包括以下步骤:
35、步骤1、环形节点空间:一致性哈希算法将节点抽象为一个环形空间,每个节点在环上对应唯一的位置;
36、步骤2、数据哈希映射:将每个数据块通过哈希函数映射到环上的一个位置,每个数据块就有一个对应的位置;
37、步骤3、节点选择:根据数据块的位置选择对应的节点存储数据,选择该数据块所在位置顺时针方向最近的节点作为存储节点;
38、步骤4、副本放置:在环上选择离存储节点顺时针方向的下一个节点作为副本节点,将数据的副本存储在副本节点上,实现容错和高可用性。
39、步骤5、负载均衡:节点分布在环上,当增加和删除节点,只需调整受影响的部分数据块的存储位置,不会导致整体数据重新分布,实现负载均衡。
40、在一个优选地实施方式中,所述步骤104中,根据数据的访问特性将数据划分为多个分区,使用固态硬盘代替传统硬盘驱动器,将重要数据存储在高速存储介质上,采用数据去重技术减少存储空间占用,提高关键数据的响应速度,具体包括以下内容:
41、s1、数据分区和分层存储:根据数据的访问特性将数据划分为多个分区,将重要、频繁访问的数据存储在高速存储介质上,提高关键数据的响应速度,同时降低存储成本;
42、s2、数据去重:采用数据去重技术减少数据的存储空间,通过比较数据块的特征,识别出重复数据,在存储过程中保留一份副本,其他重复的数据块则只保留引用指针,减少存储空间的消耗,并提高存储系统的效率。
43、在一个优选地实施方式中,所述步骤105中,根据实际需求为大数据建立索引结构,通过将数据按照键值排序并存储在磁盘上,使得在查询时能够有效地进行二分查找,减少磁盘i/o操作,提高查询效率,具体包括以下内容:
44、s1、构建b树索引:b树索引是一种多叉平衡查找树,通过将数据按照键值排序并存储在磁盘上,使得在查询时能够有效地进行二分查找,减少磁盘i/o操作,具体包括以下步骤:
45、步骤1、创建一个空的b树,作为索引结构的根节点;
46、步骤2、逐个插入数据项到b树中,按照键的大小进行插入操作;
47、步骤3、插入过程中发现某节点中的键值个数已达到上限,进行节点的分裂操作,将节点分裂成两个节点,并将中间值提升到父节点中;
48、步骤4、不断重复步骤2和步骤3,直到所有数据项都被插入到b树中;
49、步骤5、最终得到一个平衡的b树,其中每个节点的键值按照大小有序排列。
50、s2、b树索引的查询:通过不断地比较和转向子节点,b树索引能够快速定位到存储目标数据的叶子节点,在叶子节点上,直接获取到对应的数据项,完成查询操作,具体包括以下步骤:
51、步骤1、从根节点开始,在节点中查找目标键值;
52、步骤2、目标键值等于节点中的某个键值,找到了对应的数据项,查询结束;
53、步骤3、目标键值小于节点中的最小键值,转向节点的左子节点,继续执行第1步;
54、步骤4、目标键值大于节点中的最大键值,转向节点的右子节点,继续执行第1步;
55、步骤5、重复执行2到4步骤,直到在某个叶子节点中找到目标键值。
56、在一个优选地实施方式中,所述步骤106中,在系统发生故障,采取措施使系统恢复到正常工作状态,在面对部分故障的情况下仍然能够保持功能正常和可用,提高系统的可靠性和可用性,减少故障对整个系统的影响,具体包括以下内容:
57、s1、故障恢复:在系统发生硬件故障、软件错误、网络中断情况,采取措施使系统恢复到正常工作状态,具体包括以下步骤:
58、步骤1、定位故障:利用监控及时发现故障,通过日志分析、错误排查方式,确定故障发生的位置和原因;
59、步骤2、恢复服务:采取纠正措施,修复故障的同时切换到备用系统,使系统能够继续提供服务;
60、步骤3、恢复数据一致性:进行数据恢复操作,确保数据的完整性;
61、s2、容错:在分布式系统中预防和处理故障,使系统能够在面对部分故障的情况下仍然能够保持功能正常和可用,提高系统的可靠性和可用性,减少故障对整个系统的影响,具体包括以下步骤:
62、步骤1、冗余备份:使用raid数据冗余技术,通过将数据分散存储在多个磁盘上,实现数据冗余和容错,利用raid 5奇偶校验信息将数据和校验码分布在三个磁盘,并将数据和校验码分别存储在不同的磁盘上,当其中一个磁盘发生故障,利用其余的数据和校验码进行数据恢复;
63、步骤2、容错算法:采用选举算法,确保系统在故障时能够正常工作,使用bully算法,用于处理节点发生故障的选举过程,每个节点有一个唯一的id,当一个节点发现当前的领导者节点失效,发送选举消息给比自身id更大的其他节点,这些节点回复确认消息,以及发起自己的选举,最终,id最大的节点成为新的领导者;
64、步骤3、容错测试:通过模拟故障和故障恢复的测试,验证系统的容错机制是否能够正常工作,使用故障注入工具来模拟各种故障情况,包括节点崩溃、网络中断、消息丢失,帮助评估系统在不同故障条件下的响应和恢复能力。
65、本发明的技术效果和优点:
66、本发明使用列式数据库存储数据,支持大规模数据处理,通过将数据分发到不同的处理单元,进行并发处理,将切分的数据块和副本分配给不同的存储节点,使用一致性哈希算法将数据块和副本放置在节点上,实现系统的横向扩展,根据数据的访问特性将数据划分为多个分区,使用固态硬盘代替传统硬盘驱动器,将重要数据存储在高速存储介质上,采用数据去重技术减少存储空间占用,提高关键数据的响应速度,根据实际需求为大数据建立索引结构,减少磁盘i/o操作,提高查询效率,在系统发生故障,采取措施使系统恢复到正常工作状态,减少故障对整个系统的影响。
1.一种用于大数据快速存储的方法,其特征在于:具体包括以下步骤:
2.根据权利要求1所述的一种用于大数据快速存储的方法,其特征在于:所述步骤101中,在使用列式数据库之前,确定数据的结构、字段和关系,定义数据库中每个表的列和其数据类型,列式数据库会根据这些定义来存储和处理数据,具体计算公式如下:
3.根据权利要求1所述的一种用于大数据快速存储的方法,其特征在于:所述步骤103中,将切分的数据块和副本分配给不同的存储节点,节点负责存储和管理分配数据块和副本,使用一致性哈希算法将数据块和副本放置在节点上,通过增加节点,将数据块分布在更多的节点上,实现系统的横向扩展。
4.根据权利要求1所述的一种用于大数据快速存储的方法,其特征在于:所述步骤104中,根据数据的访问特性将数据划分为多个分区,使用固态硬盘代替传统硬盘驱动器,将重要数据存储在高速存储介质上,采用数据去重技术减少存储空间占用,提高关键数据的响应速度。
5.根据权利要求1所述的一种用于大数据快速存储的方法,其特征在于:所述步骤105中,根据实际需求为大数据建立索引结构,通过将数据按照键值排序并存储在磁盘上,使得在查询时能够有效地进行二分查找,减少磁盘i/o操作,提高查询效率。
6.根据权利要求1所述的一种用于大数据快速存储的方法,其特征在于:所述步骤106中,在系统发生故障,采取措施使系统恢复到正常工作状态,在面对部分故障的情况下仍然能够保持功能正常和可用,提高系统的可靠性和可用性,减少故障对整个系统的影响。
7.一种用于大数据快速存储的系统应用于如权利要求1-7所述的一种用于大数据快速存储的方法,其特征在于:包括列式数据库模块、分布式存储模块、存储节点分配模块、存储优化模块、数据索引模块,以及故障恢复与容错模块;