CN103092974A - 云os中一种基于内存索引的云主机查询方法 - Google Patents

云os中一种基于内存索引的云主机查询方法 Download PDF

Info

Publication number
CN103092974A
CN103092974A CN2013100284460A CN201310028446A CN103092974A CN 103092974 A CN103092974 A CN 103092974A CN 2013100284460 A CN2013100284460 A CN 2013100284460A CN 201310028446 A CN201310028446 A CN 201310028446A CN 103092974 A CN103092974 A CN 103092974A
Authority
CN
China
Prior art keywords
index
information
cloud
internal memory
main frame
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
Application number
CN2013100284460A
Other languages
English (en)
Inventor
赵仁明
刘正伟
朱波
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Inspur Electronic Information Industry Co Ltd
Original Assignee
Inspur Electronic Information Industry Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Inspur Electronic Information Industry Co Ltd filed Critical Inspur Electronic Information Industry Co Ltd
Priority to CN2013100284460A priority Critical patent/CN103092974A/zh
Publication of CN103092974A publication Critical patent/CN103092974A/zh
Pending legal-status Critical Current

Links

Abstract

本发明提供云OS中一种基于内存索引的云主机查询方法,内容包括:主机相关信息的扫描和收集;建立相关信息的内存索引;解析用户的指令,根据指令进行主机关键字的匹配并根据实时的返回定位结果快速的从索引中查询定位出主机,其中,主机相关信息的扫描和收集是该方法的第一步,通过扫描保存主机信息的配置文件或数据库,将所需要的基本信息读取至内存中,为第二部建立内存索引做准备;建立相关信息的内存索引是该方法的第二步,通过第一步读入的每个主机的状态,对待查询的关键字进行单字节或双字节的索引;解析用户的指令,从索引中查询定位出主机是该方法的第三部,通过对待查询的索引链表的表查找和求交操作,将所得的一个或多个结果信息实时反馈给用户,最终定位出主机。

Description

云OS中一种基于内存索引的云主机查询方法
技术领域
本发明涉及云OS 中内存索引的领域,具体地说是云OS中一种基于内存索引的云主机查询方法。
背景技术
随着信息科技的发展,云计算逐步成为业界的发展热点,国内外各大厂商的云计算服务平台也开始纷纷投入到科学、教育、文化、卫生、政府、高性能计算、电子商务、物联网等多个领域进行使用。
在云服务平台中,高效的主机查询和索引不仅是必需的,而且已经成为云计算平台其他功能得以实施的先决条件。主机的定位查询效率的高低,将对整个云平台的信息收集和运营产生巨大的影响。因此,为了迅速、高效的管理云OS中的主机信息,准确地查找定位到主机,大多数云OS提供了主机信息的索引机制。为解决云OS中主机快速定位的问题,我们提出了一种易扩展、高效的基于内存索引的云主机查询方法。
发明内容
本发明的技术任务是解决现有技术的不足,提供云OS中一种基于内存索引的云主机查询方法。
本发明的技术方案是按以下方式实现的,内容包括:主机相关信息的扫描和收集;建立相关信息的内存索引;解析用户的指令,根据指令进行主机关键字的匹配并根据实时的返回定位结果快速的从索引中查询定位出主机,其中,
主机相关信息的扫描和收集是该方法的第一步,通过扫描保存主机信息的配置文件或数据库,将所需要的基本信息读取至内存中,为第二部建立内存索引做准备;
建立相关信息的内存索引是该方法的第二步,通过第一步读入的每个主机的状态,对待查询的关键字进行单字节或双字节的索引;
解析用户的指令,从索引中查询定位出主机是该方法的第三部,通过对待查询的索引链表的表查找和求交操作,将所得的一个或多个结果信息实时反馈给用户,最终定位出主机;
具体步骤如下:
1)初始化云主机的信息,获取云主机的基本信息,包括:主机名、IP地址、主机存放位置编号、主机MAC、硬件配置;
2)对云主机信息的指定关键字建立内存索引:取得一条初始化的云主机信息,取得此信息索引关键字的第一个字符,将此主机的信息挂在以索引关键字第一个字符的Hash值为下标的链表数组的单字符索引链表上,同时,也将此主机信息挂在以索引关键字第一个和第二个字符的Hash值为下标的另一双字符索引链表上,然后,继续本记录关键字的第二个字符,第三个字符,第三四个字符… 依此类推,直到关键字的末尾,然后取得下一条云主机信息,对其索引关键字重复上述过程,最后直至所有云主机信息的索引建立完毕,每次将索引挂入链表时进行判断,保证对于同一条记录的同样的关键字,在单字符和双字符索引链表中只挂一次,以有效地提高查找效率。
本发明的有益效果:本发明的创新点在于创新的在内存中建立一系列的索引,使得云主机的定位和查询效率得到进一步的提升。此方法在内存中实现索引,对程序使用者来说较传统方法有更高的使用透明度、灵活度和更高的查询效率。
同时,本发明在实现内存索引的过程中,创新地提出了一种内存链表快速进行多路求交的计算方式。通过为加入链表中每个不同元素设置不同的权值,可以不必进行每个链表的依次全部遍历完成,即可求出链表交集。
 附图说明
图1为该方法的实现流程示意图。
具体实施方式
下面结合附图对本发明的方法作进一步详细说明。
体系结构主要包括:初始化云主机的信息,对云主机信息的指定关键字建立内存索引,解析用户的指令,根据指令进行主机关键字的匹配并实时的返回定位结果。
其中,初始化云主机的信息是该方法第一步,指获取云主机的基本信息(如主机名、IP地址、主机存放位置编号、主机MAC、硬件配置等)。
对云主机信息的指定关键字建立内存索引的主要流程为:取得一条初始化的云主机信息,取得此信息索引关键字的第一个字符,将此主机的信息挂在以索引关键字第一个字符的Hash值为下标的链表数组的单链表上(单字符索引链表)。同时,也将此主机信息挂在以索引关键字第一个和第二个字符的Hash值为下标的另一链表数组上(双字符索引链表)。然后,继续本记录关键字的第二个字符,第二三个字符。第三个字符,第三四个字符… 依此类推,直到关键字的末尾。然后取得下一条云主机信息,对其索引关键字重复上述过程。最后直至所有云主机信息的索引建立完毕。每次将索引挂入链表时进行判断,保证对于同一条记录的同样的关键字,在单字符和双字符索引链表中只挂一次,以有效地提高查找效率。
实施例
此过程的C语言代码实现如下:
pos=m_sUUID;
    while (*pos!=0) 
    {
        ch1 = *pos;
        ch2 = *(pos+1);
        if ( ch1>0 ) 
        {       
            uChar1=m_iCharMap[ch1];  //此处根据Hash算子,根据ASCII值进行了映射;
            uChar2=m_iCharMap [ch2];
                        //建立单字符索引
            lengh=pSingleCharArray[ch1].size();
            if (lengh==0)
            {
                pSingleCharArray[ch1].push_back(mCurrentOffset);
            }
            else
            {
                if (pSingleCharArray[ch1][lengh-1]!=mCurrentOffset)
                {
                    pSingleCharArray[ch1].push_back(mCurrentOffset);
                }
            }       
            //建立双字符索引
            if ( uChar1!=0 && uChar2!=0 ) 
            {   
                TwoCharID=(uChar1-1)*36+uChar2; //双字符索引的Hash算子
                lengh=pDoubleCharArray[TwoCharID].size();
                if (lengh==0)
                {
                    pDoubleCharArray[TwoCharID].push_back(mCurrentOffset);
                }
                else
                {
                    if (pDoubleCharArray[TwoCharID][lengh-1]!=mCurrentOffset)
                    {
                        pDoubleCharArray[TwoCharID].push_back(mCurrentOffset);
                    }
                }               
            }                   
        }。
根据指令进行主机关键字的匹配并实时的返回定位结果的主要流程为:解析用户的查询关键字。取用户输入的前两个关键字,计算前两个关键字所对应的Hash值,根据Hash
值找到双字符索引链表数组中对应的链表。然后再取第二三个关键字,继续进行上述操作。直到取到最后一个关键字,计算最后一个关键字的Hash值,根据Hash值找到最后一个关键字在单字符索引链表数组中对应的链表。至此,与本次查询定位相关的存在可能结果的链表都已找出。然后对找出的存在可能结果的链表进行多路求交。最终即可确定所查询的目标。
对于快速进行多路求交的实施方式,代码实现如下:
{
    char    ifAgain;
    uint32  max;
    uint32  i;
    vector<int> answer;
    max=0;
    //求所有链当前位置的权值最大元素
Again: ifAgain=0;
    for (i=0;  i<m_iListNumber;  i++)
    {
        if (*m_pPointer[i]>max)
        {
            max=*m_pPointer[i];
        }
    }
    //所有链的指针后移
    for (i=0;   i<m_iListNumber;  i++)
    {
        while (*m_pPointer[i]<max)
        {
            m_pPointer[i]++;
        }
        if (*m_pPointer[i]!=max)
        {
            ifAgain=1;
        }
        if (*m_pPointer[i]==ENDMARK)
        {
            goto Over;
        }
    }
    //若某个链当前指针位置元素大于max,max肯定不是答案
    if (ifAgain==1)
    {
        goto  Again;
    }
    else//若所有链当前位置元素均为max,max必为答案
    {
        answer.push_back(max);
        for (i=0;  i<m_iListNumber;  i++)
        {
            m_pPointer[i]++;
        }
        goto Again;
    }
}。
除本发明的说明书公开的技术特征外均为本专业技术人员的公职技术。

Claims (1)

1.云OS中一种基于内存索引的云主机查询方法,其特征在于,内容包括:主机相关信息的扫描和收集;建立相关信息的内存索引;解析用户的指令,根据指令进行主机关键字的匹配并根据实时的返回定位结果快速的从索引中查询定位出主机,其中,
主机相关信息的扫描和收集是该方法的第一步,通过扫描保存主机信息的配置文件或数据库,将所需要的基本信息读取至内存中,为第二部建立内存索引做准备;
建立相关信息的内存索引是该方法的第二步,通过第一步读入的每个主机的状态,对待查询的关键字进行单字节或双字节的索引;
解析用户的指令,从索引中查询定位出主机是该方法的第三部,通过对待查询的索引链表的表查找和求交操作,将所得的一个或多个结果信息实时反馈给用户,最终定位出主机;
具体步骤如下:
1)初始化云主机的信息,获取云主机的基本信息,包括:主机名、IP地址、主机存放位置编号、主机MAC、硬件配置;
2)对云主机信息的指定关键字建立内存索引:取得一条初始化的云主机信息,取得此信息索引关键字的第一个字符,将此主机的信息挂在以索引关键字第一个字符的Hash值为下标的链表数组的单字符索引链表上,同时,也将此主机信息挂在以索引关键字第一个和第二个字符的Hash值为下标的另一双字符索引链表上,然后,继续本记录关键字的第二个字符,第三个字符,第三四个字符… 依此类推,直到关键字的末尾,然后取得下一条云主机信息,对其索引关键字重复上述过程,最后直至所有云主机信息的索引建立完毕,每次将索引挂入链表时进行判断,保证对于同一条记录的同样的关键字,在单字符和双字符索引链表中只挂一次,以有效地提高查找效率。
CN2013100284460A 2013-01-25 2013-01-25 云os中一种基于内存索引的云主机查询方法 Pending CN103092974A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2013100284460A CN103092974A (zh) 2013-01-25 2013-01-25 云os中一种基于内存索引的云主机查询方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2013100284460A CN103092974A (zh) 2013-01-25 2013-01-25 云os中一种基于内存索引的云主机查询方法

Publications (1)

Publication Number Publication Date
CN103092974A true CN103092974A (zh) 2013-05-08

Family

ID=48205539

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2013100284460A Pending CN103092974A (zh) 2013-01-25 2013-01-25 云os中一种基于内存索引的云主机查询方法

Country Status (1)

Country Link
CN (1) CN103092974A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117290523A (zh) * 2023-11-22 2023-12-26 江苏瑞宁信创科技有限公司 基于动态索引表的全文检索方法及装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102098222A (zh) * 2011-02-09 2011-06-15 中兴通讯股份有限公司 利用mpls技术转发应用服务报文方法和转发节点

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102098222A (zh) * 2011-02-09 2011-06-15 中兴通讯股份有限公司 利用mpls技术转发应用服务报文方法和转发节点

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
阮宏一: "《数据结构c/c++描述》", 31 March 2007 *
龙腾科技: "《网络管理循序渐进教程》", 31 July 2006 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117290523A (zh) * 2023-11-22 2023-12-26 江苏瑞宁信创科技有限公司 基于动态索引表的全文检索方法及装置
CN117290523B (zh) * 2023-11-22 2024-01-30 江苏瑞宁信创科技有限公司 基于动态索引表的全文检索方法及装置

Similar Documents

Publication Publication Date Title
CN106897322B (zh) 一种数据库和文件系统的访问方法和装置
CN107622103B (zh) 管理数据查询
CN103425672B (zh) 一种数据库索引的建立方法及装置
CN107016019B (zh) 数据库索引创建方法及装置
CN104965735A (zh) 用于生成升级sql脚本的装置
CN105205105A (zh) 一种基于storm的数据ETL系统及处理方法
CN104598531A (zh) 一种基于触发器的异构关系型数据库间增量数据迁移方法
CN104573022A (zh) 一种HBase的数据查询方法及装置
CN102169491B (zh) 一种多数据集中重复记录动态检测方法
CN112364024A (zh) 一种表数据批量自动比对的控制方法及装置
CN109977157A (zh) 一种基于数据平台将数据导入目标目录的方法和电子设备
CN103914487A (zh) 文档的采集、标识及关联的系统
Gao et al. GLog: A high level graph analysis system using MapReduce
US20140067853A1 (en) Data search method, information system, and recording medium storing data search program
CN104391969A (zh) 确定用户查询语句句法结构的方法及装置
CN104462361A (zh) 一种匹配数据表中数据的方法和装置
CN104123376B (zh) 一种基于列模板的智能文本数据采集方法和系统
CN103077255A (zh) 核电站3d模型识别方法和系统
CN106708972A (zh) 一种基于hana数据库利用slt组件对abap程序优化的方法
CN106202440A (zh) 数据处理方法、装置及设备
CN103092974A (zh) 云os中一种基于内存索引的云主机查询方法
CN108874395A (zh) 一种组件化流处理过程中的硬编译方法及装置
RU2017106225A (ru) Компьютеризированное динамическое разделение взаимодействий по множественным фрагментам контента
CN111984745A (zh) 数据库字段动态扩展方法、装置、设备及存储介质
CN102270111B (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
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20130508

WD01 Invention patent application deemed withdrawn after publication