CN117407445A - 一种车联网数据平台数据存储方法、***及存储介质 - Google Patents
一种车联网数据平台数据存储方法、***及存储介质 Download PDFInfo
- Publication number
- CN117407445A CN117407445A CN202311408021.2A CN202311408021A CN117407445A CN 117407445 A CN117407445 A CN 117407445A CN 202311408021 A CN202311408021 A CN 202311408021A CN 117407445 A CN117407445 A CN 117407445A
- Authority
- CN
- China
- Prior art keywords
- data
- database
- hbase
- mysql
- query
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 61
- 238000013500 data storage Methods 0.000 title claims abstract description 53
- 238000003860 storage Methods 0.000 title claims abstract description 24
- 235000006719 Cassia obtusifolia Nutrition 0.000 claims abstract description 35
- 235000014552 Cassia tora Nutrition 0.000 claims abstract description 35
- 244000201986 Cassia tora Species 0.000 claims abstract description 33
- 238000013507 mapping Methods 0.000 claims abstract description 16
- 230000006855 networking Effects 0.000 claims abstract description 5
- 238000012545 processing Methods 0.000 claims description 71
- 230000006870 function Effects 0.000 claims description 15
- 230000005540 biological transmission Effects 0.000 claims description 11
- 238000004590 computer program Methods 0.000 claims description 6
- 238000010586 diagram Methods 0.000 description 8
- 230000008569 process Effects 0.000 description 8
- 238000012217 deletion Methods 0.000 description 6
- 230000037430 deletion Effects 0.000 description 6
- 238000013461 design Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 238000003780 insertion Methods 0.000 description 4
- 230000037431 insertion Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000005457 optimization Methods 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 3
- 238000013499 data model Methods 0.000 description 3
- 244000277285 Cassia obtusifolia Species 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000005538 encapsulation Methods 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000013515 script Methods 0.000 description 2
- 230000005856 abnormality Effects 0.000 description 1
- 238000007792 addition Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013480 data collection Methods 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 238000013506 data mapping Methods 0.000 description 1
- 238000005111 flow chemistry technique Methods 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/248—Presentation of query results
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/258—Data format conversion from or to a database
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种车联网数据平台数据存储方法、***及存储介质,其中方法步骤包括:步骤S100设置数据库连接器,以根据要连接的数据库,将查询指令转换成对应查询语句,以执行查询操作;步骤S200将MySQL的表名映射为HBase的列族,将MySQL的列名对应到HBase列族中键值对的key,以将MySQL的查询结果集ResultSet通过映射方式,统一转换为HBase的查询结果集ResultScanner;步骤S300数据库连接器使用Result类的getValue方法获取查询结果集中车辆信息对应的特定列的值,以转换成预先定义的JavaBean对象,并返回客户端以供通过JavaBean中提供的getter方法获取数据库查询结果。籍此以实现对MySQL和HBase查询结果集的统一,以灵活应对不同规模的数据存储需求。
Description
技术领域
本发明涉及数据存储技术,尤其涉及在车联网数据平台,将MySQL和HBase这两种不同的数据库结合使用的,数据存储方法、***及存储介质。
背景技术
随着车辆数量增加,数据存储和处理需求也随之变化。在过去,数据量较小,单一节点足以满足要求。然而,随着车辆规模的扩大和计算指标的复杂化,需要更多的服务器资源来处理和存储数据。
因此如何建立一种车联网数据处理平台,以使其既能够适应小规模数据,又能够满足大规模数据的需求,以灵活应对不同规模的数据存储需求,满足车联网数据处理平台的多样性,这是本领域亟待解决的一个难题。
据此,发明人曾考虑到MySQL适用于小规模数据的存储,而HBase则专注于海量数据的分布式存储,能够满足大规模数据存储的需求。因此若能结合两者优点,则能解决上述难题,然而现实问题在于,由于MySQL和HBase是两种不同的数据库,因此两者的查询结果集之间,存在不一致性的问题,因此无法兼容。
发明内容
为此,本发明的主要目的在于提供一种车联网数据平台数据存储方法、***及存储介质,以实现对MySQL和HBase查询结果集的统一,以灵活应对不同规模的数据存储需求。
为了实现上述目的,根据本发明的第一个方面,提供了一种车联网数据平台数据存储方法,其步骤包括:
步骤S100设置数据库连接器,以根据要连接的数据库,将查询指令转换成对应查询语句,以执行查询操作;
步骤S200将MySQL的表名映射为HBase的列族,将MySQL的列名对应到HBase列族中键值对的key,以将MySQL的查询结果集ResultSet通过映射方式,统一转换为HBase的查询结果集ResultScanner;
步骤S300数据库连接器使用Result类的getValue方法获取查询结果集中车辆信息对应的特定列的值,以转换成预先定义的JavaBean对象,并返回客户端以供通过JavaBean中提供的getter方法获取数据库查询结果。
在可能的优选实施方式中,所述的车联网数据平台数据存储方法,步骤还包括:
步骤S210优化MySQL数据写入,使用Flink的Sink功能,通过配置flink-connector-jdbc的JdbcSink.sink,设定时间或数据条数的间隔,以允许定时批量将数据写入MySQL数据库。
在可能的优选实施方式中,所述的车联网数据平台数据存储方法,步骤还包括:
步骤S220优化HBase数据写入,使用Flink的API中的window函数,借助时间窗口实现按固定时间间隔将数据写入HBase数据库。
为了实现上述目的,对应上述方法,根据本发明的第二个方面,还提供了一种车联网数据平台数据存储***,其包括:
存储单元,用于存储包括如上中任一所述车联网数据平台数据存储方法步骤的程序,以供数据库单元,采集单元,传输单元,处理单元适时调取执行;
数据库单元,包括数据库连接器,MySQL数据库及HBase数据库,其中数据库连接器用于根据要连接的数据库,将查询指令转换成对应查询语句,以执行查询操作,并将查询后的MySQL查询结果集ResultSet通过映射方式,转换为HBase的查询结果集ResultScanner;数据库连接器还用于使用Result类的getValue方法获取查询结果集中车辆信息对应的特定列的值,以转换成预先定义的JavaBean对象,并返回客户端以供通过JavaBean中提供的getter方法获取数据库查询结果;
采集单元,用于搜集车辆数据,并转换为预设格式的第一数据;
传输单元,用于通过消息队列方式将第一数据实时传输至处理单元;
处理单元,用于通过Flink的Sink将实时处理的第一数据批量写入MySQL数据库、及将经过流处理的数据写入HBase数据库中。
在可能的优选实施方式中,其中所述处理单元,还使用Flink的Sink功能,通过配置flink-connector-jdbc的JdbcSink.sink,设定时间或数据条数的间隔,以允许定时批量将第一数据写入MySQL数据库。
在可能的优选实施方式中,其中所述处理单元,还使用Flink的API中的window函数,借助时间窗口实现按固定时间间隔将第一数据写入HBase数据库。
为了实现上述目的,对应上述方法,根据本发明的第三个方面,还提供了一种计算机可读存储介质,其上存储有计算机程序,其中所述计算机程序被处理器执行时,实现如上中任一项所述车联网数据平台数据存储方法的步骤。
通过本发明提供的该车联网数据平台数据存储方法、***及存储介质,巧妙的采用了映射技术,将HBase和MySQL的查询结果集进行了统一,以使车联网品台能够将MySQL和HBase这两种不同的数据库结合使用,实现了小规模和大规模数据存储的平衡,以满足不同规模的数据存储需求,及车联网数据处理平台的数据存储多样性要求。
附图说明
构成本申请的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1为本发明的车联网数据平台数据存储方法的步骤示意图;
图2为本发明的车联网数据平台数据存储方法中数据库查询逻辑示意图;
图3为本发明的车联网数据平台数据存储方法中MySQL数据库体系架构示意图;
图4为本发明的车联网数据平台数据存储方法中HBase数据库体系架构示意图;
图5为本发明的车联网数据平台数据存储***整体运作流程概念示意图;
图6为本发明的车联网数据平台数据存储***数据采集概念示意图;
图7为本发明的车联网数据平台数据存储***流处理概念示意图;
图8为本发明的车联网数据平台数据存储***批处理概念示意图。
具体实施方式
为了使本领域的技术人员能够更好的理解本发明的技术方案,下面将结合实施例来对本发明的具体技术方案进行清楚、完整地描述,以助于本领域的技术人员进一步理解本发明。显然,本案所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思及相互不冲突的前提下,本申请中的实施例及实施例中的特征可以相互组合。基于本发明中的实施例,在本领域普通技术人员没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明的揭露及保护范围。
此外本发明的说明书和权利要求书及附图中的术语“第一”、“第二”、“S100”、“S200”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里描述的那些以外的顺序实施。同时本发明中的术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含。除非另有明确的规定和限定,术语“设置”、“布设”、“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以根据具体情况,结合现有技术来理解上述术语在本案中的具体含义。
为了使车联网数据处理平台,能够灵活的应对不同规模的数据存储需求,考虑到MySQL适用于小规模数据的存储,而HBase则专注于海量数据的分布式存储,能够满足大规模数据存储的需求,因此如果能将HBase和MySQL这两种不同类型的数据库结合使用,则能够在满足性能和成本方面取得平衡,从而更好地适应不同规模的数据处理需求。
为此,如图1至图4所示,本发明提出了一种车联网数据平台数据存储方法,其步骤包括:
步骤S100设置数据库连接器,以根据要连接的数据库,将查询指令转换成对应查询语句,以执行查询操作。
具体来说,在优选示例中,首先客户端会与数据库连接器连接,以下发查询指令,该数据库连接器会获取数据库配置文件中的IP地址和连接信息,以确定要查询的数据库,并根据要连接的数据库类型转换成特定的查询语句,例如:
根据配置信息,判断要查询的数据库是MySQL还是HBase,并生成相应的查询语言。通过配置日期范围和车辆ID,分别生成对应的SQL语句或HBase扫描操作。
当连接到MySQL数据库进行查询时,数据库连接器会将查询请求转换为SQL语句,并在MySQL数据库中执行查询操作。
例如,客户端请求查询“2023年1月1号到2023年1月2号之间的车辆ID为1111、2222和3333的数据”,此时将生成SQL语句: SELECT*FROMt_vehicle_dataWHEREf_vehicle_idIN(1111,2222,3333)ANDf_date_time>='2023-01-0100:00:00'ANDf_date_time<'2023-01-0200:00:00',然后在数据库中查询返回MySQL的查询结果集是ResultSet。
而当连接HBase数据库进行查询时,数据库连接器会根据车辆ID和时间生成对应的HBase表中的Rowkey。
例如,客户端请求查询“当查询2023年1月1号到2023年1月2号之间车辆ID为1111的数据”时,会生成开始Rowkey为11112023-01-01 00:00:00,结束Rowkey为11112023-01-02 00:00:00,然后调用hbase-client包中的Scan类来扫描HBase中的表,获取1111当天对应的数据,并将结果返回为结果集ResultScanner。
此时不难发现,由于两个数据库查询返回的数据库结果集不一致,因此为了实现查询结果集的一致性,则需要将MySQL返回的结果集转换为类似HBase查询结果集的格式。
步骤S200将MySQL的表名映射为HBase的列族,将MySQL的列名对应到HBase列族中键值对的key,以将MySQL的查询结果集ResultSet通过映射方式,统一转换为HBase的查询结果集ResultScanner。
具体的,为了实现MySQL与HBase查询结果集的一致性,本示例优选将MySQL返回的查询结果集通过映射手段,转换为类似HBase查询结果集的格式,如将MySQL的表名映射为HBase的列族,将表中的列逐一对应,并按HBase列族下的键值对进行赋值。
例如,MySQL表t_vehicle_data中的列f_vehicle_state值为1,将映射成HBase中列族VD下的键值对,其中key为vstat,value为1;MySQL表t_vehicle_data中的列f_running_state值为2,映射成HBase中列族VD下的键值对,其中key为run_stat,value为2。通过这样的处理,MySQL 的查询结果将会被构造成HBase查询结果集的形式,模拟从HBase数据库查询到的结果,这样结果集就全部转换成ResultScanner实现了查询结果集的一致性,能够合并查询结果集,以便在后续处理中统一处理。
步骤S300数据库连接器使用Result类的getValue方法获取查询结果集中车辆信息对应的特定列的值,以转换成预先定义的JavaBean对象,并返回客户端以供通过JavaBean中提供的getter方法获取数据库查询结果。
具体的,当查询结果集实现统一后,本示例优选将结果集转换成JavaBean(POJO,Plain Old Java Object)的形式。
其中数据库连接器利用Result类的getValue方法来获取特定列的值,并将这些值转换成预先定义好的JavaBean对象。例如,通过result.getValue(Bytes.toBytes("VD"),Bytes.toBytes("vstat"))获取车辆状态值,然后赋值给JavaBean的车辆状态属性javabean.setVehicleState(vehicleState)。这个过程会针对不同的列依次进行。
一旦JavaBeans被构建并赋值,连接器会将这些JavaBeans返回给客户端。在客户端收到JavaBeans后,可以通过JavaBean中提供的getter方法来获取具体的数据,从而实现对查询结果的处理,例如获取车辆状态的值javabean.getVehicleState()。
这样做的目的在于,将数据转换成JavaBean的做法可带来多种优势。如:
面向对象的抽象:JavaBean将数据模型抽象为对象,使得业务逻辑更加自然地在代码中表达出来。
可读性和可维护性:JavaBean提升了代码的可读性和可维护性。通过使用有意义的属性名和方法名,代码更易于理解,追踪和调试。
封装性:JavaBean的getter和setter方法提供了统一的属性访问接口。这种封装性降低了直接访问数据的可能性,从而增加了数据的安全性和隐藏性。
代码重用:JavaBean的设计鼓励对象的重用。相同的JavaBean可以在不同的业务逻辑中多次使用,避免了重复编写类似的数据处理代码,提高了开发效率。
数据格式的统一性:JavaBean保持了数据格式的统一性。在处理来自不同数据源的数据时,将数据转换成JavaBean的形式,有助于规范数据的格式和结构,使得数据处理更为流畅和一致。事实上,这也是我们选择将数据转换为JavaBean的主要原因之一。
序列化和反序列化:JavaBean实现了Serializable接口,使得它们可以在网络传输、持久化存储等场景中进行序列化和反序列化。这不仅实现了数据的持久化,还使得数据能够跨***传输。特别是在集群处理场景下,这一特性变得尤为重要和便捷。
数据存储的兼容性:通过将数据转换成JavaBean的形式,无论是从不同类型的数据库查询出的结果,都能够以相同的JavaBean数据格式呈现。这种一致性使得获取数据的操作变得简便,同时也为多数据库环境提供了兼容性。
从而通过上述示例的方案,便可实现数据查询的兼容性,无论是从MySQL还是HBase数据库查询的结果,都能够以相同的JavaBean数据格式呈现,从而简化了数据获取的操作。通过配置文件,便能轻松地指定要从哪个数据库查询数据,实现了MySQL和HBase查询的兼容性,而无需改变数据获取的逻辑。这种设计不仅在数据查询和获取阶段提升了灵活性和效率,同时也降低了代码的复杂性,为数据平台的稳定性和可扩展性提供了坚实的支持。
进一步的,由于数据库基本的数据操作功能出上述查询外,还包括增、删、改。而本方案的核心是为车联网数据平台提供高效的数据存储服务,其中数据源自车载终端,如按照每10秒或30秒的时间间隔采集车辆信息,并将其写入数据库,这个过程中并不包括数据修改操作。
因此,车辆网数据存储的关键在于有效地支持数据的高效***、查询操作以及删除操作。
为此,为了优化数据***,针对不同的数据模型,在优选示例中,可将MySQL和HBase这两种不同的数据库结合使用,以优化数据***过程。如MySQL采用关系型数据库形式存储数据,而HBase则采用列族存储模式,将数据存储为键值对。为了适配这些不同的数据模型,可进行数据格式的映射和转换。具体而言,可将MySQL的表名转换成HBase中的列族(column family),同时将MySQL的列名对应到HBase列族中键值对的key。
进一步的,在进行数据写入时,为了能够高效地将经过实时处理的车联网数据写入到MySQL和HBase两种不同类型的数据库中,充分利用了各自数据库的特点,以适应不同的存储需求,采取了以下优化策略:
步骤S210 针对MySQL数据库,使用Flink的Sink功能,并通过配置flink-connector-jdbc的JdbcSink.sink,设定时间或数据条数的间隔,以实现定时批量写入数据到MySQL数据库,确保数据的有效入库。
步骤S220 HBase数据写入优化:对于HBase数据库,可使用Flink的API中的window函数,借助时间窗口来实现按固定时间间隔的数据写入。这种方式能够将经过实时处理的数据以批量的方式按时写入到HBase中,从而保障数据的连续存储和高效查询。
在数据删除优化方面,首先,必须进行历史数据的备份以确保数据不会因删除操作而丢失。为避免重复开发,本示例针对不同的数据库,优选设计自定义脚本来实现备份操作。
具体而言,通过调用相应的数据库命令或工具,实现数据的备份。举例来说,使用`mysqldump` 命令可以备份 MySQL 数据,而对于 HBase 数据库,可使用HBase的hbase org.apache.hadoop.hbase.mapreduce.Export命令备份HBase数据。一旦备份完成,便可以调用删除 MySQL 数据的脚本,或者通过设置 HBase 中的 TTL(Time to Live)来清理历史数据。这样的设计能够保证数据的安全备份和高效删除,提升整体数据管理的可靠性。
通过上述设置的数据存储方案,可将HBase和MySQL结合使用,以适应不同规模的数据处理需求。通过数据***、查询和删除的优化策略,有效地支持了车联网数据平台的数据存储服务,确保了数据的高效性、查询性能和稳定性。
另一方面,对应上述方法示例,如图5至图8所示,本发明还提供了一种车联网数据平台数据存储***,其包括:
存储单元,用于存储包括如上中任一所述车联网数据平台数据存储方法步骤的程序,以供数据库单元,采集单元,传输单元,处理单元适时调取执行。
数据库单元,包括数据库连接器,MySQL数据库及HBase数据库,其中在数据量小的情况下:使用单节点的MySQL数据库来存储小规模的数据。它是一种关系型数据库,具有较高的性能和可靠性,适合存储小规模的数据。例如数据处理方面,将Flink部署单节点的Standalone模式,流处理在该模式下运行,像车辆报警,单日里程实时统计,围栏报警等服务都可以部署在该模式下;批处理部署在单节点多线程的模式下运行,例如可统计加速度,急加减速次数,日均里程等指标。
数据量大的情况下:HBase是一种分布式数据库,通过搭建HBase集群,每个节点存储一部分数据。这允许***水平扩展,随着数据量的增加,可以添加更多的节点来分担负载,而不会影响***的性能和可用性。它的高可扩展性和高可用性适合处理海量数据,将数据分散存储在不同的节点上,进而满足车联网数据处理的大规模数据存储需求。例如数据处理方面,流处理可以使用Flink on yarn在集群的分布式模式下运行,根据数据量的多少,自由的切换Flink的内存核心数以及服务的并行度。批处理部署在多个节点多线程的模式下运行。
其中为了确保两个数据库的兼容性,数据库连接器用于根据要连接的数据库,将查询指令转换成对应查询语句,以执行查询操作,并将查询后的MySQL查询结果集ResultSet通过映射方式,转换为HBase的查询结果集ResultScanner;数据库连接器还用于使用Result类的getValue方法获取查询结果集中车辆信息对应的特定列的值,以转换成预先定义的JavaBean对象,并返回客户端以供通过JavaBean中提供的getter方法获取数据库查询结果。
采集单元,用于搜集车辆数据,并转换为预设格式的第一数据。具体来说,车联网的数据采集单元,是车联网***中至关重要的一部分,它涉及从车辆终端和其他传感器中收集数据,以供后续处理和分析。本示例中优选车联网数据平台采用TCP/IP协议进行数据采集,从车辆终端和其他传感器接收原始数据。随后,根据国标GB32960和部标JT/T808协议对这些数据进行解析,将其转换为可读懂的格式。
这些解析后的数据,接着被转换成Protobuf格式的第一数据,以获得诸多优势,如减少存储和传输成本,提高数据处理效率。Protobuf是一种高效的二进制数据序列化格式,其序列化和反序列化速度比JSON快5倍,大小只有JSON的三分之一,内存占用也仅为JSON的三分之一。
如图5所示,解析后的数据转换成Protobuf格式的第一数据后,会被写入本地文件。此举的主要目的是确保在数据处理组件出现故障或维护时不会丢失数据。通过本地文件作为保障机制,能够在异常情况下防止数据丢失,特别是在数据处理组件崩溃或维护期间。
传输单元,用于通过消息队列方式将第一数据实时传输至处理单元。具体的,如图5至图6所示,经过Protobuf格式转换后的第一数据,会被推送至Kafka中。Kafka是一个高效的消息队列***,适用于实时数据传输。这种设计使得车联网数据平台在数据采集、解析、转换和推送的各个阶段都能够高效、可靠地处理数据,从而确保数据的完整性、可恢复性和实时性。
利用消息队列组件,缓冲生产消息和消费消息的处理速度不一致的情况,在生产端数据极剧增加的情况下,仍然可以发挥作用,起到削峰的作用以便于提取实时数据。
车联网数据处理平台使用Kafka作为消息队列组件,用于高效实时数据传输。Kafka分布式架构灵活多样,可以单节点或集群部署,拥有很强的灵活性和可扩展性。Kafka使用的是流式处理技术,实时传输数据,支持高并发的消息读写,对Flink有很强的适配性,可以充分的满足车联网平台的实时传输需求。
处理单元,用于通过Flink的Sink将实时处理的第一数据批量写入MySQL数据库、及将经过流处理的数据写入HBase数据库中。
具体的,如图7至图8所示,车联网数据处理平台使用的是流处理+批处理的模式,实时处理及时传输和处理车辆的实时数据,为车辆和交通管理部门提供实时的信息和洞察。批处理则是对车辆的历史数据进行深入分析,从而发现潜在的模式、趋势和问题,为车辆和交通管理部门提供长期的分析和监控。
在实时处理方面,车联网数据处理平台采用了Flink技术,Flink是一种流处理框架,能够高效地处理实时流数据,保证数据处理的实时性和可靠性。
在数据量小的情况下,Flink可以使用Local-cluster 或者Standalone模式在单节点上独立运行。Flink的Sink将经过实时处理的数据批量写入MySQL数据库,利用MySQL的高性能和可靠性,实现了数据的实时存储和查询。
在数据量大的情况下,Flink可以使用Flink on yarn或者Flink on k8s模式在集群的分布式模式下运行。Flink的Sink将经过流处理的数据高效地写入到HBase集群中,充分发挥了HBase在处理大数据量和高并发请求时的优势。Flink的灵活性和可扩展性也使其成为车联网数据处理的理想选择。
在离线处理方面,车联网数据处理平台采用了批处理服务读取数据库,根据数据量大小可部署单个或多个节点,并利用多线程的方式对每辆车的数据进行独立处理。在数据量小的时候,车联网数据处理平台选择使用MySQL作为数据存储和处理的组件。
MySQL是一种关系型数据库,具有较高的性能和可靠性,支持多线程的处理方式,充分利用现代计算机的多核处理器,提高数据处理的效率和准确性。在数据量大的时候,HBase是一种分布式数据库,具有高可扩展性和高可用性,利用多个服务器并行处理的能力,满足车联网数据处理的需求,提高数据处理的效率和准确性。由此采用实时处理和批处理相结合的方式,能够实现全面、高效的数据处理能力。
进一步的,在优选示例中,所述处理单元,还使用Flink的Sink功能,通过配置flink-connector-jdbc的JdbcSink.sink,设定时间或数据条数的间隔,以允许定时批量将第一数据写入MySQL数据库。
进一步的,在优选示例中,所述处理单元,还使用Flink的API中的window函数,借助时间窗口实现按固定时间间隔将第一数据写入HBase数据库。
另一方面,对应上述方法示例,本发明还提供了一种计算机可读存储介质,其上存储有计算机程序,其中所述计算机程序被处理器执行时,实现如上中任一项所述车联网数据平台数据存储方法的步骤。
综上所述,通过本发明提供的该车联网数据平台数据存储方法、***及存储介质,巧妙的采用了映射技术,将HBase和MySQL的查询结果集进行了统一,以使车联网品台能够将MySQL和HBase这两种不同的数据库结合使用,实现了小规模和大规模数据存储的平衡,以满足不同规模的数据存储需求,及车联网数据处理平台的数据存储多样性要求。
以上公开的本发明优选实施例只是用于帮助阐述本发明。优选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本发明的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本发明。本发明仅受权利要求书及其全部范围和等效物的限制,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
本领域技术人员可以理解,除了以纯计算机可读程序代码方式实现本发明提供的***、装置及其各个模块以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的***、装置及其各个模块以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同程序。所以,本发明提供的***、装置及其各个模块可以被认为是一种硬件部件,而对其内包括的用于实现各种程序的模块也可以视为硬件部件内的结构;也可以将用于实现各种功能的模块视为既可以是实现方法的软件程序又可以是硬件部件内的结构。
此外实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得单片机、芯片或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
此外,本发明实施例的各种不同的实施方式之间也可以进行任意组合,只要其不违背本发明实施例的思想,其同样应当视为本发明实施例所公开的内容。
Claims (7)
1.一种车联网数据平台数据存储方法,步骤包括:
步骤S100设置数据库连接器,以根据要连接的数据库,将查询指令转换成对应查询语句,以执行查询操作;
步骤S200将MySQL的表名映射为HBase的列族,将MySQL的列名对应到HBase列族中键值对的key,以将MySQL的查询结果集ResultSet通过映射方式,统一转换为HBase的查询结果集ResultScanner;
步骤S300数据库连接器使用Result类的getValue方法获取查询结果集中车辆信息对应的特定列的值,以转换成预先定义的JavaBean对象,并返回客户端以供通过JavaBean中提供的getter方法获取数据库查询结果。
2.根据权利要求1所述的车联网数据平台数据存储方法,步骤还包括:
步骤S210优化MySQL数据写入,使用Flink的Sink功能,通过配置flink-connector-jdbc的JdbcSink.sink,设定时间或数据条数的间隔,以允许定时批量将数据写入MySQL数据库。
3.根据权利要求1所述的车联网数据平台数据存储方法,步骤还包括:
步骤S220优化HBase数据写入,使用Flink的API中的window函数,借助时间窗口实现按固定时间间隔将数据写入HBase数据库。
4.一种车联网数据平台数据存储***,其包括:
存储单元,用于存储包括如权利要求1至3中任一所述车联网数据平台数据存储方法步骤的程序,以供数据库单元,采集单元,传输单元,处理单元适时调取执行;
数据库单元,包括数据库连接器,MySQL数据库及HBase数据库,其中数据库连接器用于根据要连接的数据库,将查询指令转换成对应查询语句,以执行查询操作,并将查询后的MySQL查询结果集ResultSet通过映射方式,转换为HBase的查询结果集ResultScanner;数据库连接器还用于使用Result类的getValue方法获取查询结果集中车辆信息对应的特定列的值,以转换成预先定义的JavaBean对象,并返回客户端以供通过JavaBean中提供的getter方法获取数据库查询结果;
采集单元,用于搜集车辆数据,并转换为预设格式的第一数据;
传输单元,用于通过消息队列方式将第一数据实时传输至处理单元;
处理单元,用于通过Flink的Sink将实时处理的第一数据批量写入MySQL数据库、及将经过流处理的数据写入HBase数据库中。
5.根据权利要求4所述的车联网数据平台数据存储***,其中所述处理单元,还使用Flink的Sink功能,通过配置flink-connector-jdbc的JdbcSink.sink,设定时间或数据条数的间隔,以允许定时批量将第一数据写入MySQL数据库。
6.根据权利要求4所述的车联网数据平台数据存储***,其中所述处理单元,还使用Flink的API中的window函数,借助时间窗口实现按固定时间间隔将第一数据写入HBase数据库。
7.一种计算机可读存储介质,其上存储有计算机程序,其中所述计算机程序被处理器执行时,实现如权利要求1至3中任一项所述车联网数据平台数据存储方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311408021.2A CN117407445B (zh) | 2023-10-27 | 2023-10-27 | 一种车联网数据平台数据存储方法、***及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311408021.2A CN117407445B (zh) | 2023-10-27 | 2023-10-27 | 一种车联网数据平台数据存储方法、***及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117407445A true CN117407445A (zh) | 2024-01-16 |
CN117407445B CN117407445B (zh) | 2024-06-04 |
Family
ID=89495838
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311408021.2A Active CN117407445B (zh) | 2023-10-27 | 2023-10-27 | 一种车联网数据平台数据存储方法、***及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117407445B (zh) |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011130706A2 (en) * | 2010-04-16 | 2011-10-20 | Salesforce.Com, Inc. | Methods and systems for performing cross store joins in a multi-tenant store |
CN106294499A (zh) * | 2015-06-09 | 2017-01-04 | 阿里巴巴集团控股有限公司 | 一种数据库数据查询方法和设备 |
US20170075965A1 (en) * | 2015-09-16 | 2017-03-16 | Turn Inc. | Table level distributed database system for big data storage and query |
CN107273506A (zh) * | 2017-06-19 | 2017-10-20 | 西安电子科技大学 | 一种数据库多表联合查询的方法 |
US20180039671A1 (en) * | 2015-04-16 | 2018-02-08 | Huawei Technologies Co., Ltd. | Method and apparatus for querying data in cross-shard databases |
CN109992596A (zh) * | 2019-02-25 | 2019-07-09 | 新智云数据服务有限公司 | 数据处理方法及装置 |
WO2020015495A1 (zh) * | 2018-07-16 | 2020-01-23 | 中兴通讯股份有限公司 | 访问异构数据库的方法、装置、设备、插件及存储介质 |
CN110879812A (zh) * | 2019-11-20 | 2020-03-13 | 浪潮软件股份有限公司 | 一种电商平台中基于spark的数据同步方法 |
CN111241091A (zh) * | 2019-12-29 | 2020-06-05 | 南京云帐房网络科技有限公司 | 一种商业报表数据的分布式列式数据存储转换方法及*** |
WO2021068549A1 (zh) * | 2019-10-10 | 2021-04-15 | 苏宁易购集团股份有限公司 | 一种数据处理方法、平台及*** |
CN113821573A (zh) * | 2021-08-27 | 2021-12-21 | 济南浪潮数据技术有限公司 | 海量数据快速检索服务构建方法、***、终端及存储介质 |
CN113868306A (zh) * | 2021-08-31 | 2021-12-31 | 云南昆钢电子信息科技有限公司 | 一种基于opc-ua规范的数据建模***和方法 |
CN114153895A (zh) * | 2021-11-17 | 2022-03-08 | 深圳市六度人和科技有限公司 | 一种实时数仓框架的搭建方法以及实时数仓框架 |
-
2023
- 2023-10-27 CN CN202311408021.2A patent/CN117407445B/zh active Active
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011130706A2 (en) * | 2010-04-16 | 2011-10-20 | Salesforce.Com, Inc. | Methods and systems for performing cross store joins in a multi-tenant store |
US20180039671A1 (en) * | 2015-04-16 | 2018-02-08 | Huawei Technologies Co., Ltd. | Method and apparatus for querying data in cross-shard databases |
CN106294499A (zh) * | 2015-06-09 | 2017-01-04 | 阿里巴巴集团控股有限公司 | 一种数据库数据查询方法和设备 |
US20170075965A1 (en) * | 2015-09-16 | 2017-03-16 | Turn Inc. | Table level distributed database system for big data storage and query |
CN107273506A (zh) * | 2017-06-19 | 2017-10-20 | 西安电子科技大学 | 一种数据库多表联合查询的方法 |
WO2020015495A1 (zh) * | 2018-07-16 | 2020-01-23 | 中兴通讯股份有限公司 | 访问异构数据库的方法、装置、设备、插件及存储介质 |
CN109992596A (zh) * | 2019-02-25 | 2019-07-09 | 新智云数据服务有限公司 | 数据处理方法及装置 |
WO2021068549A1 (zh) * | 2019-10-10 | 2021-04-15 | 苏宁易购集团股份有限公司 | 一种数据处理方法、平台及*** |
CN110879812A (zh) * | 2019-11-20 | 2020-03-13 | 浪潮软件股份有限公司 | 一种电商平台中基于spark的数据同步方法 |
CN111241091A (zh) * | 2019-12-29 | 2020-06-05 | 南京云帐房网络科技有限公司 | 一种商业报表数据的分布式列式数据存储转换方法及*** |
CN113821573A (zh) * | 2021-08-27 | 2021-12-21 | 济南浪潮数据技术有限公司 | 海量数据快速检索服务构建方法、***、终端及存储介质 |
CN113868306A (zh) * | 2021-08-31 | 2021-12-31 | 云南昆钢电子信息科技有限公司 | 一种基于opc-ua规范的数据建模***和方法 |
CN114153895A (zh) * | 2021-11-17 | 2022-03-08 | 深圳市六度人和科技有限公司 | 一种实时数仓框架的搭建方法以及实时数仓框架 |
Non-Patent Citations (1)
Title |
---|
大数据从业者FELIXZH: "HBase实践案例:车联网监控***", Retrieved from the Internet <URL:https://blog.csdn.net/u012373717/article/details/115402144> * |
Also Published As
Publication number | Publication date |
---|---|
CN117407445B (zh) | 2024-06-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109492040B (zh) | 一种适用于数据中心海量短报文数据处理的*** | |
CN111163002B (zh) | 一种基于容器的边缘网关***和能源数据处理方法 | |
CN102880503B (zh) | 数据分析***及数据分析方法 | |
CN111061788B (zh) | 一种基于云架构的多源异构数据转换整合***及其实现方法 | |
CN106815338A (zh) | 一种大数据的实时存储、处理和查询*** | |
CN103235820B (zh) | 一种集群***中数据存储方法与装置 | |
CN111400326A (zh) | 一种智慧城市数据管理***及其方法 | |
CN109656963B (zh) | 元数据获取方法、装置、设备及计算机可读存储介质 | |
CN108446335B (zh) | 基于数据库的异构***数据抽取及统一对外数据交换方法 | |
CN103631870A (zh) | 一种用于大规模分布式数据处理的***及其方法 | |
CN112347071B (zh) | 一种配电网云平台数据融合方法及配电网云平台 | |
CN110177146A (zh) | 一种基于异步事件驱动的非阻塞Restful通信方法、装置和设备 | |
CN113900810A (zh) | 分布式图处理方法、***及存储介质 | |
CN115588244A (zh) | 一种车联网大数据实时分析方法、装置、设备及介质 | |
CN116719622A (zh) | 业务流程的编排方法及业务流程编排*** | |
CN111752920A (zh) | 用于管理元数据的方法、***及存储介质 | |
CN111339052A (zh) | 一种非结构化日志数据处理方法及装置 | |
CN108173948B (zh) | 一种分布式试验数据实时交换方法 | |
CN101989939A (zh) | 实时数据提供方法、服务器和网络 | |
CN117407445B (zh) | 一种车联网数据平台数据存储方法、***及存储介质 | |
CN112817539A (zh) | 一种工业数据存储方法、***、电子设备及存储介质 | |
CN114969190A (zh) | 可扩展的区块链数据导出工具 | |
CN115567526A (zh) | 数据监控方法、装置、设备及介质 | |
CN114090529A (zh) | 一种日志管理方法、装置、***和存储介质 | |
CN115048437A (zh) | 一种基于核电Paas平台的数据服务方法及*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |