基于二元组简单正则表达式快速检索算法.docVIP

基于二元组简单正则表达式快速检索算法.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于二元组简单正则表达式快速检索算法

基于二元组简单正则表达式快速检索算法摘要: 在大型数据集群网络中,业务逻辑节点和数据库节点分布在不同的地理位置,导致在该网络中创建或检索用户数据将经历较大的网络延迟。如何快速找到用户数据的地理位置节点(服务器识别号)将是减少网络延迟的关键。介绍一种动态索引算法,基于简单正则表达,建立用户数据和服务器组之间的映射关系,并引入动态多叉树,实现动态更改映射关系。引入一元组数据节点和二元组数据节点的概念,应用于多叉树,通过分析一元组多叉树和二元组多叉树的时间效率和空间效率,证明二元组多叉树随着树深的增长,检索时间复杂度保持更好的线性特性。通过一些性能测试的实验数据的比较,得出二元组方案的综合性能更优的结论。最后,简要地介绍该算法的应用领域。 关键词: 二元组;正则表达式;多叉树;快速检索;IMS;IMPI;IMPU 中图分类号:TN915.12 文献标识码:A 文章编号:1005-3824(2014)01-0071-05 0 引 言 随着3G网络商用化的成熟和LTE演进,移动数据网的用户数量必然随着各种丰富的移动应用而快速增长。移动数据网最大特点就是用户注册时能够实现用户标识分离[1],即用户身份和用户终端标识的分离,IMS/SIP网中IMPI[2]/IMPU[3]能够很好支持用户标识分离。大型IMS/SIP商用网络的用户数据管理是基于数据集群网络,同一个用户的信息可能分布在不同的地理位置服务器,同时用户数据的主服务器和备份服务器也是分布在不同地理位置。这就决定了用户数据创建和检索的复杂性。通过数据库集群网络,如MySQL,解决这个困难的做法是,引入索引服务器,通过静态配置用户数据和服务器组的映射关系来克服。 但是这种方法由于具有静态性,用户不能动态更改映射关系,并且这种映射关系存在一对一的局限性,使问题的解决效率不高。 本文介绍了一种动态索引算法,该算法可以根据用户的需求,动态更新映射规则,并且实现一个用户数据对多个服务器(即一个服务器组)的复杂映射关系。算法的核心是:基于简单正则表达,实现用户数据和服务器组的复杂映射关系,并引入常驻内存的动态多叉树[4]实现用户动态更改映射关系。 因此,在IMS网络中用于创建或检索用户数据时,该算法能快速定位所在分布式数据集群网络中的地理位置节点。在此基础上,为了降低迭代次数,本文引入一元组数据节点和二元组数据节点的概念,分别应用于该多叉树。通过分析一元组数据节点和二元组数据节点,以及一元组多叉树和二元组多叉树的时间效率和空间效率,从理论上证明二元组多叉树虽然空间开销稍大一些,但是,基于二元组的多叉树随着树深增长,检索时间复杂度保持更好的线性特性。通过一些性能测试实验数据的比较证明了本文的理论分析,同时得出二元组方案综合性能更优的结论。最后,简要地介绍该算法可能的应用领域。 1 简单正则表达式的定义 简单正则表达式支持的格式为“…%x00w%x00…%x00w%x00…%x00w%x00…”,每个“.”是一个符合RFC2486[2](IMPI 格式) 和 RFC3261[3](SIP IMPU格式)规定的有效字符,%x00w%x00中的w是匹配规则通配符串,且%x00w%x00的个数和位置没有限定,为了简化算法和提高检索性能,我们规定如果出现多个%x00w%x00通配符,2个通配符中间至少需要一个“.”。 我们之所以选择%x00封装通配符,是因为根据RFC2486(IMPI) 和 RFC3261(SIP IMPU),“%x00”是未被IMPU和IMPI使用的;同时,使用%x00封装通配符可以避免和其他字符,如“[”,”]”,”{“,”}”,等发生冲突;另外,封装字符串%x00对大小写不敏感,也就是说 “%X00” 和“%x00” 是等价的。 “%x00w%x00” 通用语法确定为 “%x00*[A|D][m,n]%x00” 针对该通用语法的一些特例: 1)“%x00*%x00”表示任意大于等于0的字符串。 2)“%x00*m,n%x00”表示任意大于等于m而小于等于n的字符串, 例如 “%x00*2,6%x00” 表示任意大于等于2而小于等于6的字符串。如果n或m不出现,则表示没有上限或下限,例如, “%x00*,5%x00” 表示任意小于等于5的字符串;“%x00*2,%x00” 表示任意大于等于2的字符串。 3)当 “A” 或 “D”字母出现在星号之后,该通配符串用于匹配纯字母串或纯数字串。 2 动态多叉树的构建 表1中,我们给出了一个服务器组标识符和模式字符串之间映射的例子,模式字符串是在第一小节中定义的。本小节中,如何根据模式字符串构建动态多叉树,将给出2种不同的方案。 方案1

文档评论(0)

docman126 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:7042123103000003

1亿VIP精品文档

相关文档