数据存储方法和装置与流程

文档序号:12596330阅读:216来源:国知局
本发明涉及数据存储
技术领域
:,特别是涉及一种数据存储方法和装置。
背景技术
::随着计算机通信技术的发展,各个领域的应用都需要将大量的数据信息进行存储,通常是以数据表的形式存储在数据库中。如核心网元管理系统(ElementManagementSystem,简称EMS)通过性能数据表存储大量的网元性能数据。现实工作中数据表通常由多个长的字符串字段组成索引,占用大量存储空间。而且在数据库操作时,如查询、插入、删除、更新时,必须对索引进行读取和更新,产生大规模的输入和输出,消耗系统内存,造成系统性能瓶颈。技术实现要素:基于此,有必要针对上述技术问题,提供一种数据存储方法和装置,提高数据的存储性能。一种数据存储方法,所述方法包括:获取字符映射表,所述字符映射表存储了索引字段与对应的转化字段且各个转化字段唯一,所述转化字段的长度小于所述索引字段的长度;判断所述字符映射表中是否存在与第一待存储数据匹配的目标索引字段,如果是,则获取所述目标索引字段对应的目标转化字段,将所述第一待存储数据与目标索引字段匹配的部分替换为所述目标转化字段存入数据库;如果所述字符映射表中不存在与第一待存储数据匹配的索引字段,则获取第一转化字段,建立第一待存储数据与所述第一转化字段的对应关系存入所述字符映射表,将所述第一转化字段存入数据库。在其中一个实施例中,所述转化字段为数值型。在其中一个实施例中,所述方法还包括:获取第二待存储数据,获取所述第二待存储数据对应的第二预设属性;如果生成所述字符映射表中的转化字段的预设属性中存在与所述第二预设属性相同的目标属性,则将所述目标属性生成的转化字段对应的索引字段更新为所述第二待存储数据。在其中一个实施例中,所述索引字段为网元的全局标识,所述预设属性为网元的IP和局号。在其中一个实施例中,所述方法还包括:当查询数据时,判断字符映射表中是否存在与待查询数据匹配的查询索引字段,如果是,则获取所述查询索引字段对应的查询转化字段,将所述待查询数据与查询索引字段匹配的部分替换为所述查询转化字段进行查询。一种数据存储装置,所述装置包括:获取模块,用于获取字符映射表,所述字符映射表存储了索引字段与对应的转化字段且各个转化字段唯一,所述转化字段的长度小于所述索引字段的长度;判断模块,用于判断所述字符映射表中是否存在与第一待存储数据匹配的目标索引字段,如果是,则进入第一存储模块,否则,进入第二存储模块;第一存储模块,用于获取所述目标索引字段对应的目标转化字段,将所述第一待存储数据与目标索引字段匹配的部分替换为所述目标转化字段存入数据库;第二存储模块,用于获取第一转化字段,建立第一待存储数据与所述第一转化字段的对应关系存入所述字符映射表,将所述第一转化字段存入数据库。在其中一个实施例中,所述转化字段为数值型。在其中一个实施例中,所述第一转化字段由所述第一待存储数据对应的预设属性通过预设规则生成,所述装置还包括:更新模块,用于获取第二待存储数据,获取所述第二待存储数据对应的第二预设属性,如果生成所述字符映射表中的转化字段的预设属性中存在与所述第二预设属性相同的目标属性,则将所述目标属性生成的转化字段对应的索引字段更新为所述第二待存储数据。在其中一个实施例中,所述索引字段为网元的全局标识,所述预设属性为 网元的IP和局号。在其中一个实施例中,所述装置还包括:查询模块,用于当查询数据时,判断字符映射表中是否存在与待查询数据匹配的查询索引字段,如果是,则获取所述查询索引字段对应的查询转化字段,将所述待查询数据与查询索引字段匹配的部分替换为所述查询转化字段进行查询。上述数据存储方法和装置,通过存储了各个转化字段不同,索引字段与转化字段对应的字符映射表,先判断字符映射表中是否存在与第一待存储数据匹配的目标索引字段,如果是,则获取目标索引字段对应的目标转化字段,将第一待存储数据与目标索引字段匹配的部分替换为目标转化字段存入数据库,如果字符映射表中不存在与第一待存储数据匹配的索引字段,则获取第一转化字段,建立第一待存储数据与第一转化字段的对应关系存入所述字符映射表,将第一转化字段存入数据库,由于目标转化字段的长度小于目标索引字段,所以存入数据库的数据长度短,大大减少了存储空间,提高了数据存储的性能。附图说明图1为一个实施例中数据存储方法的流程图;图2为一个实施例中数据存储过程的示意图;图3为一个实施例中更新数据的流程图;图4为一个实施例中查询数据过程的示意图;图5为一个实施例中数据存储装置的结构框图;图6为另一个实施例中数据存储装置的结构框图;图7为再一个实施例中数据存储装置的结构框图。具体实施方式在一个实施例中,如图1所示,提供了一种数据存储方法,包括:步骤S110,获取字符映射表,字符映射表存储了索引字段与对应的转化字段且各个转化字段唯一,转化字段的长度小于索引字段的长度。具体的,应用系统启动时,字符串映射模块加载已有的字符映射表,存入缓存中,字符映射表中记录了索引字段与对应的转化字段,索引字段可为字符串、数值串,转化字段可为比索引字段长度小的字符串、数值等。字符映射表中的各个转化字段不同,都是唯一的,保证了数据查询时的唯一性和准确性。在一个实施例中,转化字段为数值型,采用数值作为转化字段,数值型数据存储空间小且查询效率高。在建立索引字段与转化字段之间的对应关系时,可按照数值递增的方式生成转化字段。步骤S120,判断字符映射表中是否存在与第一待存储数据匹配的目标索引字段,如果是,则进入步骤S130,否则进入步骤S140。具体的,匹配包括完全匹配和部分匹配,完全匹配是指第一待存储数据与字符映射表中的某个目标索引字段完全相同,部分匹配是指第一待存储数据中的部分连续字段与目标索引字段完全相同,如第一待存储数据的前缀或后缀与目标索引字段完全相同。步骤S130,获取目标索引字段对应的目标转化字段,将第一待存储数据与目标索引字段匹配的部分替换为目标转化字段存入数据库。具体的,如果字符映射表中存在目标索引字段与第一待存储数据匹配,则根据索引字段与转化字段的对应关系得到目标索引字段对应的目标转化字段,在进行数据入库时,将第一待存储数据中与目标索引字段匹配的部分替换为目标转化字段存入数据库。如果第一待存储数据中与目标索引字段完全匹配,则在存储第一待存储数据时,直接将目标索引字段存入即可。如果第一待存储数据中与目标索引字段部分匹配,则将匹配的部分替换为目标索引字段,其余的部分保持不变存入数据库。在一个实施例中,判断第一待存储数据的待存储位置,当待存储位置满足预设条件时,才进行替换,如果不满足预设条件,则不进行替换。如涉及资源分组和资源鉴权的数据表中的NEDN(网元的全局标识)与MODN(测量对象的全局标识)在存储时不进行替换,直接存储原始数据。步骤S140,如果字符映射表中不存在与第一待存储数据匹配的索引字段,则获取第一转化字段,建立第一待存储数据与第一转化字段的对应关系存入字符映射表,将第一转化字段存入数据库。具体的,第一转化字段的生成规则可根据需要自定义,如当第一转化字段为字母时,可按照字母顺序依次排列生成。第一转化字段的生成可与待存储数据的预设属性相关。如当待存储数据为网元标识或测量对象标识时,预设属性可为网元对应的IP(InternetProtocol,网络之间互连的协议)和/或局号,其中IP是指IP地址。在建立第一待存储数据与第一转化字段的对应关系时,可设定预设建立条件,判断第一待存储数据是否为符合预设条件的待建立对应关系的数据,如果不是,则直接进行存储,预设建立条件可定义为字符串长度超过预设长度,或定义第一待存储数据包含预设的字符串等。只有符合预设建立条件的待存储数据才会建立对应关系,对于直接存储也不会占有太多资源的情况,如长度较短或数值型占用空间小的数据,不需要建立对应关系,提高了建立对应关系的有效性。在一个实施例中,如果第一待存储数据存在预设格式的字符串,则提取第一待存储数据中预设格式的字符串,建立提取出的预设格式的字符串与第一转化字段的对应关系,预设格式的字符串可为数据表中出现次数较多的字符串,提取出部分预设格式字符串进行建立对应关系,一方面降低了字符映射表的占有空间,另一方面由于预设格式字符串出现频率高,使得字符映射表的利用度更高。对于提取部分数据建立对应关系的情况,在存储时,将提取部分数据由第一转化字段替换存入数据库,其它的部分保持原始数据不变存入数据库。本实施例中,通过存储了各个转化字段不同,索引字段与转化字段对应的字符映射表,先判断字符映射表中是否存在与第一待存储数据匹配的目标索引字段,如果是,则获取目标索引字段对应的目标转化字段,将第一待存储数据与目标索引字段匹配的部分替换为目标转化字段存入数据库,如果字符映射表中不存在与第一待存储数据匹配的索引字段,则获取第一转化字段,建立第一待存储数据与第一转化字段的对应关系存入所述字符映射表,将第一转化字段存入数据库,由于目标转化字段的长度小于目标索引字段,所以存入数据库的数据长度短,大大减少了存储空间,提高了数据存储的性能。在一个具体的实施例中,存储过程结合图2所示,字符映射表中索引字段为字符串,转化字段为数值,在进行数据入库时,先加载字符映射表至应用缓 存中,再传入待存储的字符串至字符映射表中查找是否存在对应关系的转化字段,如果存在则返回数值,并将数值存入应用数据库。如果不存在,则将待存储的字符串与生成的新的数值对应,并将对应关系存入缓存中并持久化。在一个实施例中,第一转化字段由第一待存储数据对应的预设属性通过预设规则生成,如图3所示,方法还包括:步骤S210,获取第二待存储数据,获取第二待存储数据对应的第二预设属性。具体的,预设属性可根据需要自定义,如当不同的待存储数据之间有相同的对应预设属性时,根据预设属性决定转化字段的大小,可通过预设属性,在更新相同预设属性的存储数据时,不用改变存储的数据表,只用修改待存储数据与转化字段的对应关系就可完成新的存储数据的存储。转化字段由待存储数据对应的预设属性通过预设规则生成,不同的存储数据如果有相同的预设属性,则它们的转化字段是相同的。步骤S220,如果生成字符映射表中的转化字段的预设属性中存在与第二预设属性相同的目标属性,则将目标属性生成的转化字段对应的索引字段更新为第二待存储数据。具体的,如果第二预设属性与生成字符映射表中的转化字段的预设属性中存在相同的,则不需要更新数据库中的数据表,只需要将字符映射表中的转化字段的预设属性中与第二预设属性相同的那个属性生成的转化字段对应的索引字段更新为第二待存储数据,就完成了数据的更新。在判断生成字符映射表中的转化字段的预设属性中是否存在与第二预设属性相同的目标属性时,可先根据第二预设属性按照预设规则生成第二转化字段,再在字符映射表中查找与第二转化字段相同的转化字段,如果相同,则说明生成这个转化字段的预设属性与第二预设属性相同。在一个实施例中,索引字段为网元的全局标识,预设属性为网元的IP和局号。具体的,核心网网元管理系统(ElementManagementSystem,EMS)各网元性能数据存储表中,一般有网元的全局标识(NEDN),开始时间,粒度, 测量对象的全局标识(MODN)等公共字段,以及各个测量类型对应若干计数器的专有字段组成。NEDN和MODN为字符串并且长度较长,MODN是由NEDN+对象类型ID+测量对象ID三部分构成,如NEDN的实际值为cn.wcn:OMMOID=ig1tbavh-e:elementid=1,而MODN的实际值为cn.wcn:OMMOID=ig1tbavh-e:elementid=1,motype=cn.wcn.cs.50221:moid=1。数据表中其它字段一般是数值型或日期型,对于一些字段较少的数据表,NEDN和MODN可能占一条记录的30%以上的存储空间。性能数据表的联合索引字段一般为NEDN、MODN、开始时间、粒度和其它宽度较小的字段组成,这时NEDN和MODN存储空间占了索引存储空间的60%以上。且性能数据表中有大量重复的NEDN和MODN。所以将网元的全局标识(NEDN)设置为索引字段,在需要存储NEDN时,只需要在映射数据表中查找是否存在对应的转化字段,如果存在,则直接将转化字段存入数据表,如转化字段为1,则存入数据库的数据就由cn.wcn:OMMOID=ig1tbavh-e:elementid=1替换为1,大大减少了占用的存储空间。且对于需要存储的MODN由于其前缀是NEDN,则可在存储时,先提取出NEDN,再在映射数据表中查找是否存在对应的转化字段,如果存在,则将与MODN中与NEDN对应的部分替换为对应的转化字段,其它的部分按原始数据存储。预设属性为网元的IP和局号,因为常常需要对历史性能数据表中的NEDN和MODN进行更新和迁移,而在更新和迁移时,很多情况下NEDN和MODN对应的网元的IP和局号在更新前后并不发生改变,所以将网元的IP和局号设置为预设属性,转化字段根据网元的IP和局号生成,在NEDN和MODN变化的情况下,由于网元的IP和局号并没有变化,所以在更新数据表时,可保持数据表中的转化字段不变,只需要将网元的IP和局号生成的转化字段对应的索引字段由旧的NEDN更新为新的NEDN即可。下面结合3种NEDN和MODN进行更新和迁移的情况进行具体说明:情况1,网元支持子类型的改变,随着网元功能的开发,网元支持的功能会越来越多,可能会修改网元的网元子类型,导致网管系统不得不对网元重新接入。情况2,EMS系统扩容且EMS版本升级,用户网元系统增加导致网管系统需要扩容,原来的网管服务器需要更多的资源,如内存,CPU和硬盘,而原有的服务器由于主板限制,无法进行扩容,必须新装配置较高的机器,如果EMS 系统不需要升级,则可以采用冷备份,将EMS系统文件和oracle数据文件复制到新机器上,但大多数情况需要EMS同时升级才能支持更多的网元接入,这时一般需要在新机器上重新安装EMS,进行基础数据恢复,对原有性能数据进行数据迁移。情况3,各个专业网EMS合并,将各个专业网的EMS系统合并成一个统一的EMS系统集中管理,对于历史性能数据必须要进行迁移。以上三种情况都必须对现有网元在EMS上删除重新接入,但是用户的历史性能数据不能丢失。网元一旦被重新接入,NEDN就会改变,需要将改变后的NEDN和MODN替换改变前的NEDN和MODN。但数据量较大,单张表可能是几千万条记录,一般有几千张表,如果使用传统的方法整个迁移过程可能需要持续一周左右。将网元的IP和局号设置为预设属性,则在迁移数据时,先获取新的NEDN对应的网元的IP和局号,判断新的NEDN需要存储的位置,如果是在涉及资源分组和资源鉴权的数据表中,则直接进行存储。如果不是,则先根据网元的IP和局号根据预设规则生成对应的转化字段,如为1,再在字符映射表中查找值为1的转化字段,将值为1的转化字段原来对应的索引字段更新为新的NEDN建立新的对应关系。如新的NEDN为cn.wcn:OMMOID=ig1tbavh-e:elementid=1,则将cn.wcn:OMMOID=ig1tbavh-e:elementid=1与1进行对应。新的MODN为cn.wcn:OMMOID=ig1tbavh-e:elementid=1,motype=cn.wcn.cs.50221:moid=1,则在数据库表中将与NEDN重复的部分直接置为1,只存储其它的部分即可。可以理解的是,在建立了新的字符映射关系后,可将新的字符映射进行持久化,如存入非易失存储介质,使得在数据查询时或断电时,也可获取到字符映射表。通过这种方法进行的迁移,在网元的IP和局号不改变时,只需要建立新的映射关系,而原始数据表中的转化字段并没有改变,大大减少了迁移的数据,既节省性能数据文件存储空间约20%-30%,性能数据索引文件存储空间约60%,又能提高数据入库效率和查询效率。在进行迁移时,可以直接用oracle自带的工具先将迁移前的历史性能数据表导出,再直接导入命令导入现在的EMS数据表中,如impcn_pm/xxx@ems_yyyytables=zzzignore=y,极大地提高了效率。在一个实施例中,方法还包括:当查询数据时,判断字符映射表中是否存在与待查询数据匹配的查询索引字段,如果是,则获取查询索引字段对应的查询转化字段,将待查询数据与查询索引字段匹配的部分替换为查询转化字段进行查询。具体的,匹配包括完全匹配和部分匹配,完全匹配是指待查询数据与字符映射表中的某个索引字段完全相同,部分匹配是待查询数据中的部分连续字段与索引字段完全相同,如待查询数据的前缀或后缀与查询索引字段完全相同。如果存在匹配的查询索引字段,则获取对应的查询转化字段,因为存入数据库时实际存入的是转化字段,所以在进行查询时,也是先获取查询转化字段,再根据查询转化字段进行查询。如果是完全匹配,则直接由对应的查询转化字段进行查询,如果是部分匹配,则将待查询数据中匹配的部分用查询转化字段代替,其它数据不变进行查询。由于转化字段的长度小于索引字段,所以变换后的查询索引长度更短,能提高查询的效率。在一个具体的实施例中,查询数据的过程如图4所示,先传入待查询的字符串至应用缓存中,在应用缓存的字符映射表中查找是否存在对应的转化字段,如果存在则返回数值,用返回的数值作为查询条件中的索引字段在应用数据库中查询得到对应的查询结果。在一个实施例中,如图5所示,提供了一种数据存储装置,包括:获取模块310,用于获取字符映射表,字符映射表存储了索引字段与对应的转化字段且各个转化字段唯一,转化字段的长度小于所述索引字段的长度。判断模块320,用于判断字符映射表中是否存在与第一待存储数据匹配的目标索引字段,如果是,则进入第一存储模块,否则,进入第二存储模块。第一存储模块330,用于获取目标索引字段对应的目标转化字段,将第一待存储数据与目标索引字段匹配的部分替换为目标转化字段存入数据库。第二存储模块340,用于获取第一转化字段,建立第一待存储数据与第一转化字段的对应关系存入字符映射表,将第一转化字段存入数据库。在一个实施例中,转化字段为数值型。在一个实施例中,第一转化字段由第一待存储数据对应的预设属性通过预设规则生成,如图6所示,装置还包括:更新模块350,用于获取第二待存储数据,获取第二待存储数据对应的第二预设属性,如果生成字符映射表中的转化字段的预设属性中存在与第二预设属性相同的目标属性,则将目标属性生成的转化字段对应的索引字段更新为第二待存储数据。在一个实施例中,索引字段为网元的全局标识,所述预设属性为网元的IP和局号。在一个实施例中,如图7所示,装置还包括:查询模块360,用于当查询数据时,判断字符映射表中是否存在与待查询数据匹配的查询索引字段,如果是,则获取查询索引字段对应的查询转化字段,将待查询数据与查询索引字段匹配的部分替换为查询转化字段进行查询。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述程序可存储于一计算机可读取存储介质中,如本发明实施例中,该程序可存储于计算机系统的存储介质中,并被该计算机系统中的至少一个处理器执行,以实现包括如上述各方法的实施例的流程。其中,所述存储介质可为磁碟、光盘、只读存储记忆体(Read-OnlyMemory,ROM)或随机存储记忆体(RandomAccessMemory,RAM)等。以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1