CN102708211A - 一种基于多线程检索并加载数据的方法 - Google Patents
一种基于多线程检索并加载数据的方法 Download PDFInfo
- Publication number
- CN102708211A CN102708211A CN2012101728252A CN201210172825A CN102708211A CN 102708211 A CN102708211 A CN 102708211A CN 2012101728252 A CN2012101728252 A CN 2012101728252A CN 201210172825 A CN201210172825 A CN 201210172825A CN 102708211 A CN102708211 A CN 102708211A
- Authority
- CN
- China
- Prior art keywords
- song
- download
- songs
- terminal
- server
- 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.)
- Pending
Links
Images
Landscapes
- Information Transfer Between Computers (AREA)
Abstract
本发明提供一种基于多线程检索并加载服务器的数据的方法,包括:在所述服务器上建立歌曲表和歌曲下载表,并在各歌曲点播终端均建立一用于检索和下载服务器上的歌曲表和歌曲下载表的线程;线程第一次运行时把服务器上所有的歌曲进行下载并将歌曲的信息填入所述歌曲表和歌曲下载表中,之后线程定时查询服务器上的歌曲表和歌曲下载表中的信息是否有变动,有则下载,替换点播终端内存中的歌曲信息,否,则点播终端不进行更新。内存中的歌曲信息供以后终端要检索查询歌曲时使用,这样终端不再与服务器进行交互,终端则直接读取内存中的歌曲列表信息,其比直接从服务器上检索查询占用的时间和网络资源少,解决了用户长时间等待服务器上操作结果的问题。
Description
【技术领域】
本发明涉及在数字娱乐中数据检索加载的技术领域,尤其涉及一种基于多线程检索并加载数据的方法。
【背景技术】
当前的分布式歌曲点播系统,一般是用户在歌曲点播终端点播时输入需要点播的歌曲名称,歌曲点播终端实时从服务器上查询、返回是否有该歌曲的结果。该分布式歌曲点播系统主要是一服务器和多个歌曲点播终端之间的交互过程;其中,各歌曲点播终端都对应有一MACIP即MAC地址。如图1所示,分布式歌曲点播系统网络结构,每个终端设备必须连接到IP网络,IP网络可以是互联网,城域网,局域网等等。每个服务器允许同时与一个或多个点播终端设备进行通信。点播终端设备可以有多个,局域网可以有多个。当前的分布式歌曲点播系统存在如下缺点:
缺点1:
数据实时从服务器的歌曲数据库查询数据。每次查询歌曲时都要对数据库进行检索操作,当点播终端提交查询多时数据服务器交互多,服务器压力大,数据库服务器造成用户等待结果时间长,甚至可能服务器反应不来,造成数据服务器无响应,程序从而也无响应。
缺点2:
数据实时从歌曲数据库查询数据。当查询数据下载的数据多时,造成网络堵塞,使网络无法使用,整个网络都无法正常使用。
缺点3:
单一的线程检索查询从歌曲数据库查询数据。查询执行时间长,造成程序卡死,无响应。
现有技术中公开了一种“大数据量文件的网络下载的方法”,公开号为:CN101651676,公开日为:2010.02.17的中国专利,该方法涉及服务器和终端,所述服务器具有控制线程和数据线程,所述终端具有控制线程和数据线程,所述大数据量文件的网络下载方法包括下列步骤:1)服务器和终端运行控制线程进行协议信息交互,完成服务器和终端的控制端口协议间的握手;2)步骤1)结束后,服务器和终端运行数据线程,完成服务器和终端的数据端口的握手;3)通过数据线程在服务器和终端的数据端口之间传输数据文件;4)在数据文件传输完毕后重新运行控制线程。该发明能够高效地可靠地传输数据,特别适合于大数据量文件的网络下载。但是该发明只涉及大数据量文件的下载,并未涉及数据的检索,在服务器和终端之间的数据检索过程并未实现优化。
现有技术中还提供了一种“基于多线程的通讯设备生产测试装置”,公开号为:CN201805430U,公开日为:2011.04.20的中国专利,包括能与客户端实现交互且具有多线程操作的服务器端,其特征点是:所述的服务器端分别与多个具有多种测试功能的客户端相连,该实用新型减少测试人员,降低测试过程中的失误率,通过多线程机制,对所有参与测试的客户端数据进行统一管理与汇总,从而提高生产测试效率。该实用新型并未具体给出解决终端提交查询多时数据服务器交互多,服务器压力大,数据库服务器造成用户等待结果时间长,甚至可能服务器反应不来的问题的技术方案。
【发明内容】
本发明要解决的技术问题,在于提供一种基于多线程检索并加载数据的方法,特别适合多分布式的设备查询检索加载数据。
本发明是这样实现的:一种基于多线程检索并加载服务器的数据的方法,包括如下步骤:
步骤10、在所述服务器上建立歌曲表和歌曲下载表;
步骤20、歌曲点播终端开机,建立与所述服务器通信,并在各歌曲点播终端均建立一用于检索和下载服务器上的歌曲表和歌曲下载表的线程;同时在各歌曲点播终端中设定一时间间隔,所述线程第一次运行时把服务器上所有的歌曲进行下载并将歌曲的信息填入所述歌曲表和歌曲下载表中,之后根据该时间间隔向服务器进行检索和下载操作;
步骤30、当任意一歌曲点播终端向服务器进行检索和下载操作时,该歌曲点播终端传入点播终端的MACIP,所述线程根据MACIP在歌曲下载表中检索向服务器下载数据的终端的MAC地址与所述MACIP相同的歌曲;
步骤40、将歌曲下载表中检索到的歌曲进行判断歌曲的信息是否发生变动,发生变动,则变动的歌曲为新歌曲,所述歌曲点播终端下载所述新歌曲,并进入步骤50;未发生变动,则歌曲点播终端不需要更新歌曲,并进入步骤60;
步骤50、将下载到的所述新歌曲存放在歌曲点播终端的内存中;
步骤60、用户在歌曲点播终端点播歌曲时,歌曲点播终端建立一查找线程,从歌曲点播终端的内存查找用户所需的歌曲。
本发明具有如下优点:
1.点播终端检索查询不再实时操作服务器的数据库,而是按时间间隔从服务器上查询数据,与服务器交互少,减少服务器压力,服务器可以带动更多的终端设备运行。
2.点播终端定时从服务器上查询数据,与服务器交互存在变动才下载数据,这样可以减少网络通讯及不必要的数据更新。
3.点播终端直接从内存进行数据检索操作,这样可以更快的响应用户操作,不会让用户长时间等待操作结果。
4.使用专用的线程从服务器端获得所有结果信息让程序操作更流畅,即使服务器上数据多下载时间长也不影响用户操作,不会发生无响应的情况。
5.本发明由于与服务器交互少,减少服务器压力,因此服务器可以带动更多的终端设备运行,即特别适合多分布式的设备系统。
【附图说明】
图1为现有技术中服务器与各歌曲点播终端连接的框架图。
图2为本发明的流程示意图。
【具体实施方式】
请参阅图1所示,本发明的一种基于多线程检索并加载服务器的数据的方法,包括如下步骤:
步骤10、在所述服务器上建立歌曲表和歌曲下载表,具体包括:建立歌曲表,该歌曲表的字段包括歌曲ID、歌曲名称、最后操作更新时间、是否删除;建立歌曲下载表,该歌曲下载表的字段包括歌曲ID、最后下载时间、向服务器下载数据的终端的MAC地址、记录是否删除;所述歌曲表的歌曲ID和歌曲下载表的歌曲ID是对应关系;
步骤20、歌曲点播终端开机,建立与所述服务器通信,并在各歌曲点播终端均建立一用于检索和下载服务器上的歌曲表和歌曲下载表的线程;同时在各歌曲点播终端中设定一时间间隔,所述线程第一次运行时把服务器上所有的歌曲进行下载并将歌曲的信息(该歌曲信息即为歌曲ID、歌曲名称、最后操作更新时间、是否删除、最后下载时间、向服务器下载数据的终端的MAC地址、记录是否删除等信息)填入所述歌曲表和歌曲下载表中,之后根据该时间间隔向服务器进行检索和下载操作;
步骤30、当任意一歌曲点播终端向服务器进行检索和下载操作时,该歌曲点播终端传入点播终端的MACIP,所述线程根据MACIP在歌曲下载表中检索向服务器下载数据的终端的MAC地址与所述MACIP相同的歌曲;
步骤40、将歌曲下载表中检索到的歌曲进行判断歌曲的信息是否发生变动,发生变动,则变动的歌曲为新歌曲,所述歌曲点播终端下载所述新歌曲,并进入步骤50;未发生变动,则歌曲点播终端不需要更新歌曲,并进入步骤60;其中具体包括:将歌曲下载表检索到的歌曲对应的歌曲ID与所述歌曲表的歌曲ID进行关联,在歌曲表中找出相同歌曲ID的歌曲,同时判断所述歌曲表中找出相同歌曲ID的歌曲对应的最后操作更新时间是否大于歌曲下载表中检索到的歌曲对应的最后下载时间;是,则所述歌曲表中检索到的歌曲为新歌曲需要下载,歌曲点播终端下载所述新歌曲,同时将歌曲下载表中所述新歌曲对应的最后操作更新时间进行修改,并进入步骤50;否,将所述歌曲下载表检索到的歌曲对应的歌曲ID与所述歌曲表的歌曲ID进行关联,判断歌曲下载表中检索到的歌曲数量是否少于所述歌曲表中存在的歌曲数量,是少于,则所述歌曲表中多出的歌曲为新歌曲需要下载,歌曲点播终端下载所述新歌曲,同时将多出的歌曲信息添加到所述歌曲下载表中,并进入步骤50;否,则歌曲点播终端不需要更新歌曲,并进入步骤60;
步骤50、将下载到的所述新歌曲存放在歌曲点播终端的内存中;
步骤60、用户在歌曲点播终端点播歌曲时,歌曲点播终端建立一查找线程,从歌曲点播终端的内存查找用户所需的歌曲。
其中,所述歌曲点播终端重新启动时,将释放所述用于检索和下载服务器上的歌曲表和歌曲下载表的线程。所述服务器上的歌曲表和歌曲下载表中的列表信息根据需要分别通过是否删除字段和记录是否删除字段进行删除。
这里要说明的是:步骤40中通过对比数据“歌曲表”有没有存在更新操作的是根据如下两个条件:
条件一:最后操作更新时间与最后下载时间进行比较,最后操作更新时间大于最后下载时间,则说明数据存在更新可以用如下sql语句:
IF exists(Select歌曲名称,最后操作更新时间from歌曲表,歌曲下载表Where最后操作更新时间>最后下载时间and Mac=MACIP)
Update歌曲下载表Set
最后下载时间=最后操作更新时间,
歌曲下载表.是否删除=歌曲表.是否删除
from歌曲表,歌曲下载表
Where最后操作更新时间>最后下载时间and
Mac=MACIP
条件二:“歌曲表”中的数据比”“歌曲下载表”中的数据多说明数据存在更新;把歌曲表中新增的新数据更新至“歌曲下载表”中:
IF exists(select 1 from歌曲表where
not exists(select 1 from歌曲下载表where Mac=MACIP and歌曲ID=歌曲表.歌曲ID)and Mac=MACIP)
Insert into歌曲下载表(歌曲ID,最后下载时间,是否删除)
select歌曲ID,最后下载时间,是否删除from歌曲表whereMac=MACIP and
not exists(select 1 from歌曲下载表where Mac=MACIP and歌曲ID=歌曲表.歌曲ID);
如果以上两个都不成立,则说明没有更新,直接返回,点播终端不需要更新数据。
如果以上条件任意一条件成立则需要下载服务器中的数据替换掉点播终端上内存中的歌曲列表信息数据。
下面结合一实施例对本发明作进一步的说明。
1、在服务器上建立两张数据表“歌曲表”如表1、“歌曲下载表”如表2;歌曲表为每首歌曲记录最后操作更新时间,用于点播终端下载服务器歌曲时、可以通过该歌曲的最后操作时间,来确定是否是存在修改或删除的变动。歌曲下载表通过MAC记录每台点播终端的MAC地址每首歌的下载时间。
表1
歌曲ID | 歌曲名称 | 最后操作更新时间 | 是否删除 |
表2
2、歌曲点播终端开机,建立与所述服务器通信,并在各歌曲点播终端均建立一用于检索和下载服务器上的歌曲表和歌曲下载表的线程;同时在各歌曲点播终端中设定一时间间隔,如每隔5个小时;所述线程第一次运行时把服务器上所有的歌曲进行下载并将歌曲的信息填入所述歌曲表和歌曲下载表中,假如此时歌曲表的信息为表3所示,歌曲下载表的信息如表4所示,
表3
歌曲ID | 歌曲名称 | 最后操作更新时间 | 是否删除 |
1 | 来生 | 2012-02-01 12:00:10 | 否 |
2 | 唯一 | 2012-02-01 12:00:10 | 否 |
表4
3、当一歌曲点播终端隔了5小时向服务器进行检索和下载操作时,该歌曲点播终端传入点播终端的MACIP:00-1B-24-BE-B9-62,所述线程根据MACIP在歌曲下载表(即表4)中检索向服务器下载数据的终端的MAC地址与所述MACIP相同的歌曲;则表4中下列歌曲的信息符合要求,
1 | 2012-01-01 12:00:10 | 00-1B-24-BE-B9-62 | 否 |
2 | 2012-01-01 12:00:10 | 00-1B-24-BE-B9-62 | 否 |
4、此时将歌曲下载表检索到的歌曲对应的歌曲ID即1和2与所述歌曲表(即表3)的歌曲ID进行关联,在歌曲表中找出相同歌曲ID的歌曲,即
1 | 来生 | 2012-02-01 12:00:10 | 否 |
2 | 唯一 | 2012-02-01 12:00:10 | 否 |
同时此时歌曲表中歌曲ID为1和2的歌曲的信息的2012-02-01 12:00:10都是大于歌曲下载表中歌曲ID为1和2的歌曲的信息的2012-01-01 12:00:10时间,则歌曲表中歌曲即
1 | 来生 | 2012-02-01 12:00:10 | 否 |
2 | 唯一 | 2012-02-01 12:00:10 | 否 |
为新歌曲需要下载,歌曲点播终端下载所述新歌曲(歌曲为来生和唯一),同时将歌曲下载表中所述新歌曲对应的最后操作更新时间进行修改为2012-02-01 12:00:10,并进入步骤5;
5、将下载到的所述新歌曲存放在歌曲点播终端的内存中;其可以使用sql语句:Select歌曲ID,歌曲名称,最后操作时间,是否删除from歌曲下载表
Where Mac=MACIP检索返回最新的数据;来实现。
6、用户在歌曲点播终端点播歌曲时,歌曲点播终端建立一查找线程,从歌曲点播终端的内存查找用户所需的歌曲。
总之,本发明点播终端检索查询不再实时操作服务器的数据库,而是按时间间隔从服务器上查询数据并加载,与服务器交互少,减少服务器压力,服务器可以带动更多的终端设备运行。
以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本发明的涵盖范围。
Claims (5)
1.一种基于多线程检索并加载服务器的数据的方法,其特征在于:包括如下步骤:
步骤10、在所述服务器上建立歌曲表和歌曲下载表;
步骤20、歌曲点播终端开机,建立与所述服务器通信,并在各歌曲点播终端均建立一用于检索和下载服务器上的歌曲表和歌曲下载表的线程;同时在各歌曲点播终端中设定一时间间隔,所述线程第一次运行时把服务器上所有的歌曲进行下载并将歌曲的信息填入所述歌曲表和歌曲下载表中,之后根据该时间间隔向服务器进行检索和下载操作;
步骤30、当任意一歌曲点播终端向服务器进行检索和下载操作时,该歌曲点播终端传入点播终端的MACIP,所述线程根据MACIP在歌曲下载表中检索向服务器下载数据的终端的MAC地址与所述MACIP相同的歌曲;
步骤40、将歌曲下载表中检索到的歌曲进行判断歌曲的信息是否发生变动,发生变动,则变动的歌曲为新歌曲,所述歌曲点播终端下载所述新歌曲,并进入步骤50;未发生变动,则歌曲点播终端不需要更新歌曲,并进入步骤60;
步骤50、将下载到的所述新歌曲存放在歌曲点播终端的内存中;
步骤60、用户在歌曲点播终端点播歌曲时,歌曲点播终端建立一查找线程,从歌曲点播终端的内存查找用户所需的歌曲。
2.根据权利要求1所述的基于多线程检索并加载服务器的数据的方法,其特征在于:所述步骤10具体包括:建立歌曲表,该歌曲表的字段包括歌曲ID、歌曲名称、最后操作更新时间、是否删除;建立歌曲下载表,该歌曲下载表的字段包括歌曲ID、最后下载时间、向服务器下载数据的终端的MAC地址、记录是否删除;所述歌曲表的歌曲ID和歌曲下载表的歌曲ID是对应关系。
3.根据权利要求2所述的基于多线程检索并加载服务器的数据的方法,其特征在于:所述步骤40具体包括:将歌曲下载表检索到的歌曲对应的歌曲ID与所述歌曲表的歌曲ID进行关联,在歌曲表中找出相同歌曲ID的歌曲,同时判断所述歌曲表中找出相同歌曲ID的歌曲对应的最后操作更新时间是否大于歌曲下载表中检索到的歌曲对应的最后下载时间;是,则所述歌曲表中检索到的歌曲为新歌曲需要下载,歌曲点播终端下载所述新歌曲,同时将歌曲下载表中所述新歌曲对应的最后操作更新时间进行修改,并进入权利要求1的步骤50;否,将所述歌曲下载表检索到的歌曲对应的歌曲ID与所述歌曲表的歌曲ID进行关联,判断歌曲下载表中检索到的歌曲数量是否少于所述歌曲表中存在的歌曲数量,是少于,则所述歌曲表中多出的歌曲为新歌曲需要下载,歌曲点播终端下载所述新歌曲,同时将多出的歌曲信息添加到所述歌曲下载表中,并进入权利要求1的步骤50;否,则歌曲点播终端不需要更新歌曲,并进入权利要求1的步骤60。
4.根据权利要求1所述的基于多线程检索并加载服务器的数据的方法,其特征在于:所述歌曲点播终端重新启动时,将释放所述用于检索和下载服务器上的歌曲表和歌曲下载表的线程。
5.根据权利要求1所述的基于多线程检索并加载服务器的数据的方法,其特征在于:所述服务器上的歌曲表和歌曲下载表中的列表信息根据需要分别通过是否删除字段和记录是否删除字段进行删除。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2012101728252A CN102708211A (zh) | 2012-05-30 | 2012-05-30 | 一种基于多线程检索并加载数据的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2012101728252A CN102708211A (zh) | 2012-05-30 | 2012-05-30 | 一种基于多线程检索并加载数据的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102708211A true CN102708211A (zh) | 2012-10-03 |
Family
ID=46900977
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2012101728252A Pending CN102708211A (zh) | 2012-05-30 | 2012-05-30 | 一种基于多线程检索并加载数据的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102708211A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104424117A (zh) * | 2013-08-20 | 2015-03-18 | 华为技术有限公司 | 内存物理地址查询方法和装置 |
CN105047187A (zh) * | 2015-08-03 | 2015-11-11 | 广州艾美网络科技有限公司 | 一种点歌装置的点歌控制方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101577626A (zh) * | 2009-06-05 | 2009-11-11 | 西北工业大学 | 基于eMule的主动式特定信息传播监测方法 |
CN101600089A (zh) * | 2009-06-16 | 2009-12-09 | 中兴通讯股份有限公司 | 网络电视系统中的广告业务的实现方法及装置 |
CN101958901A (zh) * | 2010-09-28 | 2011-01-26 | 中兴通讯股份有限公司 | 一种基于长期演进的多媒体点播方法、系统和移动终端 |
-
2012
- 2012-05-30 CN CN2012101728252A patent/CN102708211A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101577626A (zh) * | 2009-06-05 | 2009-11-11 | 西北工业大学 | 基于eMule的主动式特定信息传播监测方法 |
CN101600089A (zh) * | 2009-06-16 | 2009-12-09 | 中兴通讯股份有限公司 | 网络电视系统中的广告业务的实现方法及装置 |
CN101958901A (zh) * | 2010-09-28 | 2011-01-26 | 中兴通讯股份有限公司 | 一种基于长期演进的多媒体点播方法、系统和移动终端 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104424117A (zh) * | 2013-08-20 | 2015-03-18 | 华为技术有限公司 | 内存物理地址查询方法和装置 |
CN104424117B (zh) * | 2013-08-20 | 2017-09-05 | 华为技术有限公司 | 内存物理地址查询方法和装置 |
US10114762B2 (en) | 2013-08-20 | 2018-10-30 | Huawei Technologies Co., Ltd. | Method and apparatus for querying physical memory address |
CN105047187A (zh) * | 2015-08-03 | 2015-11-11 | 广州艾美网络科技有限公司 | 一种点歌装置的点歌控制方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11314698B2 (en) | Dynamically performing data processing in a data pipeline system | |
US10579627B2 (en) | Database operation using metadata of data sources | |
US10346397B2 (en) | System and method for querying data sources | |
US10887171B2 (en) | Routing configuration method of view files, storage medium, terminal device and apparatus | |
US11294904B2 (en) | Method and system for defining an object-agnostic offlinable synchronization model | |
CN106462575A (zh) | 群集内存数据库的设计及实现 | |
CN111008521B (zh) | 生成宽表的方法、装置及计算机存储介质 | |
US9665612B2 (en) | Run-time decision of bulk insert for massive data loading | |
CA2932403A1 (en) | Systems and methods for hosting an in-memory database | |
JP6929388B2 (ja) | クエリリソースキャッシングのためのシステムおよび方法 | |
US10078624B2 (en) | Method of generating hierarchical data structure | |
CN109446443A (zh) | 一种标签更新方法、装置、设备和存储介质 | |
CN112383507B (zh) | 防火墙策略管理方法、装置、系统与计算机可读存储介质 | |
CN101355590A (zh) | 下载提示方法、系统及装置 | |
CN102236707A (zh) | 获取数据库更新数据的方法、装置及系统 | |
CN102708211A (zh) | 一种基于多线程检索并加载数据的方法 | |
US11567808B2 (en) | Dependency handling for configuration transport | |
US20210042302A1 (en) | Cost-based optimization for document-oriented database queries | |
US9600517B2 (en) | Convert command into a BULK load operation | |
CN112368696A (zh) | 用于检索内容的方法和装置 | |
US11755611B2 (en) | Storing and identifying content through content descriptors in a historian system | |
US11055266B2 (en) | Efficient key data store entry traversal and result generation | |
US11693906B2 (en) | Method and system for using access patterns to suggest or sort objects | |
CN110737506A (zh) | 一种虚拟机镜像版本管理的方法 | |
US20190163810A1 (en) | Search User Interface |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20121003 |