《一种面向异构数据库的海量组播数据入库实现方法.pdf》由会员分享,可在线阅读,更多相关《一种面向异构数据库的海量组播数据入库实现方法.pdf(12页珍藏版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 103559217 A (43)申请公布日 2014.02.05 CN 103559217 A (21)申请号 201310488096.6 (22)申请日 2013.10.17 G06F 17/30(2006.01) (71)申请人 北京航空航天大学 地址 100191 北京市海淀区学院路 37 号 (72)发明人 刘平原 高世伟 吕江花 马世龙 (74)专利代理机构 北京永创新实专利事务所 11121 代理人 祗志洁 (54) 发明名称 一种面向异构数据库的海量组播数据入库实 现方法 (57) 摘要 本发明提供了一种面向异构数据库的海量 组播数据入库实现方法, 按。
2、照一定周期和数量限 定接收组播报文, 将所需报文存入一个一级缓存 数据文件中, 以信号量触发对一级缓存数据文件 的解析, 将报文存入对应型号的二级缓存数据文 件, 对各型号建立对应的二级缓存数据文件存储 目录及相关数据文件和控制文件 ; 各型号入库 线程根据信号量可同步触发入库操作, 解析待入 库二级缓存数据文件, 将解析后的数据通过调用 SQL*Loader 和入库控制文件数据录入对应的数 据库。 本发明实现了海量组播数据实时、 稳定地接 收处理, 实现了多目标数据库同步高效地入库, 提 升了实际应用中对海量组播数据的处理能力, 保 证了数据的完整性, 提高了应用系统的效能。 (51)Int。
3、.Cl. 权利要求书 2 页 说明书 6 页 附图 3 页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书2页 说明书6页 附图3页 (10)申请公布号 CN 103559217 A CN 103559217 A 1/2 页 2 1. 一种面向异构数据库的海量组播数据入库实现方法, 其特征在于, 包括以下步骤 : 步骤一 : 启动组播报文接收线程, 开始接收组播报文 ; 步骤二 : 对接收到的组播报文首先进行完整性判断, 如果不完整, 则继续接收 ; 如果完 整, 则对报文的类型进行检验, 如果不是所需要的类型, 丢弃该报文, 继续接收新的组播报 文 ; 如果是所需的报。
4、文, 将报文存入当前待写入的一级缓存数据文件中 ; 当接收组播报文 的时间达到接收周期或接收的组播报文数量达到指定数量时, 记录已完成接收的一级数据 文件数, 关闭并重命名当前待写入的一级缓存数据文件, 同时生成新的待写入的一级缓存 数据文件 ; 步骤三 : 判断是否有需要解析的一级缓存数据文件, 若有, 读取待解析一级缓存数据文 件中的组播报文, 开始预解析 ; 否则, 继续等待 ; 预解析的方法是 : 解析组播报文报头中的信息来源字段, 获取报文所属的型号, 判断该 型号对应的信息是否已在型号队列中, 如果不在型号队列中, 则获取该型号的信息并添加 到型号队列中, 并创建该型号对应的二级缓。
5、存数据文件存储目录及相关数据文件和控制文 件, 将组播报文写入二级缓存数据文件中, 同时调用线程池, 启动该型号入库线程 ; 如果在 型号队列中, 直接将组播报文写入对应型号的二级缓存数据文件中 ; 所述的型号对应的相 关数据文件和控制文件包括 : 二级缓存数据文件、 入库准备数据文件、 入库控制文件和错误 数据记录文件 ; 当一个一级缓存数据文件预解析完成后, 记录已完成解析的一级缓存数据文件数, 关 闭并重命名当前所有待写入二级缓存数据文件, 更新型号队列中各型号对应的已完成保存 二级缓存数据文件数, 同时生成新的待写入二级缓存数据文件 ; 步骤四 : 各型号入库线程判断对应型号的已完成保。
6、存二级缓存数据文件数是否大于已 入库二级缓存数据文件数, 如果否, 说明没有新的需要入库的数据, 继续等待 ; 如果是, 根据 已入库二级缓存数据文件数获取下一个待入库二级缓存数据文件, 解析该二级缓存数据文 件, 将解析后的数据保存至对应型号的入库准备数据文件中, 解析完成后, 调用数据加载工 具 SQL*Loader 和入库控制文件将入库准备数据文件中的数据录入对应数据库, 同时更新 型号队列中对应型号的已入库二级缓存数据文件数。 2. 根据权利要求 1 所述的一种面向异构数据库的海量组播数据入库实现方法, 其特征 在于, 所述的步骤二中, 当前待写入的一级缓存数据文件唯一且具有固定文件名。
7、, 处于已完 成写入状态的一级缓存数据文件的命名与已完成接收的一级缓存数据文件数相关。 3. 根据权利要求 1 所述的一种面向异构数据库的海量组播数据入库实现方法, 其特征 在于, 步骤二中所述的组播报文, 包括报头和信息体 ; 报头包括长度、 型号编号、 时间、 信息 类型、 信息来源和信息目的字段 ; 长度字段表示除长度字段外报文的长度, 为无符号二进制数, 占 2 个字节, 低字节在 前, 高字节在后 ; 型号编号字段用于标识报文所属型号, 占 8 字节 ; 时间字段用于表示报文的产生时间, 精确到 0.1ms, 为无符号二进制数, 占 6 个字节, 各 字节定义如下 : 1-2 字节用。
8、于表示基于 2010 年 1 月 1 日的积日, 为无符号整型, 低字节在前 ; 3-6 字节用于表示当日累计的 0.1ms 数, 为无符号短整型, 低字节在前 ; 权 利 要 求 书 CN 103559217 A 2 2/2 页 3 信息类型字段用于标识报文的类型和功能, 占 4 个字节, 用 ASCII 字符串表示 ; 信息来源字段用于标识报文的原始产生者, 占 3 个字节 ; 信息目的字段用于标识报文的发送目的地, 占 3 个字节 ; 信息体是一个变长的数据结构, 为报文的具体内容, 由 ASCII 字符或二进制数组成, 格 式由报头中的信息类型确定。 4. 根据权利要求 1 所述的一种。
9、面向异构数据库的海量组播数据入库实现方法, 其特征 在于, 步骤三中所述的型号的信息包括型号编号、 对应的数据库用户名和密码、 保存数据的 表名、 已完成保存二级缓存数据文件数以及已入库二级缓存数据文件数。 5. 根据权利要求 1 所述的一种面向异构数据库的海量组播数据入库实现方法, 其特征 在于, 所述的步骤三, 根据已完成解析的一级缓存数据文件数获取下一个待解析一级缓存 数据文件。 6. 根据权利要求 1 所述的一种面向异构数据库的海量组播数据入库实现方法, 其特征 在于, 步骤三中所述的启动型号入库线程时, 将该型号的信息作为参数传递给入库线程。 7. 根据权利要求 1 所述的一种面向异。
10、构数据库的海量组播数据入库实现方法, 其特征 在于, 步骤三和步骤四中所述的入库准备数据文件, 该文件的格式与对应型号的数据库中 的数据表结构一一对应, 且各型号对应的入库准备数据文件唯一, 并具有固定文件名。 8. 根据权利要求 1 所述的一种面向异构数据库的海量组播数据入库实现方法, 其特征 在于, 步骤三和步骤四中所述的错误数据记录文件, 在调用 SQL*Loader 将数据录入数据库 出现错误数据时, 将错误数据写入。 9. 根据权利要求 1 所述的一种面向异构数据库的海量组播数据入库实现方法, 其特征 在于, 步骤三和步骤四中所述的入库控制文件, 根据入库控制文件模版和对应型号的入库。
11、 准备数据文件路径、 数据表名和数据表中的属性名创建。 权 利 要 求 书 CN 103559217 A 3 1/6 页 4 一种面向异构数据库的海量组播数据入库实现方法 技术领域 0001 本发明属于计算机数据采集领域, 具体涉及一种面向异构数据库的海量组播数据 入库实现方法。 背景技术 0002 在大型系统多型号批量并行测试时, 面临任务重、 型号多和大量重复测试等情况, 测试产生的海量测试数据需要实时地接收并保存到各型号的数据库中, 这种海量数据的处 理具有实时性强、 数据量大、 数据格式复杂和入库压力大的特点。 0003 通常组播数据的入库按数据缓存方式的不同, 有基于共享缓冲区和基于。
12、数据文件 两种入库方式。基于共享缓冲区的入库, 一般采用 “生产者 - 消费者” 模型或其变型,“生产 者” 将接收到的组播数据存入缓冲内存,“消费者” 访问共享内存, 取出数据解析后存入数 据库。基于数据文件的入库, 采用多线程异步操作的方式完成报文接收、 解析和入库, 接收 线程监听网络端口, 接收组播报文, 按一定周期将报文写入缓存数据文件, 生成原始数据文 件 ; 解析线程解析原始数据文件, 生成入库准备文件 ; 入库线程使用 SQL*Loader 技术将入 库准备文件录入数据库。 0004 在大型系统多型号批量并行测试中, 数据库有多个且异构, 在这种情况下以上两 种入库方式各有不足。
13、 : 0005 第一种基于共享缓冲区的入库, 存在的缺陷是 : 缓存大小不易确定, 容易溢出, 特 别是在大数据量时, 系统极不稳定, 无法保证数据的完整性和安全性 ; 共享缓冲区的读写是 同步操作, 效率低 ; 数据入库效率不如采用 SQL*Loader 时效率高, 在数据库是多个且异构 的情况下, 无法保证入库速率。 0006 第二种基于数据文件的入库方式, 虽然能保证数据的接收效率、 稳定性和完整性, 采用 SQL*Loader 技术录入数据, 在入库效率也有所提升, 但是在面对海量数据的解析和入 库, 特别是多个异构数据库的入库时, 无法保证高效性。 发明内容 0007 针对大型系统多。
14、型号批量并行测试时, 产生的海量组播数据需要录入多个异构数 据库的情况, 本发明提出一种面向异构数据库的海量组播数据入库实现方法。通过两级缓 存数据文件对组播数据进行存储和分类, 通过多线程入库的方式保证每个型号的数据的解 析和入库都有专属入库线程完成, 在提高了数据处理效率的同时, 解决了多个异构数据库 入库的问题。 0008 本发明提供的一种面向异构数据库的海量组播数据入库实现方法, 包括以下步 骤 : 0009 步骤一 : 启动组播报文接收线程, 开始接收组播报文 ; 0010 步骤二 : 对接收到的组播报文首先进行完整性判断, 如果不完整, 继续接收 ; 如果 完整, 则对报文的类型进。
15、行检验, 如果不是所需要的类型, 丢弃该报文, 继续接收新的组播 说 明 书 CN 103559217 A 4 2/6 页 5 报文 ; 如果是所需的报文, 将报文存入当前待写入的一级缓存数据文件中 ; 当接收组播报 文的时间达到接收周期或接收的组播报文数量达到指定数量时, 记录已完成接收的一级数 据文件数, 关闭并重命名当前待写入的一级缓存数据文件, 同时生成新的待写入的一级缓 存数据文件 ; 0011 步骤三 : 判断是否有需要解析的一级缓存数据文件, 若有, 读取待解析一级缓存数 据文件中的组播报文, 开始预解析 ; 否则, 继续等待 ; 0012 预解析的方法是 : 解析组播报文报头中。
16、的信息来源字段, 获取报文所属的型号, 判 断该型号对应的信息是否已在型号队列中, 如果不在型号队列中, 则获取该型号的信息并 添加到型号队列中, 并创建该型号对应的二级缓存数据文件存储目录及相关数据文件和控 制文件, 将组播报文写入二级缓存数据文件, 同时调用线程池, 启动该型号入库线程 ; 如果 在型号队列中, 则直接将组播报文写入对应二级缓存数据文件中 ; 0013 当一个一级缓存数据文件预解析完成后, 记录已完成解析的一级缓存数据文件 数, 关闭并重命名当前所有待写入二级缓存数据文件, 更新型号队列中各型号对应的已完 成保存二级缓存数据文件数, 同时生成新的待写入二级缓存数据文件, 等。
17、待下一次预解析 时存储数据 ; 0014 步骤四 : 各型号入库线程判断对应型号的已完成保存二级缓存数据文件数是否大 于已入库二级缓存数据文件数, 如果否, 说明没有新的需要入库的数据, 继续等待 ; 如果是, 根据已入库二级缓存数据文件数获取下一个待入库二级缓存数据文件, 解析该二级缓存数 据文件, 将解析后的数据保存至对应型号的入库准备数据文件中, 解析完成后, 调用数据加 载工具 SQL*Loader 和入库控制文件将入库准备数据文件中的数据录入对应数据库, 同时 更新型号队列中对应的已入库二级缓存数据文件数。 0015 所述的步骤二中, 当前待写入的一级缓存数据文件唯一且具有固定文件名。
18、 ; 处于 已完成写入状态的一级缓存数据文件的命名与已完成接收的一级缓存数据文件数相关。 0016 所述的步骤三中, 所述的型号的信息包括型号编号、 对应的数据库用户名和密码、 保存数据的表名、 已完成保存二级缓存数据文件数以及已入库二级缓存数据文件数。所述 的型号对应的相关数据文件和控制文件包括二级缓存数据文件、 入库准备数据文件、 入库 控制文件和错误数据记录文件。 0017 所述的步骤三中, 根据已完成解析的一级缓存数据文件数获取下一个待解析一级 缓存数据文件。在启动型号入库线程时, 将该型号的信息作为参数传递给入库线程。 0018 所述的入库控制文件, 根据入库控制文件模版和对应型号的。
19、入库准备数据文件路 径、 数据表名和数据表中的属性名创建。 0019 本发明的面向异构数据库的海量组播数据入库实现方法的优点在于 : 0020 (1) 数据接收实时性 : 组播接收、 组播报文预解析和入库操作异步工作, 保证实时 接受并保存组播报文 ; 0021 (2) 数据完整性 : 接收组播报文时的报文完整性判断保证单条报文的完整性, 接收 报文后直接将其存入一级缓存数据文件保证了数据接收的完整性 ; 0022 (3) 稳定性 : 以缓存文件的形式保存组播报文, 而不是将其保存在内存中, 屏蔽了 内存管理的复杂性和可能出现的内存溢出等错误, 增强了系统的稳定性 ; 0023 (4) 屏蔽数。
20、据库异构性 : 根据异构数据库中数据表的不同结构, 生成对应结构的入 说 明 书 CN 103559217 A 5 3/6 页 6 库准备数据文件, 调用入库控制文件模版自动生成对应入库控制文件, 实现了针对异构数 据库的统一入库 ; 0024 (5) 数据入库高效性 : 采用多线程技术, 使每一个型号都有专属入库线程进行数据 解析和入库, 同时采用 SQL*Loader 技术, 保证了系统入库的高效性。 附图说明 0025 图 1 为实现本发明的面向异构数据库的海量组播数据入库实现方法的模块示意 图 ; 0026 图 2 为本发明的面向异构数据库的海量组播数据入库实现方法的流程图 ; 002。
21、7 图 3 为本发明的面向异构数据库的海量组播数据入库实现方法的文件系统示意 图 ; 0028 图 4 为本发明的面向异构数据库的海量组播数据入库实现方法中入库控制文件 模板格式图。 具体实施方式 0029 下文中将参考附图并结合实施例来详细说明本发明的技术方案。 0030 本发明提出的面向异构数据库的海量组播数据入库实现方法, 通过按照一定周期 或数量限制接收组播数据, 将数据分列缓存至一级缓存数据文件, 并以信号量触发方式完 成对一级缓存数据文件的预解析, 根据目录索引分型号将数据缓存至二级缓存数据文件, 运用线程池技术定制专属入库线程, 以信号量触发方式完成对二级缓存数据文件的解析和 入。
22、库, 实现了海量组播数据实时稳定接收和保存。通过预解析将一级缓存数据文件按型号 拆分成多个二级缓存数据文件, 大大减轻报文解析的负担。 使用多线程使型号、 入库线程和 数据库之间一一对应, 避免了入库线程在数据库间频繁切换的问题, 保证了系统的稳定性 和高效性。 0031 如图 1 所示, 本发明提供的一种面向异构数据库的海量组播数据入库实现方法, 其所应用的软件系统, 包含组播接收模块 1、 组播报文预解析模块 2 和入库模块 3。 0032 组播接收模块 1 主要功能包括组播报文接收与过滤和组播报文保存。 0033 组播报文接收与过滤 : 监听组播接收端口, 对接收到的组包报文的类型进行鉴。
23、别, 过滤掉不需要的报文。 0034 组播报文保存 : 将所需报文保存到一级缓存数据文件。组播接收模块 1 按接收周 期或接收组播数划分一级缓存数据文件, 且当前处于写入状态的一级缓存数据文件具有固 定文件名, 处于已完成写入状态的一级缓存数据文件的命名与已完成接收的一级缓存数据 文件数相关。 0035 组播报文预解析模块 2 主要功能包括组播报文预解析与分发和型号队列管理。 0036 组播报文预解析与分发 : 读取一级缓存数据文件中的组播报文, 根据组播报文来 源型号的不同将报文分别保存到各型号对应的二级缓存数据文件中。 0037 型号队列管理 : 型号队列保存所有组播报文来源型号的信息, 。
24、包括型号编号、 对应 数据库的用户名和密码、 保存数据的表名、 数据表属性、 已完成保存二级数据文件数和已入 库二级数据文件数, 型号队列管理的主要功能是型号信息的查询、 保存和删除, 为入库模块 说 明 书 CN 103559217 A 6 4/6 页 7 3 提供必要的数据支撑。 0038 入库模块 3 的主要功能包括入库线程管理、 组播报文解析、 入库控制文件构造和 SQL*Loader 入库。 0039 入库线程管理 : 维护入库线程池, 控制入库线程创建、 启动、 挂起、 恢复和回收。 0040 组播报文解析 : 读取二级缓存数据文件, 解析组播报文。 0041 入库控制文件构造 :。
25、 调用入库控制文件模版, 创建型号对应入库控制文件, 根据型 号队列中的信息, 构造入库控制文件。 0042 SQL*Loader 入库 : 调用 SQL*Loader 和入库控制文件, 将数据录入对应数据库。 0043 结合图 1 和图 2, 对本发明的面向异构数据库的海量组播数据入库实现方法进行 说明。 0044 步骤一 : 启动组播报文接收线程, 开始接收组播报文。入库程序读取配置信息, 初 始化组播接收模块 1、 组播报文预解析模块 2 和入库模块 3, 组播接收模块 1 启动组播报文 接收线程, 开始接收组播报文。本发明实施例中的数据组播通讯机制为 UDP 组播通信。所 述的配置信息。
26、包括组播地址及端口、 数据库地址、 端口及SID(Security Identifiers,安全 标识符 )。 0045 步骤二 : 组播接收模块 1 监听网络端口, 接收组播报文。首先进行完整性判断, 如 果组播报文不完整, 则继续接收, 直到接收完整 ; 如果组播报文完整, 则对接收到的组播报 文的类型进行检验, 如果不是所需要的类型, 则丢弃报文, 继续接收新的报文 ; 如果是所需 的报文, 则将报文信息保存到当前指定的一级缓存数据文件中 ; 当接收组播报文的时间达 到接收周期或接收的组播报文数量达到指定数量, 则关闭当前一级缓存数据文件, 并按既 定规则重命名该一级缓存数据文件, 并记。
27、录已完成接收的一级数据文件数, 同时生成新的 一级缓存数据文件, 等待新接收的组播报文数据的写入。 0046 如图 3 所示, 本发明中的文件目录分为两级, 一级缓存数据文件属于一级目录下 的文件。一级缓存数据文件按状态分为两类 : 0047 a) 第一类是正在接收组播报文写入的缓存文件 : 在第一次有组播报文需要写入 缓存文件时, 由系统自动生成, 当组播报文接收周期或数量达到设定值时关闭 ; 此类数据缓 冲文件具有固定文件名, 且唯一 ; 0048 b) 第二类是已完成数据写入的缓存文件 : 此类一级缓存数据文件在第一类一级 缓存数据文件关闭时, 根据已完成接收的一级数据文件数和既定命名规。
28、范重命名后产生, 同时生成新的第一类一级缓存数据文件。 0049 所述接收的组播报文包括报头和信息体。报头主要包括长度、 型号编号、 时间、 信 息类型、 信息来源和信息目的等字段。 0050 长度字段表示除长度字段外报文的长度, 为无符号二进制数, 占 2 个字节, 低字节 在前, 高字节在后。 0051 型号编号字段用于标识信息所属型号, 占 8 字节。 0052 时间字段用于表示该信息的产生时间, 精确到 0.1ms, 无符号二进制数, 占 6 个字 节, 各字节定义如下 : 0053 1-2 字节用于表示基于 2010 年 1 月 1 日的积日, 无符号整型, 低字节在前 ; 0054。
29、 3-6 字节用于表示当日累计的 0.1ms 数, 无符号短整型, 低字节在前。 说 明 书 CN 103559217 A 7 5/6 页 8 0055 信息类型字段用于标识组播报文的类型和功能, 占 4 个字节, 用 ASCII 字符串表 示。 0056 信息来源字段用于标识组播报文的原始产生者, 占 3 个字节。 0057 信息目的字段用于标识组播报文的发送目的地, 占 3 个字节。 0058 信息体是一个变长的数据结构, 为组播报文的具体内容, 可由 ASCII 字符组成也 可由二进制数组成, 格式由报头中的信息类型确定。 0059 步骤三 : 判断是否有待解析的一级缓存数据文件, 若有。
30、, 则预解析一级缓存数据文 件, 否则, 继续等待。 0060 组播报文预解析模块 2 判断步骤二中的已完成接收的一级缓存数据文件数是否 大于已完成解析的一级缓存数据文件数, 如果二者相等, 说明没有新的需要处理的数据, 继 续等待 ; 如果前者大于后者, 则根据已完成解析的一级缓存数据文件数获取下一个待解析 一级缓存数据文件, 读取组播报文数据, 开始预解析。预解析时, 仅解析报头中的信息来源 字段, 获得产生该报文的型号, 查询数据库获取该型号相关的数据库信息和数据表信息。 0061 组播报文预解析模块 2 对第二类一级缓存数据文件进行预解析, 按信息来源型号 将报文分发并保存至各型号对应。
31、的二级缓存数据文件中。 0062 组播报文预解析模块 2 解析组播报文报头中的信息来源字段, 获取报文所属的型 号, 判断该型号的信息是否已在型号队列中, 如果不在型号队列中, 则获取该型号的信息并 添加到型号队列中, 创建该型号对应的二级缓存数据文件存储目录及相关数据文件和控制 文件, 将组播报文写入二级缓存数据文件, 同时调用线程池, 启动该型号入库线程 ; 如果在 型号队列中, 则直接将组播报文写入该型号对应的二级缓存数据文件中。 0063 所述的型号的信息包括型号编号、 对应的数据库用户名和密码、 保存数据的表名、 已完成保存二级缓存数据文件数以及已入库二级缓存数据文件数。 0064 。
32、所述的型号对应的相关数据文件和控制文件包括二级缓存数据文件、 入库准备数 据文件、 入库控制文件和错误数据记录文件。 0065 在启动型号入库线程时, 将该型号信息作为参数传递给入库线程。 0066 当一个一级缓存数据文件预解析完成后, 记录已完成解析的一级缓存数据文件 数, 关闭所有当前待写入二级缓存数据文件, 并按既定规则重命名二级缓存数据文件, 更新 型号队列中对应的已完成保存二级缓存数据文件数, 同时生成新的二级缓存数据文件, 等 待下一次预解析时存储数据。 0067 如图 3 所示, 二级缓存数据文件属于文件目录中的数据文件, 二级目录即是型号 目录, 型号队列中的每一个型号对应一个。
33、二级目录。二级目录包含对应型号的二级缓存数 据文件、 入库准备数据文件、 入库控制文件和错误数据记录文件。 0068 以某型号为例, 二级缓存数据文件按状态分为两类 : 0069 a) 第一类正在写入组播报文的缓存文件 : 此类二级缓存数据文件对应一个正在 预解析的一级缓存数据文件, 在创建该型号目录时, 由系统自动生成, 当一级缓存数据文件 预解析完毕后关闭, 此类数据文件具有固定文件名, 且唯一 ; 0070 b) 第二类是已完成数据写入的缓存文件 : 此类二级缓存数据文件是当第一类二 级缓存数据文件关闭时, 根据已完成接收的二级数据文件数和既定命名规范重命名后产 生, 同时生成新的第一类。
34、二级缓存数据文件。 说 明 书 CN 103559217 A 8 6/6 页 9 0071 步骤四 : 入库模块 3 对第二类二级缓存数据文件进行解析, 并将解析后的数据保 存到对应型号的入库准备数据文件中, 调用数据加载工具 SQL*Loader 方法和入库控制文 件, 将入库准备数据文件中的数据录入型号对应的数据库。 0072 各型号入库线程判断对应型号的已完成保存二级缓存数据文件数是否大于已入 库二级缓存数据文件数, 如果否, 说明没有新的需要入库的数据, 继续等待 ; 如果是, 根据 已入库二级缓存数据文件数获取下一个待入库二级缓存数据文件, 解析该二级缓存数据文 件, 将解析后的数据。
35、保存至对应型号的入库准备数据文件中, 解析完成后, 调用 SQL*Loader 和入库控制文件将入库准备数据文件中的数据录入对应数据库, 同时更新型号队列中对应 型号的已入库二级缓存数据文件数。采用多线程技术管理入库线程, 使每一个型号都有专 属入库线程进行数据解析和入库。 0073 入库准备数据文件、 错误数据记录文件和入库控制文件同属文件系统中第二级目 录下的文件, 如图 3 所示。入库准备数据文件的格式与对应型号的数据库中的数据表结构 一一对应, 入库控制文件通过调用入库控制文件模版, 根据对应型号的数据库的信息和具 体数据表结构而创建, 从而实现异构数据库的入库。 0074 入库准备数。
36、据文件在创建该型号的二级缓存数据文件存储目录时, 由系统自动生 成, 根据对应数据库中数据表的格式, 将解析出的数据写入入库准备数据文件, 文件为 csv 格式, 当该入库数据准备文件中的数据入库完成后, 清空该文件 ; 此类数据文件具有固定文 件名, 且在型号的二级缓存数据文件存储目录下唯一。 0075 错误数据记录文件在创建该型号的二级缓存数据文件存储目录时, 由系统自动生 成, 当调用 SQL*Loader 将数据录入数据库时, 如果出现错误数据, 则将该数据写入错误数 据记录文件。 0076 入库控制文件在创建该型号的二级缓存数据文件存储目录时, 根据入库控制文件 模板和型号队列中对应。
37、型号的数据库相关信息, 由系统自动生成。 0077 入库控制文件模版属于文件系统中第一级目录下的文件, 入库控制文件模版如图 4 所示, 其中 “$file_path$” 、“$table_name$” 和 “$table_element$” 分别代表待录入数据 库的入库准备数据文件路径、 数据表名和数据表中的属性名, 在入库控制文件模版被调用 生成具体的入库控制文件时,“$file_path$” 、“$table_name$” 和 “$table_element$” 将对 应的被替换为实际值。 说 明 书 CN 103559217 A 9 1/3 页 10 图 1 说 明 书 附 图 CN 103559217 A 10 2/3 页 11 图 2 说 明 书 附 图 CN 103559217 A 11 3/3 页 12 图 3 图 4 说 明 书 附 图 CN 103559217 A 12 。