CN105488087A - 基于Postgresql的大字段特值索引***与方法 - Google Patents
基于Postgresql的大字段特值索引***与方法 Download PDFInfo
- Publication number
- CN105488087A CN105488087A CN201410844962.5A CN201410844962A CN105488087A CN 105488087 A CN105488087 A CN 105488087A CN 201410844962 A CN201410844962 A CN 201410844962A CN 105488087 A CN105488087 A CN 105488087A
- Authority
- CN
- China
- Prior art keywords
- character
- field
- postgresql
- indexed
- language
- 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
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明属于计算机技术领域,具体涉及一种基于Postgresql的大字段特值索引***与方法;该方法首先对当前文档字段加内置转换函数,将当前文档字段转换成能够被索引的语言,然后基于被转换后的语言,对待索引字符建立索引表,所述的索引表包括待索引字符和该字符在原始数据中的位置,最后在索引表中查找所需查找字符,找到所需查找字符在原始数据中的位置;该***包括用于执行上述操作的语言转换模块,索引建立模块和索引模块;本发明基于Postgresql的大字段特值索引***与方法,可以解决现有技术中Postgresql数据库大字段特值索引慢的问题,实现Postgresql数据库大字段特值的快速索引。
Description
技术领域
本发明属于计算机技术领域,具体涉及一种基于Postgresql的大字段特值索引***与方法。
背景技术
随着大数据时代的到来,数以亿计的数据被存入到数据库中,大字段数据也不断的出现在我们眼前。然而大字段数据中有时会包含特殊的一些信息,因此对这些特殊的字符建立索引也成为了我们研究中的重要内容。
特殊字符索引在商业型数据管理***中是非常常用的,因为它可以提高数据的检索效率,在没有索引的时候我们一般都用like子句来匹配我们搜索的关键词,like子句执行的效率是非常低的,这严重影响了***的运行速度。因此特殊字符索引就可以调高数据的检索效率。特殊字符索引是为我们需要被用户检索的信息进行创建索引,独立的存储在一个表中或者是一个字段上面。
Postgresql数据库为“大字段”的物理存储提供了TOAST功能,通过核实的配置策略能够减少IO次数和扫描块数,进而提升查询速度。
Postgresql采用固定页面大小(通常是8kb),元组不能跨越多个页面,无法时间“大字段值”的直接存储。TOAST提供解决方法,允许大的字段值被压缩或***为多个物理行。Postgresql只为部分数据类型提供TOAST支持,为支持TOAST,数据类型必须是变长(varlena)的类型,前32位存储着以字节的数值总长度(包括长度本身)。
TOAST采用最高的两个二进制位用于标识压缩与行外存储,因此“大字段”的逻辑长度被限制在了1GB(2^(32–2)–1bytes)。
相对直接的存储方式来说,数据经过TOAST方式后,单个或者连续数据块中能够存储更多的数据值,对于访问非“大字段”时,能够大量减少扫描块数或者屋里IO次数;对于极少访问的含“大字段”记录,经过手动修改存储属性,采用TOAST方式,即使小雨2K的情况下同样能够带来很好的效果。
虽然大字段存储的问题在Postgresql数据库中已得到解决,然而我们平时并不会对“大字段”中的所有数据感兴趣,所以对“大字段”数据中的一些特殊字符建立索引是一项首当其冲的方法。
发明内容
为了解决现有技术中Postgresql数据库大字段特值索引慢的问题,本发明公开了一种基于Postgresql的大字段特值索引***与方法,可实现Postgresql数据库大字段特值的快速索引。
本发明的目的是这样实现的:
基于Postgresql的大字段特值索引***,包括以下模块:
语言转换模块:用于对当前文档字段加内置转换函数,将当前文档字段转换成能够被索引的语言;
索引建立模块:用于基于被转换后的语言,对待索引字符建立索引表,所述的索引表包括待索引字符和该字符在原始数据中的位置;
索引模块:用于在索引表中查找所需查找字符,找到所需查找字符在原始数据中的位置。
上述基于Postgresql的大字段特值索引***,还包括触发模块:用于使新的待索引字符和该字符在原始数据中的位置进入索引表。
基于Postgresql的大字段特值索引方法,包括以下步骤:
S01、对当前文档字段加内置转换函数,将当前文档字段转换成能够被索引的语言;
S02、基于被转换后的语言,对待索引字符建立索引表,所述的索引表包括待索引字符和该字符在原始数据中的位置;
S03、在索引表中查找所需查找字符,找到所需查找字符在原始数据中的位置。
上述基于Postgresql的大字段特值索引方法,设置触发器,使新的待索引字符和该字符在原始数据中的位置进入索引表。
有益效果:
本发明可以实现对Postgresql数据库中大字段特殊字符的快速索引,解决了现有技术中索引较慢的问题。
附图说明
图1是基于Postgresql的大字段特值索引***示意图。
图2是基于Postgresql的大字段特值索引方法流程图。
具体实施方式
下面对本发明具体实施方式作进一步详细描述。
具体实施例一
本实施例为基于Postgresql的大字段特值索引***的实施例。
本实施例的基于Postgresql的大字段特值索引***,示意图如图1所示。该***包括以下模块:
语言转换模块:用于对当前文档字段加内置转换函数,将当前文档字段转换成能够被索引的语言;
索引建立模块:用于基于被转换后的语言,对待索引字符建立索引表,所述的索引表包括待索引字符和该字符在原始数据中的位置;
索引模块:用于在索引表中查找所需查找字符,找到所需查找字符在原始数据中的位置。
具体实施例二
本实施例为基于Postgresql的大字段特值索引***的实施例。
本实施例的基于Postgresql的大字段特值索引***,在具体实施例一的基础上,进一步限定还包括触发模块:用于使新的待索引字符和该字符在原始数据中的位置进入索引表。
具体实施例三
本实施例为基于Postgresql的大字段特值索引方法的实施例。
本实施例的基于Postgresql的大字段特值索引方法,流程图如图2所示。该方法包括以下步骤:
S01、对当前文档字段加内置转换函数,将当前文档字段转换成能够被索引的语言;
S02、基于被转换后的语言,对待索引字符建立索引表,所述的索引表包括待索引字符和该字符在原始数据中的位置;
S03、在索引表中查找所需查找字符,找到所需查找字符在原始数据中的位置。
具体实施例四
本实施例为基于Postgresql的大字段特值索引方法的实施例。
本实施例的基于Postgresql的大字段特值索引方法,在具体实施例三的基础上,进一步限定设置触发器,使新的待索引字符和该字符在原始数据中的位置进入索引表。
需要说明的是,并不是所有的语言或文档字段都可以被快速索引,想实现快速索引,必须要在特定的语言下才能进行,因此需要将非可快速索引的语言转换成可实现快速实现索引的语言。这项工作由语言转换模块完成,对当前文档字段加内置转换函数;
为了实现快速索引,必须要避免索引其它不应该被索引的信息,因此,需要将待索引信息单独建立列表,新列表中不包含任何无需被索引的信息,因此可实现快速索引。这项工作由索引建立模块完成,建立新的索引表;
为了新的待索引字符能够被索引,必须要求该字符和其在原始数据中的位置进入索引表,触发器的功能就是使新的待索引字符和该字符在原始数据中的位置进入索引表。
Claims (4)
1.基于Postgresql的大字段特值索引***,其特征在于,包括以下模块:
语言转换模块:用于对当前文档字段加内置转换函数,将当前文档字段转换成能够被索引的语言;
索引建立模块:用于基于被转换后的语言,对待索引字符建立索引表,所述的索引表包括待索引字符和该字符在原始数据中的位置;
索引模块:用于在索引表中查找所需查找字符,找到所需查找字符在原始数据中的位置。
2.根据权利要求1所述的基于Postgresql的大字段特值索引***,其特征在于,还包括触发模块:用于使新的待索引字符和该字符在原始数据中的位置进入索引表。
3.基于Postgresql的大字段特值索引方法,其特征在于,包括以下步骤:
S01、对当前文档字段加内置转换函数,将当前文档字段转换成能够被索引的语言;
S02、基于被转换后的语言,对待索引字符建立索引表,所述的索引表包括待索引字符和该字符在原始数据中的位置;
S03、在索引表中查找所需查找字符,找到所需查找字符在原始数据中的位置。
4.根据权利要求3所述的基于Postgresql的大字段特值索引方法,其特征在于,设置触发器,使新的待索引字符和该字符在原始数据中的位置进入索引表。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410844962.5A CN105488087A (zh) | 2014-12-31 | 2014-12-31 | 基于Postgresql的大字段特值索引***与方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410844962.5A CN105488087A (zh) | 2014-12-31 | 2014-12-31 | 基于Postgresql的大字段特值索引***与方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105488087A true CN105488087A (zh) | 2016-04-13 |
Family
ID=55675065
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410844962.5A Pending CN105488087A (zh) | 2014-12-31 | 2014-12-31 | 基于Postgresql的大字段特值索引***与方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105488087A (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101131704A (zh) * | 2006-08-23 | 2008-02-27 | 国际商业机器公司 | 用于内容的位置表示的装置和方法 |
CN102023989A (zh) * | 2009-09-23 | 2011-04-20 | 阿里巴巴集团控股有限公司 | 一种信息检索方法及其*** |
CN102033954A (zh) * | 2010-12-24 | 2011-04-27 | 东北大学 | 关系数据库中可扩展标记语言文档全文检索查询索引方法 |
-
2014
- 2014-12-31 CN CN201410844962.5A patent/CN105488087A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101131704A (zh) * | 2006-08-23 | 2008-02-27 | 国际商业机器公司 | 用于内容的位置表示的装置和方法 |
CN102023989A (zh) * | 2009-09-23 | 2011-04-20 | 阿里巴巴集团控股有限公司 | 一种信息检索方法及其*** |
CN102033954A (zh) * | 2010-12-24 | 2011-04-27 | 东北大学 | 关系数据库中可扩展标记语言文档全文检索查询索引方法 |
Non-Patent Citations (1)
Title |
---|
彭智勇,彭煜玮: "《PostgreSQL数据库内核分析》", 31 January 2012 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103544261B (zh) | 一种海量结构化日志数据全局索引管理方法及装置 | |
CN107368527B (zh) | 基于数据流的多属性索引方法 | |
US9411840B2 (en) | Scalable data structures | |
US9047330B2 (en) | Index compression in databases | |
CN102890722B (zh) | 应用于时序历史数据库的索引方法 | |
US10558495B2 (en) | Variable sized database dictionary block encoding | |
CN104252536B (zh) | 一种基于hbase的上网日志数据查询方法及装置 | |
CN105117417A (zh) | 一种读优化的内存数据库Trie树索引方法 | |
CN102024047B (zh) | 数据检索方法及装置 | |
CN107357843B (zh) | 基于数据流结构的海量网络数据查找方法 | |
WO2003054739A3 (en) | Hybrid search memory for network processor and computer systems | |
CN107704202B (zh) | 一种数据快速读写的方法和装置 | |
CN106599091B (zh) | 基于键值存储的rdf图结构存储和索引方法 | |
CN102436513A (zh) | 分布式检索方法和*** | |
CN103914483B (zh) | 文件存储方法、装置及文件读取方法、装置 | |
CN103473267A (zh) | 数据存储查询方法及*** | |
CN103678491A (zh) | 一种基于Hadoop中小文件优化和倒排索引的方法 | |
CN103744913A (zh) | 一种基于搜索引擎技术的数据库检索方法 | |
US9229961B2 (en) | Database management delete efficiency | |
CN102508913A (zh) | 一种带有数据立方存储索引结构的云计算*** | |
CN103399945A (zh) | 一种基于云计算数据库***的数据结构 | |
WO2014110940A1 (en) | A method, apparatus and system for storing, reading the directory index | |
CN105117433A (zh) | 一种基于Hive解析HFile统计查询HBase的方法和*** | |
Von der Weth et al. | Multiterm keyword search in NoSQL systems | |
WO2023143095A1 (en) | Method and system for data query |
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: 20160413 |
|
WD01 | Invention patent application deemed withdrawn after publication |