CN101714151B - 一种基于sql数据库的机顶盒数据存储方法 - Google Patents
一种基于sql数据库的机顶盒数据存储方法 Download PDFInfo
- Publication number
- CN101714151B CN101714151B CN2009101127155A CN200910112715A CN101714151B CN 101714151 B CN101714151 B CN 101714151B CN 2009101127155 A CN2009101127155 A CN 2009101127155A CN 200910112715 A CN200910112715 A CN 200910112715A CN 101714151 B CN101714151 B CN 101714151B
- Authority
- CN
- China
- Prior art keywords
- data
- integer
- sql database
- sql
- database
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种数字电视机顶盒,具体提供一种基于SQL数据库的机顶盒数据存储方法,包括步骤10、机顶盒上电后,首先从Flash上把存储的SQL数据库的部分实体导入内存,对这段内存数据进行初始化判断;步骤20、当有数据需要写入SQL数据库时,选择所需要的SQL数据库的数据,然后根据数据的类型情况,把数据写入相应的地方;步骤30、当要读取数据时,根据所需要的条件在所需的SQL数据库的数据中查询,以得到所需的所有数据结果。本发明方法的优点在于:存储和查询速度快、扩展简单、编写简易,且执行效率高。
Description
【技术领域】
本发明涉及一种数字电视机顶盒,尤其涉及一种基于SQL数据库的机顶盒数据存储方法。
【背景技术】
传统的数字电视机顶盒对数据的存储使用的是比较简单的数组或链表管理方式,在数据量比较大,存储的数据类型比较繁多,查询的条件比较复杂时,会造成程序使用数据库时编写困难,程序执行效率低,速度慢,同时在扩展数据类型和增加查询条件时需要改动大量代码,造成程序编写的负责度和降低程序的稳定性。
【发明内容】
本发明要解决的技术问题,在于提供一种基于SQL数据库的机顶盒数据存储方法,存储和查询速度快、扩展简单、编写简易,且执行效率高。
本发明是这样实现的:一种基于SQL数据库的机顶盒数据存储方法,包括下述步骤:
步骤10、机顶盒上电后,首先从Flash上把存储的SQL数据库的部分实体导入内存,对这段内存数据进行初始化判断;
如果判断为真实有效的SQL数据库实体则初始化过程结束;
如果无效则使用SQL语句在内存进行建表操作,实现对SQL数据库的重建,并把创建后的SQL数据库,从内存中保存到Flash上进行备份;
步骤20、当有数据需要写入SQL数据库时,选择所需要的SQL数据库的数据,然后根据数据的类型情况,把数据写入相应的地方;
步骤30、当要读取数据时,根据所需要的条件在所需的SQL数据库的数据中查询,以得到所需的所有数据结果。
其中,所述步骤20进一步具体为:首先对需要写入的数据进行判断是否已经存在指定的SQL数据库中,或者有更新;如果存在且有更新则把新的数据写入到所需的SQL数据库中;如果数据已存在且没有变化,则不写入SQL数据库中;如果不存在,则把需要写入的数据写入SQL数据库中;在SQL数据库发生写入操作或者更新操作后,触发备份程序把内存中的SQL数据库写入到Flash上保存。
所述步骤30中在查询时若需对大量数据进行查询,首先使用一预存数据库进行预存处理,该预存处理包括:(1)对大数据查询时,先判断是否有预存数据,如果有则读取预存数据,并直接返回需要的结果;(2)如果没有预存数据,则在SQL数据库中进行查询操作,把得到的查询结果写入预存数据库中,同时返回需要的结果;(3)当发现有新的SQL写入操作时,判断是否与预存数据库有关,如果有关则更新预存数据库的结果,并将数据写入数据库,如果无关,则直接将数据写入数据库;(4)把内存数据库镜像与入Flash进行备份。
所述步骤20中,若需要扩展新的数据类型时,只要直接创建新的SQL数据库,然后把新的SQL数据库和原有的SQL数据库进行关联即可。
所述步骤30中如果需要增加新的查询条件,只要编写相应的查询语句,而不用对程序进行大量的修改。
本发明具有如下优点:
1、在存储数据的数据量大时,存储速度快;
2、当查询条件复杂时,查询速度快;
3、当需要增加新的数据类型时,程序扩展方式简单,不需要改动大量代码,只要创建新的SQL数据库和原先的SQL数据库进行关联;
4、需要增加新的查询条件时,程序容易改写,只要编写相应的查询语句;
5、当外部程序使用SQL数据库时不需要编写大量代码,当需要更换查询条件时不需要对外部程序进行大量的改写,只要进行相应的SQL语句的编写即可,同时程序的执行效率高。
【附图说明】
下面参照附图结合实施例对本发明作进一步的说明。
图1是本发明基于SQL数据库的机顶盒数据存储方法的SQL数据库的结构图。
图2是本发明基于SQL数据库的机顶盒数据存储方法的GQL数据库初始化和Flash备份流程框图。
图3是本发明基于SQL数据库的机顶盒数据存储方法的中使用内存来预存数据方式加速查询速度的流程框图。
图4是本发明基于SQL数据库的机顶盒数据存储方法的中对预存数据库更新的流程框图。
【具体实施方式】
请参阅图1所示,本发明中使用的SQL模型包括SQL内核和SQL编译器两个部分。其中SQL内核分为SQL api接口,SQL命令处理器,虚拟机;SQL编译器分为编译器,分析器,代码生成器。该SQL模型的主要工作原理为:
1.SQL语句通过SQL api接口传递到SQL命令处理器;
2.SQL命令处理器把SQL语句拆分为必要的语句分段,送到编译器;
3.编译器把SQL语句分段编译为分析器能够识别的符号,然后把这些符号送到分析器中;
4.分析器把收到的符号分解为具体的SQL的语法,送到代码生成器中;
5.代码生成器把分解后的SQL语法翻译为虚拟器能够识别的代码,送回到SQL命令处理器中;
6.SQL命令处理器把代码生成器生成的代码送入虚拟器中运行,完成必要的数据库的操作。
在本发明中还在Flash上存储了一个与内存中的数据库1对1的备份实体。
如图2至图4所示,以下以机顶盒自动搜台过程为例,说明本发明的基于SQL数据库的机顶盒数据存储方法的执行过程:
步骤10、机顶盒上电后,首先从Flash上把存储的SQL数据库的部分实体(在flash上的SQL数据库的备份实体)导入内存,对这段内存数据进行初始化判断;
如果判断为真实有效的SQL数据库实体则初始化过程结束;
如果无效则使用SQL语句在内存进行建表操作,具体如下:
CREATE TABLE Flash.sortTable\
(bouquetId INTEGER, bouquetName TEXT, PRIMARY
KEY(bouquetId));
CREATE TABLE Flash.program\
(service_id INTEGER(32)primary key,编号INTEGER,节目名TEXT,
加密INTEGER(8),加锁INTEGER(8),\
喜爱INTEGER(8),删除 INTEGER(8),跳过 INTEGER(8),移动
INTEGER(8),\
声道INTEGER(8),音量补偿INTEGER(8),频率INTEGER,调制方
式TEXT,\
符号率INTEGER,服务类型INTEGER,视频PID INTEGER,\
音频 PID INTEGER,PCRPID INTEGER,ecmPID INTEGER(16),
audioEcmPID INTEGER(16),videoEcmPID INTEGER(16),\
sCAT_Sys_ID INTEGER(16),TSID INTEGER(32),\
分类ID TEXT,PID INTEGER,OriNetId INTEGER(16));
CREATE INDEX IF NOT EXISTS Flash.iPro ON program(service_id,编
号);
CREATE TABLE Flash.eventReserved\
(编号 INTEGER,节目名 TEXT,星期 INTEGER(8),事件号
INTEGER,\
显示信息状态INTEGER(8),详细信息TEXT,事件内容TEXT,\
预约状态 INTEGER(8),开始小时INTEGER(8),开始分钟
INTEGER(8),\
结束小时INTEGER(8),结束分钟INTEGER(8),日期INTEGER(32),
类型INTEGER,PRIMARY KEY(编号,事件号));
使用上述这些语句实现对SQL数据库的重建,并把创建后的SQL数据库,从内存中保存到Flash上进行备份,以准备好供数字电视机顶盒读取或写入数据。
步骤20、当有数据需要写入SQL数据库时,选择所需要的SQL数据库的数据,然后根据数据的类型情况,把数据写入相应的地方:
当数字电视机顶盒收到PAT表,PMT表,SDT表后,分析其中的节目的service id,并找出与这个service id对应的音视频的PID,接着会判断是否是新的节目数据,或者是原先的节目发生了变化,还是和原先存储的数据相同。其操作如下:
使用SQL查询语句当有数据需要写入SQL数据库时,首先使用SELECT
PCRPID,ecmPID,sCAT_Sys_ID,视频PID,音频PID,\
audioEcmPID,videoEcmPID FROM program WHERE service_id=%d;
选择所需要的SQL数据库的数据;
然后根据数据的类型情况,分别使用UPDATE program SET\
节目名=′%s′,频率=%d,符号率=%d,调制方式=%d,视频PID=
%d,\
音频PID=%d,加密=%d,服务类型=%d,PCRPID=%d,ecmPID=
%d,\
audioEcmPID=%d,videoEcmPID=%d,sCAT_Sys_ID=%d,跳过=0,
音量补偿=0,\
TSID=%d,PID=%d,OriNetId=%d\
WHERE service_id=%d;
或者INSERT INTO program\
(service_id,编号,节目名,加密,加锁,\
喜爱,删除,跳过,移动,声道,\
音量补偿,频率,调制方式,符号率,服务类型,\
视频PID,音频PID,PCRPID,ecmPID,audioEcmPID,\
videoEcmPID,sCAT_Sys_ID,\
TSID,PID,OriNetId)\
VALUES(%d,%d,′%s′,%d,0,\
0,0,0,0,1,\
0,%d,%d,%d,%d,\
%d,%d,%d,%d,%d,\
%d,%d,\
%d,%d,%d);把数据写入相应的地方。
在需要写入其他SQL数据库时,使用同上的相同步骤,只是语句内容不同,基本模式为:
(1)使用SELECT语句,加上必要的选择条件,找出所需要的SQL数据库中的数据。
(2)判断收到的数据是否已经存在,或者有更新。
(3)如果存在且有更新则使用UPDATE语句把新的数据写入到所需的SQL数据库中。
(4)如果数据在指定的SQL数据库中不存在,则使用INSERT语句把得到的数据写入SQL数据库。
(5)如果数据已存在且没有变化,则不写入SQL数据库中。
(6)在SQL发生写入操作或者更新操作后,触发备份程序把内存中的SQL数据库写入到Flash上保存。
步骤30、当要读取数据时,根据所需要的条件在所需的SQL数据库的数据中查询,以得到所需的所有数据结果。操作流程为:
(1)使用SELECT语句查询所需的SQL数据库的数据;
(2)其中使用where语句选择所需要的条件;
(3)使用ORDER BY语句选择所需要的排序结果;
(4)联合上面的语句得到所需的所有数据结果;
(5)对所得的数据进行必要的操作。
具体如图3所示,该步骤中在查询时若需对大量数据进行查询,为避免操作消耗大量时间,造成查询效率下降,因此首先使用一预存数据库,进行预存处理,该预存处理包括:
(1)对大数据查询时,先判断是否有预存数据,如果有则读取预存数据,并直接返回需要的结果,同时建立它的预存数据库;
(2)如果没有预存数据,则在SQL数据库中进行查询操作,把得到的查询结果写入预存数据库中,同时返回需要的结果;
(3)当发现有新的SQL写入操作时,判断是否与预存数据库有关,如果有关则更新预存数据库的结果,并将数据写入数据库,如果无关,则直接将数据写入数据库;
(4)把内存数据库镜像与入Flash进行备份,具体见图4。
如果没有发现有预存数据库存在,则可先建立一预存数据库,把查询出来的数据写入该预存数据库中。而之后的大量查询操作即可按如上所述步骤(1)~(4)进行查询。
当程序需要扩展新的数据类型时,只要使用CREATE语句创建新的SQL数据库,然后把新的SQL数据库和原有的SQL数据库进行关联即可。
如果需要增加新的查询条件,只要编写相应的查询语句,而不用对程序进行大量的修改。
Claims (5)
1.一种基于SQL数据库的机顶盒数据存储方法,其特征在于:包括下述步骤:
步骤10、机顶盒上电后,首先从Flash上把存储的SQL数据库的部分实体导入内存,对这段内存数据进行初始化判断;
如果判断为真实有效的SQL数据库实体则初始化过程结束;
如果无效则使用SQL语句在内存进行建表操作,实现对SQL数据库的重建,并把创建后的SQL数据库,从内存中保存到Flash上进行备份;其中,使用SQL语句在内存进行建表操作具体如下:
CREATE TABLE Flash.sortTable\
(bouquetId INTEGER,bouquetName TEXT,PRIMARYKEY(bouquetId));
CREATE TABLE Flash.program\
(service_id INTEGER(32)primary key,编号INTEGER,节目名TEXT,加密INTEGER(8),加锁INTEGER(8),\
喜爱INTEGER(8),删除INTEGER(8),跳过INTEGER(8),移动INTEGER(8),\
声道INTEGER(8),音量补偿INTEGER(8),频率INTEGER,调制方式TEXT,\
符号率INTEGER,服务类型INTEGER,视频PID INTEGER,\
音频PID INTEGER,PCRPID INTEGER,ecmPID INTEGER(16),audioEcmPID INTEGER(16),videoEcmPID INTEGER(16),\
sCAT_Sys_ID INTEGER(16),TSID INTEGER(32),\
分类ID TEXT,PID INTEGER,OriNetId INTEGER(16));
CREATE INDEX IF NOT EXISTS Flash.iPro ON program(service id,编号);
CREATE TABLE Flash.eventReserved\
(编号INTEGER,节目名TEXT,星期INTEGER(8),事件号INTEGER,\
显示信息状态INTEGER(8),详细信息TEXT,事件内容TEXT,\
预约状态INTEGER(8),开始小时INTEGER(8),开始分钟INTEGER(8),\
结束小时INTEGER(8),结束分钟INTEGER(8),日期INTEGER(32),类型INTEGER,PRIMARY KEY(编号,事件号));
步骤20、当有数据需要写入SQL数据库时,选择所需要的SQL数据库的数据,然后根据数据的类型情况,把数据写入相应的地方;当数字电视机顶盒收到PAT表,PMT表,SDT表后,分析其中的节目的service id,并找出与这个service id对应的音视频的PID,接着会判断是否是新的节目数据,或者是原先的节目发生了变化,还是和原先存储的数据相同;其操作如下:
使用SQL查询语句当有数据需要写入SQL数据库时,首先使用SELECTPCRPID,ecmPID,sCAT_Sys_ID,视频PID,音频PID,\
audioEcmPID,videoEcmPID FROM program WHERE service_id=%d;
选择所需要的SQL数据库的数据;
然后根据数据的类型情况,分别使用UPDATE program SET\
节目名=′%s′,频率=%d,符号率=%d,调制方式=%d,视频PID=%d,\
音频PID=%d,加密=%d,服务类型=%d,PCRPID=%d,ecmPID=%d,\
audioEcmPID=%d,videoEcmPID=%d,sCAT_Sys_ID=%d,跳过=0,音量补偿=0,\
TSID=%d,PID=%d,OriNetId=%d\
WHERE service_id=%d;
或者INSERT INTO program\
(service_id,编号,节目名,加密,加锁,\
喜爱,删除,跳过,移动,声道,\
音量补偿,频率,调制方式,符号率,服务类型,\
视频PID,音频PID,PCRPID,ecmPID,audioEcmPID,\
videoEcmPID,sCAT_Sys_ID,\
TSID,PID,OriNetId)\
VALUES(%d,%d,′%s′,%d,0,\
0,0,0,0,1,\
0,%d,%d,%d,%d,\
%d,%d,%d,%d,%d,\
%d,%d,\
%d,%d,%d);把数据写入相应的地方;
步骤30、当要读取数据时,根据所需要的条件在所需的SQL数据库的数据中查询,以得到所需的所有数据结果。
2.根据权利要求1所述的一种基于SQL数据库的机顶盒数据存储方法,其特征在于:所述步骤20中,在需要写入其他SQL数据库时,基本模式为:
(1)使用SELECT语句,加上必要的选择条件,找出所需要的SQL数据库中的数据;
(2)判断收到的数据是否已经存在,或者有更新;
(3)如果存在且有更新则使用UPDATE语句把新的数据写入到所需的SQL数据库中;
(4)如果数据在指定的SQL数据库中不存在,则使用INSERT语句把得到的数据写入SQL数据库;
(5)如果数据已存在且没有变化,则不写入SQL数据库中;
(6)在SQL发生写入操作或者更新操作后,触发备份程序把内存中的SQL数据库写入到Flash上保存。
3.根据权利要求1所述的一种基于SQL数据库的机顶盒数据存储方法,其特征在于:所述步骤30中在查询时若需对大量数据进行查询,首先使用一预存数据库进行预存处理,该预存处理包括:
(1)对大数据查询时,先判断是否有预存数据,如果有则读取预存数据,并直接返回需要的结果;
(2)如果没有预存数据,则在SQL数据库中进行查询操作,把得到的查询结果写入预存数据库中,同时返回需要的结果;
(3)当发现有新的SQL写入操作时,判断是否与预存数据库有关,如果有关则更新预存数据库的结果,并将数据写入数据库,如果无关,则直接将数据写入数据库;
(4)把内存数据库镜像写入Flash进行备份。
4.根据权利要求1所述的一种基于SQL数据库的机顶盒数据存储方法,其特征在于:所述步骤20中,若需要扩展新的数据类型时,只要直接创建新的SQL数据库,然后把新的SQL数据库和原有的SQL数据库进行关联即可。
5.根据权利要求1所述的一种基于SQL数据库的机顶盒数据存储方法,其特征在于:所述步骤30中如果需要增加新的查询条件,只要编写相应的查询语句,而不用对程序进行大量的修改。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009101127155A CN101714151B (zh) | 2009-10-28 | 2009-10-28 | 一种基于sql数据库的机顶盒数据存储方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009101127155A CN101714151B (zh) | 2009-10-28 | 2009-10-28 | 一种基于sql数据库的机顶盒数据存储方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101714151A CN101714151A (zh) | 2010-05-26 |
CN101714151B true CN101714151B (zh) | 2012-07-04 |
Family
ID=42417801
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009101127155A Expired - Fee Related CN101714151B (zh) | 2009-10-28 | 2009-10-28 | 一种基于sql数据库的机顶盒数据存储方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101714151B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102438115A (zh) * | 2011-08-17 | 2012-05-02 | 冠捷显示科技(厦门)有限公司 | 广播电视音效存储方法、读取方法及写入方法 |
CN104615618B (zh) * | 2014-05-21 | 2018-07-31 | 北方信息控制集团有限公司 | 一种嵌入式内存数据库的实现方法 |
CN104965738B (zh) * | 2015-06-26 | 2018-04-10 | 深圳市九洲电器有限公司 | 机顶盒数据写入方法及系统 |
CN106874385B (zh) * | 2017-01-11 | 2020-08-07 | 深圳证券通信有限公司 | 一种金融领域关系型数据库高性能访问方法 |
CN110297813B (zh) * | 2019-05-22 | 2022-09-02 | 平安银行股份有限公司 | 数据迁移方法、装置、计算机设备及存储介质 |
CN111966528A (zh) * | 2020-07-13 | 2020-11-20 | 南京璞生电子科技有限公司 | 一种基于flash的微型数据库 |
-
2009
- 2009-10-28 CN CN2009101127155A patent/CN101714151B/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN101714151A (zh) | 2010-05-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101714151B (zh) | 一种基于sql数据库的机顶盒数据存储方法 | |
TW200719147A (en) | Copying storage units and related metadata to storage | |
TW200805134A (en) | Data operations in flash memories utilizing direct data file storage | |
CN103955363A (zh) | 一种程序升级安装包的制作方法 | |
CN102770841A (zh) | 用于产生最小引导映像的方法和装置 | |
CN101042703A (zh) | 使用数据库管理系统管理文件系统的数据的方法 | |
CN101916172B (zh) | 一种基于虚拟磁盘映像逻辑分割的按需软件分发方法 | |
CN107729179A (zh) | 基于相同处理器不同硬件的统一软件镜像实现系统及方法 | |
CN100489860C (zh) | 将对象局部属性更新到关系数据库的方法及装置 | |
CN104267978A (zh) | 一种生成差分包的方法及装置 | |
CN101127051A (zh) | 一种文档同步方法及系统 | |
CN113190534A (zh) | 数据库数据迁移方法及装置 | |
CN111045686A (zh) | 一种提高应用反编译速度的方法、智能终端及存储介质 | |
TW201814546A (zh) | 設備的組件加載方法、裝置以及物聯網系統 | |
US8001314B2 (en) | Storing a driver for controlling a memory | |
WO2011012010A1 (zh) | 一种数据统计装置及方法 | |
CN101510175B (zh) | 目标数据更新至存储器中的方法及其装置 | |
CN101425078A (zh) | 一种软件源代码的更新方法及装置 | |
JP2009048557A (ja) | データ更新装置及びデータ更新方法及びデータ更新プログラム | |
CN102171696A (zh) | 定制资料的生成方法和装置 | |
CN101794217B (zh) | 实现应用程序与文档库系统的扩展模块交互的方法及系统 | |
US20110289298A1 (en) | Semiconductor circuit and designing apparatus | |
CN110471675A (zh) | 一种程序烧录方法、系统、装置及计算机可读存储介质 | |
CN102792296A (zh) | 移动终端中请求页面调度方法、控制器以及移动终端 | |
CN101625702B (zh) | 文件分配表格式数据文件的加密方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20120704 Termination date: 20191028 |