System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种基于ROS2的数据存储方法技术_技高网

一种基于ROS2的数据存储方法技术

技术编号:40576937 阅读:5 留言:0更新日期:2024-03-06 17:18
本发明专利技术公开了一种基于ROS2的数据存储方法,实施步骤如下:数据存储抽象层基于数据库操作如创建数据库、创建数据表、对数据进行增删改查多种功能进行抽象,提供统一的规范接口,支持多种数据库,从而实现业务代码与数据库的解耦;数据库存储服务为独立进程,通过ROS2向其它进程提供服务;当多个进程同时访问同一个数据库文件时,通过ROS2发送操作请求,数据库存储服务调用数据存储抽象接口完成操作并将结果返回给请求进程,可确保同一时间只有一个数据库连接,进而避免死锁或者访问失败的问题;在多进程访问本地数据库时,保证了同一时间数据库只存在一个连接,避免了多进程访问数据库时容易死锁或者访问失败的问题。

【技术实现步骤摘要】

本专利技术涉及数据存储,具体是一种基于ros2的数据存储方法。


技术介绍

1、在嵌入式开发时,多使用sqlite数据库进行数据的存储。sqlite是一个开源的嵌入式关系数据库,是一种轻量级的、自给自足的、无服务器的、无需配置的、事务性的sql数据库引擎,其特点是高度便携、使用方便、结构紧凑、高效、可靠,体积小,支持acid(原子性、一致性、独立性及持久性atomicity、consistency、isolation、durability)事物。

2、在实际的开发需求中,容易出现多个进程同时访问同一组数据。基于sqlite数据库的实现大都如图1所示。每个进程都独立调用sqlite api访问数据库,每当打开一次数据库都会建立一个连接。成功打开数据库后即可成功对数据进行增删改查操作。

3、ros2是在ros的基础上设计开发的第二代机器人操作系统,可以帮助简化机器人开发任务,加速机器人落地的软件库和工具集,支持dds通信协议。

4、基于现有技术,虽然可以实现多进程访问数据库,但是在高并发访问的情况下容易出现问题,如死锁或者访问失败。sqlite本身的机制虽然能保证多进程时访问数据库时数据的正确性,但是容易出现上述死锁或者访问失败的问题。

5、基于现有技术,在开发时,需要在业务代码中调用sqlite api,这就导致业务代码与sqlite数据库深度耦合,如果需要更换数据库需要额外的时间和人力成本。

6、因此,我们提出了一种基于ros2的数据存储方法来解决上述所提到的问题。>

技术实现思路

1、本专利技术的目的在于提供一种基于ros2的数据存储方法,以解决上述
技术介绍
中提出的问题。

2、为实现上述目的,本专利技术提供如下技术方案:

3、一种基于ros2的数据存储方法,包括数据存储模型,所述数据存储模型由数据存储抽象层以及数据存储服务两个模块构成,其中,实施步骤如下:

4、步骤一:数据存储抽象层基于数据库操作如创建数据库、创建数据表、对数据进行增删改查多种功能进行抽象,提供统一的规范接口,支持多种数据库,从而实现业务代码与数据库的解耦;

5、步骤二:数据库存储服务为独立进程,通过ros2向其它进程提供服务;

6、步骤三:当多个进程同时访问同一个数据库文件时,通过ros2发送操作请求,数据库存储服务调用数据存储抽象接口完成操作并将结果返回给请求进程,可确保同一时间只有一个数据库连接,进而避免死锁或者访问失败的问题。

7、作为本专利技术进一步的方案:所述数据存储方法的具体实施流程包括:

8、(1)datastorage server数据存储服务调用datastorage abstartion数据存储抽象接口进行初始化,读取配置文件,将配置信息存储到内存中,根据数据类型初始化数据库;

9、(2)当数据存储服务接收到操作请求后,打开数据库,在打开数据库时会获取数据库类型并判断数据库是否已经被成功打开,如果数据库被打开,直接返回数据库操作句柄,如果数据库没有被打开,根据数据库类型打开对应的数据库并返回句柄,保证了同一个时刻只有一个数据库被操作;

10、(3)使用数据库的操作句柄创建数据集合,返回数据集合操作句柄;

11、(4)根据操作请求类型判断对数据的操作;

12、(5)关闭数据库;

13、(6)将数据库操作结果返回给请求进程。

14、作为本专利技术进一步的方案:所述操作请求类型判断对数据的操作包括,如增删改查,调用数据存储抽象接口进行数据库的增删改查,获取操作结果。

15、作为本专利技术进一步的方案:所述数据存储模型为多进程访问数据本地数据库的模型。

16、作为本专利技术进一步的方案:所述数据存储模型通过数据库抽象模块支持使用多种数据库,使得应用和数据库解耦。

17、作为本专利技术进一步的方案:所述数据存储模型采用面向数据流的数据分发服务作为其通信机制,所述数据存储模型包括ros2通信系统,所述ros2通信系统不需要主节点,成为去中心化的分布式系统。

18、作为本专利技术进一步的方案:所述数据分发服务是由数据为中心的发布订阅层和数据本地重构层组成;所述数据本地重构层是数据分发服务规范的上层,它使分布式数据可以为本地和远程对象所共享;所述发布订阅层是数据分发服务的核心和底层,负责数据传输和服务质量控制保证,可以将来自发布者的数据高效地交付给订阅者。

19、作为本专利技术再进一步的方案:所述数据分发服务ros2通信系统中,每个数据分发服务实体都有一套服务质量策略,通过控制服务质量策略,数据传输的性能可以被动态调整,从而满足系统对数据传输的多样性要求。

20、与现有技术相比,本专利技术的有益效果是:该基于ros2的数据存储方法,在多进程访问本地数据库时,保证了同一时间数据库只存在一个连接,避免了多进程访问数据库时容易死锁或者访问失败的问题。

21、该基于ros2的数据存储方法,支持多种数据库,实现了业务代码与数据库的解耦,只需修改配置文件即可实现数据库的切换。

本文档来自技高网...

【技术保护点】

1.一种基于ROS2的数据存储方法,其特征在于,包括数据存储模型,所述数据存储模型由数据存储抽象层以及数据存储服务两个模块构成,具体实施步骤如下:

2.根据权利要求1所述的一种基于ROS2的数据存储方法,其特征在于,所述数据存储方法的具体实施流程包括:

3.根据权利要求1所述的一种基于ROS2的数据存储方法,其特征在于,所述操作请求类型判断对数据的操作包括,如增删改查,调用数据存储抽象接口进行数据库的增删改查,获取操作结果。

4.根据权利要求1所述的一种基于ROS2的数据存储方法,其特征在于,所述数据存储模型为多进程访问数据本地数据库的模型。

5.根据权利要求1所述的一种基于ROS2的数据存储方法,其特征在于,所述数据存储模型通过数据库抽象模块支持使用多种数据库,使得应用和数据库解耦。

6.根据权利要求1所述的一种基于ROS2的数据存储方法,其特征在于,所述数据存储模型采用面向数据流的数据分发服务作为其通信机制,所述数据存储模型包括ROS2通信系统,所述ROS2通信系统不需要主节点,成为去中心化的分布式系统。

>7.根据权利要求1所述的一种基于ROS2的数据存储方法,其特征在于,所述数据分发服务是由数据为中心的发布订阅层和数据本地重构层组成;所述数据本地重构层是数据分发服务规范的上层,它使分布式数据可以为本地和远程对象所共享;所述发布订阅层是数据分发服务的核心和底层,负责数据传输和服务质量控制保证,可以将来自发布者的数据高效地交付给订阅者。

8.根据权利要求1所述的一种基于ROS2的数据存储方法,其特征在于,所述数据分发服务ROS2通信系统中,每个数据分发服务实体都有一套服务质量策略,通过控制服务质量策略,数据传输的性能可以被动态调整,从而满足系统对数据传输的多样性要求。

...

【技术特征摘要】

1.一种基于ros2的数据存储方法,其特征在于,包括数据存储模型,所述数据存储模型由数据存储抽象层以及数据存储服务两个模块构成,具体实施步骤如下:

2.根据权利要求1所述的一种基于ros2的数据存储方法,其特征在于,所述数据存储方法的具体实施流程包括:

3.根据权利要求1所述的一种基于ros2的数据存储方法,其特征在于,所述操作请求类型判断对数据的操作包括,如增删改查,调用数据存储抽象接口进行数据库的增删改查,获取操作结果。

4.根据权利要求1所述的一种基于ros2的数据存储方法,其特征在于,所述数据存储模型为多进程访问数据本地数据库的模型。

5.根据权利要求1所述的一种基于ros2的数据存储方法,其特征在于,所述数据存储模型通过数据库抽象模块支持使用多种数据库,使得应用和数据库解耦。

6.根据权利要求1所述的一种基于r...

【专利技术属性】
技术研发人员:唐剑季明清杜承志
申请(专利权)人:霞智科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1