CN101727465B - 分布式列存储数据库索引建立、查询方法及装置与系统 - Google Patents
分布式列存储数据库索引建立、查询方法及装置与系统 Download PDFInfo
- Publication number
- CN101727465B CN101727465B CN2008102254863A CN200810225486A CN101727465B CN 101727465 B CN101727465 B CN 101727465B CN 2008102254863 A CN2008102254863 A CN 2008102254863A CN 200810225486 A CN200810225486 A CN 200810225486A CN 101727465 B CN101727465 B CN 101727465B
- Authority
- CN
- China
- Prior art keywords
- row field
- column
- storage database
- row
- index
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/221—Column-oriented storage; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种分布式列存储数据库索引建立方法、查询方法及装置与系统。该分布式列存储数据库索引建立方法包括:获取分布式列存储数据库中的列字段,生成以所述列字段作为关键字的列索引文件,所述列索引文件中包含所述列字段在所述分布式列存储数据库中的值与对应的Row字段值的映射关系;存储所述列索引文件到所述分布式列存储数据库中与所述列字段对应的索引目录下。客户端发起以列字段作为查询条件和查询结果的查询请求时,通过匹配出相应的列索引文件,得到对应的Row字段值,从而实现索引查询。采用本发明能在现有分布式列存储数据库中,实现除Row字段外的其它列字段快速查询。
Description
技术领域
本发明涉及分布式列存储数据库,尤其涉及一种分布式列存储数据库的索引建立方法,数据查询方法及相应的装置与系统。
背景技术
分布式列存储数据库是一种适合快速查询的、分布式的优良解决方案,它在提供海量数据存储的同时,还可以有效的提高对数据的查询速度。
分布式列存储数据库的特点是:数据表中必须有Row字段,且Row字段为关键字,即不可重复,并排序。如果原表为N个列字段,则整个表在分布式列存储数据库中以(N-1)个表来进行存储;即除Row字段外,对其余的列字段分别存储一个对应表。
举例说明如下:
表一:GNTABLE
Row | Time | UserID | SourceIP | ObjectIP | SingalType |
1 | 20080909-12:00:00 | 13910001000 | 10.1.6.124 | 10.1.7.22 | createPDP |
2 | 20080909-12:00:00 | 13810001000 | 10.1.6.125 | 10.1.6.124 | delPDP |
3 | 20080909-12:00:01 | 13910001000 | 10.1.7.22 | 10.1.6.124 | responsePDP |
4 | 20080909-12:00:01 | 13910001000 | 10.1.7.22 | 10.1.6.124 | createPDP |
上表一为分布式列存储数据库的一个原数据表GNTABLE,其包含Row字段并排序,其余列字段包括:时间(Time)、用户标识(UserID)、源IP地址(SourceIP)、目标IP地址(ObjectIP)和信号类型(SingalType)。
在列存储数据库中,需要针对各列字段(Time、UserID、SourceIP、ObjectIP和SingalType)分别存储一个对应表。以Time和UserID列字段为例,其存储 的对应表分别如下表二和表三所示:
表二
Row | Time |
1Time | 20080909-12:00;00 |
2Time | 20080909-12:00:00 |
3Time | 20080909-12:00:01 |
4Time | 20080909-12:00:01 |
表三
Row | UserID |
1UserID | 13910001000 |
2UserID | 13810001000 |
3UserID | 13910001000 |
4UserID | 13910001000 |
在分布式列存储数据库中,包含有主服务器(Master)和分片服务器(TabletServer)。其中,在主服务器中保存Row字段值与各分片服务器之间的映射关系,在各分片服务器中分别保存分布式列存储数据库的分片数据。所谓分片数据,是指将一个原数据表按照行分为几个分片(一个分片包含若干行),每个分片包括各行的全部数据。每个分片数据可以存储于一个分片服务器中(当然,一个分片服务器可以存储多个分片数据),各分片数据中按Row排序。每个分片数据中第一行的Row值为开始(begin)值,最后一行的Row值为结束(end)值,根据分片规则,则下一个分片数据的begin值>上一个分片数据的end值。其存储架构示意图如图1所示,包括:
在主服务器(Master)中包含有元数据(Metadata)模块,存储Row字段值与各分片服务器(TabletServer)的映射关系。在各分片服务器中包含数据片模块(HRegion),在该模块中存储列字段(或列家族,在分布式列存储数据库中,将经常被同时访问的几个列定义为列家族,同一个列家族存储于一个列文件中)与对应列存储文件(HStoreFile)之间的映射关系,一个或多个HStoreFile 存储在一个列模块(HStore)下。每个HStoreFile保存了两个文件,即数据(Data)文件和索引(Index)文件,并建立两者之间的映射。Data文件保存数据,其格式为<Key,value>,Index文件保存Key的索引,通过Key的索引,可以直接定位到Data文件中的某行数据。
仍以上表一中的UserID列字段为例,在对应的HStoreFile中,其对应的Data文件和Index文件分别如下表四、表五所示。
表四:
表五:
Row | Offset |
1 | 0 |
2 | 2 |
3 | 4 |
4 | 6 |
根据上述现有技术的存储架构,对于分布式列存储数所库,整体的索引机制形成树的形式,可以通过三层快速对Row进行定位。
但由于现有技术中数据是根据主关键字Row排序并存储的,对于Time、UserID等非主关键字的列则不是排序的,因此以这些列为条件的访问就必须根据Row遍历整个数据表才能实现。在没有索引情况下的遍历数据,即便是分布式数据库,可以并发处理遍历请求,但其面对海量数据时,性能也无法忍受。而对于传统的数据库应用来说,使用非主关键字查询的场合非常多,因此需要有一种针对非主关键字的列的索引机制以满足使用需求。
发明内容
本发明提供一种分布式列存储数据库索引建立方法、查询方法及装置与系统,用以解决现有分布式列存储数据库中不能够按照除Row字段外的其它列字段进行快速高效查询的问题。
本发明提供的分布式列存储数据库索引建立方法,包括:
获取分布式列存储数据库中的列字段;
生成以所述列字段作为关键字的列索引文件,所述列索引文件中包含所述列字段在所述分布式列存储数据库中的值与相对应的Row字段值的映射关系;
存储所述列索引文件到所述分布式列存储数据库中与所述列字段对应的索引目录下。
本发明还提供一种根据本发明提供的分布式列存储数据库索引建立方法建立索引的分布式列存储数据库查询方法,包括:
客户端向分布式列存储数据库的主服务器发起查询请求;
所述主服务器根据本地存储的Row字段值与所述分布式列存储数据库的分片服务器的映射关系,向所述客户端返回分片服务器信息;
所述客户端向所述分片服务器发起查询请求,在该查询请求中携带查询结果的列字段、查询条件的列字段及字段值信息;
所述分片服务器根据本地存储的列字段的索引目录,匹配出与所述查询条件的列字段对应的列索引文件,所述列索引文件中包含所述列字段在所述分布式列存储数据库中的值与相对应的Row字段值的映射关系;
所述分片服务器根据匹配出的所述列索引文件及所述字段值信息获取对应Row字段值,并根据获取的Row字段值查询与所述查询结果的列字段对应的索引文件和数据文件,得到满足查询条件结果值,返回给所述客户端。
本发明再提供一种分布式列存储数据库索引建立装置,包括:
获取单元,用于获取分布式列存储数据库中的列字段;
生成单元,用于生成以所述获取单元获取的所述列字段作为关键字的列索引文件,所述列索引文件中包含所述列字段在所述分布式列存储数据库中的值
存储单元,用于存储所述列索引文件到所述分布式列存储数据库中与所述列字段对应的索引目录下。
本发明再提供一种分布式列存储数据库系统,包括主服务器和分片服务器,所述主服务器包括:
第一存储单元,用于存储分布式列存储数据库的Row字段值与分片服务器的映射关系;以及
查询受理单元,用于接收客户端的查询请求,根据所述第一存储单元存储的所述映射关系向客户端返回分片服务器信息;
所述分片服务器包括:
列索引文件生成单元,用于获取分布式列存储数据库中的列字段,生成以所述列字段作为关键字的列索引文件,所述列索引文件中包含所述列字段在所述分布式列存储数据库中的值与对应的Row字段值的映射关系,并存储所述列索引文件到所述分布式列存储数据库中与所述列字段对应的索引目录下;
第二存储单元,用于存储分配的分片数据中的列字段对应的数据文件、以Row字段为关键字的索引文件和所述列字段的列索引文件;
分析单元,用于接收客户端发送的查询请求,分析所述查询请求中携带的查询结果的列字段、查询条件的列字段及字段值信息;
匹配单元,用于根据所述查询条件的列字段在所述第二存储单元中匹配出对应的列索引文件,并根据匹配出的所述列索引文件及所述字段值信息,获取对应Row字段值;
结果查询单元,用于用获取的Row字段值查询所述查询结果的列字段对应的索引文件和数据文件,得到满足查询条件的查询结果值;
结果返回单元,用于向发起查询请求的所述客户端返回所述查询结果值。
本发明通过获取分布式列存储数据库中除Row字段外的列字段,生成以列字段作为关键字的列索引文件,在该列索引文件中包含列字段在分布式列存 储数据库中的值与相对应的Row字段值的映射关系;并将生成的列索引文件存储到与列字段对应的索引目录下。使得客户端可以向分布式列存储数据库的主服务器发起携带查询结果的列字段、查询条件的列字段及字段值信息的查询请求,通过主服务器、分片服务器根据存储的列字段的索引目录,匹配出与查询条件的列字段对应的列索引文件,根据列索引文件获取对应Row字段值,并根据获取的Row字段值查询所述查询结果的列字段对应的数据文件,得到满足查询条件结果值,返回给客户端。从而实现客户端可以方便地针对分布式列存储数据库采用非Row字段的其余列字段进行快速高效的索引查询。
附图说明
图1为现有技术中分布式列存储数据库存储架构示意图;
图2为本发明实施例提供的分布式列存储数据库索引建立方法流程图;
图3为本发明实施例提供的HStoreFile下的文件结构示意图;
图4为本发明实施例提供的分布式列存储数据库查询方法流程图;
图5为本发明实施例提供的分布式列存储数据库索引建立装置结构示意图;
图6为本发明实施例提供的分布式列存储数据库索引建立装置中生成单元的内部结构示意图;
图7为本发明实施例提供的分布式列存储数据库系统结构示意图。
具体实施方式
本发明实施例提供一种分布式列存储数据库索引建立方法,其实现流程如图2所示,包括:
步骤S201、获取分布式列存储数据库中的列字段。
步骤S202、生成以获取的列字段作为关键字的列索引文件,在列索引文件中包含该列字段在分布式列存储数据库中的值与相对应的Row字段值的映射 关系。
在该步骤S202中,可以针对获取的每一个列字段(或列家族),分别生成一个对应的列索引文件。
实际应用中,为方便用户查询,理论上可以对分布式列存储数据库中除Row字段外的每一个列字段,都生成一个对应的列索引文件。当然,如果某些列字段基本没有查询的价值,实际中几乎不会采用该字段进行查询,则不必生成对应的列索引文件,以节省数据库占用的存储资源。
步骤S203、存储生成的列索引文件到分布式列存储数据库中与该列字段对应的索引目录下。
根据上述流程描述可知,本发明在现有技术的基础上,为分布式列存储数据库中除Row字段外的其余列字段分别生成了一个对应的列索引文件,并存储到与列字段对应的索引目录下。
仍沿用上述表一为例,针对列字段UserID生成的列索引文件如下表六所示:
表六:
表六中,左边一栏为UserID在原分布式列存储数据库中的值,根据表三可知,其字段值只有两个,其一为13910001000和13810001000;右边一栏为Row字段值,即与UserID的每个值分别对应的Row字段值,由表三可知,与13910001000对应的Row字段值分别为1、3、4,与13810001000对应的Row 字段值为2。
下面结合分布式列存储数据库的存储架构,进行具体说明:
在分布式列存储数据库的主服务器中存储第一级索引目录,在第一级索引目录中包含Row字段值与各分片服务器的映射关系;例如,在主服务器的元数据模块中存储第一级索引目录。根据第一级索引目录,主服务器可以查找到全部的分片服务器。
在每个分片服务器中存储第二级索引目录和第三级索引目录,在第二级索引目录中包含列字段与列存储文件的映射关系;例如,在分片服务器的数据片模块中存储第二级索引目录。在第三级索引目录下,存储列存储文件对应列字段的数据文件、索引文件和本发明生成的列索引文件。第三级索引目录相当于现有现有技术中的HStoreFile,所不同的是,本发明在现有技术的HStoreFile下增加了一个与该列字段对应的列索引文件,其层级关系示意图如图3所示:
在列存储文件(HStoreFile)下,存储有三个文件,分别为:
在对应的分片服务器分配的分片数据中,该列字段对应的数据(Data)文件(为描述方便,后续统一称为Data文件)、以Row字段为关键字的索引(Index)文件(为描述方便,后续统一称为Index文件)和本发明生成的对应列索引(ColIndex)文件(为描述方便,后续统一称为ColIndex文件)。
在分片服务器中,对列字段建立对应的列索引文件,可由用户指定。即在分片服务器向用户提供创建索引、删除索引的接口,用户可以根据自己的使用需要,建立全部或部分列字段对应的列索引文件。
根据本发明上述实施例提供的方法,当一个分片服务器中存储一片及一片以上的分片数据时,在该分片服务器中针对每片分片数据分别建立第二级索引目录和第三级索引目录。
当分布式列存储数据库中增加数据、删除数据或修改数据后,需要重新生成列索引文件,或者修改已生成的列索引文件中的对应数据,以保证列索引文件中的数据与当前数据库中的相关数据相一致,以避免后续查询时出现错误的 查询结果。
基于同一发明构思,根据本发明提供的上述分布式列存储数据库索引建立方法,本发明还提供一种分布式列存储数据库查询方法,其具体实现流程如图4所示,包括:
步骤S401、客户端向分布式列存储数据库的主服务器发起查询请求;
步骤S402、主服务器根据本地存储的Row字段值与分片服务器的映射关系,向客户端返回分片服务器信息;
步骤S403、客户端向分片服务器发起查询请求,在该查询请求中携带查询结果的列字段、查询条件的列字段及字段值信息;
步骤S404、分片服务器根据本地存储的列字段的索引目录,匹配出与查询条件的列字段对应的ColIndex文件;
步骤S405、分片服务器根据匹配出的ColIndex文件及查询条件中携带的列字段的字段值信息,获取对应Row字段值;
步骤S406、分片服务器根据获取的Row字段值,以及查询结果的列字段对应的Index文件和Data文件,得到满足查询条件结果值;
步骤S407、分片服务器返回符合查询条件的结果值给发起查询请求的客户端。
仍以上表一为例,假设查询请求为“Select SignalType from GNTABLEwhere UserID=’13910001000’”,即从GNTABLE数据表中选择列字段UserID为“13910001000”的用户对应使用的信号类型。该查询请求中,携带的查询条件的列字段为“UserID”字段,字段值为“13910001000”,查询结果列字段为“SignalType”字段。
根据本发明提供的上述流程,客户端先向主服务器发起查询请求,主服务器将各分片服务器信息返回给客户端;客户端再分别向各分片服务器发起查询,当有多个分片服务器时,客户端并行地分别向每个分片服务器发起查询请求,实现分布式查询;每个分片服务器根据本地存储的分片数据,查询出满足 查询条件的结果值后返回给客户端,客户端接收各分片服务器返回的查询结果,即得到最终的查询数据。
具体地,分片服务器接收到上述查询请求后,在本地存储的列字段的索引目录中匹配出与查询条件的列字段“UserID”字段对应的列索引文件,即如表六所示,分片服务器根据匹配出的列索引文件,获取UserID字段值为“13910001000”对应Row字段值为“1、3、4”;得到Row字段值后,再采用现有技术中分布式列存储数据库的查询方式,得到查询结果;即:再根据本次查询结果对应的列字段(“SignalType”字段)的Index文件和Data文件,即可获得满足查询要求的对应SignalType字段值。
当查询请求中携带有多个查询条件时,分片服务器分别获取每个查询条件对应的Row字段值,再根据各查询条件之间的逻辑关系(逻辑“或”,逻辑“与”或其组合),确定出满足全部查询条件的最终Row字段值,再根据确定出的最终Row字段值,查询得到满足查询条件的结果值返回给客户端。
采用本发明提供的分布式列存储数据库查询方法,客户端可以并行地同时向各分片服务器发起查询请求,使得对数据的多条件查询处理在各分片服务器同时进行,从而实现了快速高效的查询。而如果不采用分布式查询方式,由主服务器进行集中式的多条件查询处理,当进行海量数据查询时,会出现海量数据单节点无法处理的情况。
其次,采用本发明提供的分布式列存储数据库查询方法,分片服务器直接在本地进行数据查询处理,即各分片服务器只需处理本地存储的数据就能获得查询结果,没有网络交互,减少了网络的开销,进一步提高了查询速度及效率。
基于同一发明构思,根据本发明上述实施例提供的分布式列存储数据库索引建立方法,本发明还提供一种分布式列存储数据库索引建立装置,其结构示意图如图5所示,包括:
获取单元71,用于获取分布式列存储数据库中的列字段;
生成单元72,用于生成以获取单元71获取的列字段作为关键字的列索引 文件,在该列索引文件中包含列字段在分布式列存储数据库中的值与相对应的Row字段值的映射关系;
存储单元73,用于存储生成单元72生成的列索引文件到分布式列存储数据库中与该列字段对应的索引目录下。
其中,生成单元72的内部结构如图6所示,可以进一步包括:
获取子单元721,用于获取列字段在所述分布式列存储数据库中的值;
匹配子单元722,用于在分布式列存储数据库中匹配出与列字段的值相对应的Row字段值;
生成子单元723,用于建立起列字段的值与相对应的Row字段的值之间的映射关系,生成列索引文件。
在实际应用中,本发明提供的分布式列存储数据库索引建立装置可以是软件模块,嵌入到存储分布式列存储数据库的分片数据的分片服务器中。
基于同一发明构思,本发明再提供一种分布式列存储数据库系统,其结构示意图如图7所示,包括主服务器和分片服务器,其中:
所述主服务器包括:
第一存储单元81,用于存储分布式列存储数据库的Row字段值与分片服务器的映射关系;以及
查询受理单元82,用于接收客户端的查询请求,根据第一存储单元81存储的所述映射关系向客户端返回分片服务器信息;
所述分片服务器包括:
列索引文件生成单元91,用于获取分布式列存储数据库中的列字段,生成以列字段作为关键字的列索引文件,在该列索引文件中包含列字段在分布式列存储数据库中的值与相对应的Row字段值的映射关系,并存储生成的列索引文件到分布式列存储数据库中与该列字段对应的索引目录下;
第二存储单元92,用于存储分配的分片数据中的列字段对应的数据文件、以Row字段为关键字的索引文件和列字段的列索引文件;
分析单元93,用于接收客户端发送的查询请求,分析所述查询请求中携带的查询结果的列字段、查询条件的列字段及字段值信息;
匹配单元94,用于根据查询请求中携带的查询条件的列字段在第二存储单元92中匹配出对应的列索引文件,并根据匹配出的列索引文件以及字段值信息,获取与查询条件列字段的字段值对应Row字段值;
结果查询单元95,用于用获取的Row字段值查询所述查询结果的列字段对应的索引文件和数据文件,得到满足查询条件的查询结果值;
结果返回单元96,用于向发起查询请求的所述客户端返回查询结果值。
主服务器用于存储分布式列存储数据库的Row字段值与分片服务器的映射关系;在分片服务器中,除了存储分配的分片数据中的列字段对应的Data文件、以Row字段为关键字的Index文件外,还存储该列字段的ColIndex文件;该ColIndex文件和Data文件以及Index文件一起保存在列字段对应的索引目录下。所述列索引文件,采用本发明上述实施例提供的方法建立,在其中包含列字段在分布式列存储数据库中的值与相对应的Row字段值的映射关系。
如前所述,在主服务器中可以存储有第一级索引目录,在第一级索引目录中包含Row字段值与分片服务器的映射关系;在分片服务器中可以存储有第二级索引目录和第三级索引目录,在第二级索引目录中包含列字段与列索引文件的映射关系;在第三级索引目录下,存储列索引文件对应列字段的Data文件、Index文件和本发明建立的ColIndex文件。
本发明提供的分布式列存储数据库系统中,分片服务器可以是一个或多个。
综上所述,本发明通过获取分布式列存储数据库中除Row字段外的列字段,生成以列字段作为关键字的列索引文件,在该列索引文件中包含该列字段在分布式列存储数据库中的值与相对应的Row字段值的映射关系;并将生成的列索引文件存储到与列字段对应的索引目录下。从而使得客户端可以向分布式列存储数据库的主服务器发起携带查询结果的列字段、查询条件的列字段及 字段值信息的查询请求,通过匹配出与查询条件的列字段对应的列索引文件,获取对应Row字段值,再利用现有技术的查询方式根据Row字段值获得查询结果,实现了在分布式列存储数据库中采用非Row字段的其余列字段进行索引查询,极大地满足用户的使用需求。
采用本发明提供的分布式列存储数据库查询方法,由客户端并行地同时向各分片服务器发起查询请求,使得对数据的多条件查询处理在各分片服务器同时进行,从而实现了快速高效的查询。而如果不采用本发明提供的分布式列存储数据库查询方式,而采用现有数据库常用的索引方法,即在主服务器中建立一个索引表,进行集中式的多条件查询处理,在索引表中存储列字段中列数据到其存储位置的映射,这种常规索引方法在处理所有的条件数据判断时,主服务器极有可能内存溢出,导致无法处理;且在获取数据的存储位置时,需要经过三次索引定位,增加网络开销。
其次,采用本发明提供的分布式列存储数据库查询方法,分片服务器直接在本地进行数据查询处理,即各分片服务器只需处理本地存储的数据就能获得查询结果,没有网络交互,减少了网络的开销,进一步提高了查询速度及效率。
再次,采用本发明提供的分布式列存储数据库查询方法,每次查询是针对列索引文件进行的,相对于采用遍历方式查询所需要的时间复杂度N而言,其时间复杂度仅为log2N。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读取存储介质中,如:ROM/RAM、磁碟、光盘等。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (14)
1.一种分布式列存储数据库索引建立方法,其特征在于,包括:
获取分布式列存储数据库中的列字段;
生成以所述列字段作为关键字的列索引文件,所述列索引文件中包含所述列字段在所述分布式列存储数据库中的值与对应的Row字段值的映射关系;
存储所述列索引文件到所述分布式列存储数据库中与所述列字段对应的索引目录下。
2.如权利要求1所述的方法,其特征在于,在所述分布式列存储数据库的主服务器中,存储Row字段值与所述分布式列存储数据库的分片服务器的映射关系;
在所述分片服务器中,存储分配的分片数据中所述列字段对应的数据文件、以Row字段为关键字的索引文件和生成的对应列索引文件。
3.如权利要求2所述的方法,其特征在于,所述分布式列存储数据库采用三级索引目录结构,具体包括:
在所述主服务器中存储第一级索引目录,在所述第一级索引目录中包含所述Row字段值与所述分片服务器的映射关系;
在所述分片服务器中存储第二级索引目录和第三级索引目录,在所述第二级索引目录中包含所述列字段与列存储文件的映射关系;在所述第三级索引目录中包含所述列存储文件对应列字段的所述数据文件、索引文件和列索引文件。
4.如权利要求3所述的方法,其特征在于,当一个所述分片服务器中存储一片或以上的分片数据时,对每片分片数据分别建立所述第二级索引目录和第三级索引目录。
5.如权利要求1-4任一所述的方法,其特征在于,当所述分布式列存储数据库中增加数据、删除数据或修改数据后,重新生成所述列索引文件或修改所述列索引文件中的对应数据。
6.一种根据如权利要求1所述的方法建立索引的分布式列存储数据库查询方法,其特征在于,包括:
客户端向分布式列存储数据库的主服务器发起查询请求;
所述主服务器根据本地存储的Row字段值与所述分布式列存储数据库的分片服务器的映射关系,向所述客户端返回分片服务器信息;
所述客户端向所述分片服务器发起查询请求,在该查询请求中携带查询结果的列字段、查询条件的列字段及字段值信息;
所述分片服务器根据本地存储的列字段的索引目录,匹配出与所述查询条件的列字段对应的列索引文件,所述列索引文件中包含所述列字段在所述分布式列存储数据库中的值与对应的Row字段值的映射关系;
所述分片服务器根据匹配出的所述列索引文件及所述字段值信息获取对应Row字段值,并根据获取的Row字段值查询与所述查询结果的列字段对应的索引文件和数据文件,得到满足查询条件结果值,返回给所述客户端。
7.如权利要求6所述的方法,其特征在于,当所述主服务器返回的分片服务器信息中包含多个分片服务器时,所述客户端并行地分别向每个分片服务器发起所述查询请求。
8.如权利要求6或7所述的方法,其特征在于,当发送给所述分片服务器的所述查询请求中包含一个以上的查询条件时,所述分片服务器分别获取每个查询条件对应的Row字段值,再根据各查询条件之间的逻辑关系,确定出满足全部查询条件的最终Row字段值,并根据所述最终Row字段值查询所述查询结果的列字段对应的数据文件,得到满足查询条件结果值,返回给所述客户端。
9.一种分布式列存储数据库索引建立装置,其特征在于,包括:
获取单元,用于获取分布式列存储数据库中的列字段;
生成单元,用于生成以所述获取单元获取的所述列字段作为关键字的列索引文件,所述列索引文件中包含所述列字段在所述分布式列存储数据库中的值与对应的Row字段值的映射关系;
存储单元,用于存储所述列索引文件到所述分布式列存储数据库中与所述列字段对应的索引目录下。
10.如权利要求9所述的装置,其特征在于,所述生成单元包括:
获取子单元,用于获取所述列字段在所述分布式列存储数据库中的值;
匹配子单元,用于在所述分布式列存储数据库中匹配出与所述列字段的值对应的Row字段值;
生成子单元,用于建立起所述列字段的值与对应的Row字段的值之间的映射关系,生成所述列索引文件。
11.如权利要求9或10所述的装置,其特征在于,所述装置为软件模块,嵌入到存储所述分布式列存储数据库的分片数据的分片服务器中。
12.一种分布式列存储数据库系统,包括主服务器和分片服务器,其特征在于:
所述主服务器包括:
第一存储单元,用于存储分布式列存储数据库的Row字段值与分片服务器的映射关系;以及
查询受理单元,用于接收客户端的查询请求,根据所述第一存储单元存储的所述映射关系向客户端返回分片服务器信息;
所述分片服务器包括:
列索引文件生成单元,用于获取分布式列存储数据库中的列字段,生成以所述列字段作为关键字的列索引文件,所述列索引文件中包含所述列字段在所述分布式列存储数据库中的值与对应的Row字段值的映射关系,并存储所述列索引文件到所述分布式列存储数据库中与所述列字段对应的索引目录下;
第二存储单元,用于存储分配的分片数据中的列字段对应的数据文件、以Row字段为关键字的索引文件和所述列字段的列索引文件;
分析单元,用于接收客户端发送的查询请求,分析所述查询请求中携带的查询结果的列字段、查询条件的列字段及字段值信息;
匹配单元,用于根据所述查询条件的列字段在所述第二存储单元中匹配出对应的列索引文件,并根据匹配出的所述列索引文件及所述字段值信息,获取对应Row字段值;
结果查询单元,用于用获取的Row字段值查询所述查询结果的列字段对应的索引文件和数据文件,得到满足查询条件的查询结果值;
结果返回单元,用于向发起查询请求的所述客户端返回所述查询结果值。
13.如权利要求12所述的系统,其特征在于,在所述主服务器的第一存储单元中存储有第一级索引目录,在所述第一级索引目录中包含所述Row字段值与分片服务器的映射关系;
在所述分片服务器的第二存储单元中存储有第二级索引目录和第三级索引目录,在所述第二级索引目录中包含所述列字段与列存储文件的映射关系;在所述第三级索引目录中包含所述列存储文件对应列字段的所述数据文件、索引文件和列索引文件。
14.如权利要求12或13所述的系统,其特征在于,所述分片服务器为多个。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008102254863A CN101727465B (zh) | 2008-11-03 | 2008-11-03 | 分布式列存储数据库索引建立、查询方法及装置与系统 |
PCT/CN2009/001221 WO2010048789A1 (zh) | 2008-11-03 | 2009-11-03 | 用于分布式列存储数据库索引建立、查询的方法、装置及系统 |
US13/127,031 US20110314027A1 (en) | 2008-11-03 | 2009-11-03 | Index building, querying method, device, and system for distributed columnar database |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008102254863A CN101727465B (zh) | 2008-11-03 | 2008-11-03 | 分布式列存储数据库索引建立、查询方法及装置与系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101727465A CN101727465A (zh) | 2010-06-09 |
CN101727465B true CN101727465B (zh) | 2011-12-21 |
Family
ID=42128203
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008102254863A Active CN101727465B (zh) | 2008-11-03 | 2008-11-03 | 分布式列存储数据库索引建立、查询方法及装置与系统 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20110314027A1 (zh) |
CN (1) | CN101727465B (zh) |
WO (1) | WO2010048789A1 (zh) |
Families Citing this family (72)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120016901A1 (en) * | 2010-05-18 | 2012-01-19 | Google Inc. | Data Storage and Processing Service |
CN101916280A (zh) * | 2010-08-17 | 2010-12-15 | 上海云数信息科技有限公司 | 并行计算系统及按查询内容进行负载均衡的方法 |
CN102375853A (zh) * | 2010-08-24 | 2012-03-14 | 中国移动通信集团公司 | 分布式数据库系统、在其中建立索引的方法和查询方法 |
CN102142006B (zh) | 2010-10-27 | 2013-10-02 | 华为技术有限公司 | 分布式文件系统的文件处理方法及装置 |
CN102567329B (zh) * | 2010-12-15 | 2013-10-23 | 金蝶软件(中国)有限公司 | 一种数据查询方法及系统 |
CN102156714B (zh) * | 2011-03-22 | 2012-11-14 | 清华大学 | 实现自适应垂直划分的关系型数据库的方法及系统 |
US8671111B2 (en) * | 2011-05-31 | 2014-03-11 | International Business Machines Corporation | Determination of rules by providing data records in columnar data structures |
CN102999519B (zh) * | 2011-09-15 | 2017-05-17 | 上海盛付通电子商务有限公司 | 一种数据库的读写方法及系统 |
US8918363B2 (en) | 2011-11-14 | 2014-12-23 | Google Inc. | Data processing service |
US9501483B2 (en) * | 2012-09-18 | 2016-11-22 | Mapr Technologies, Inc. | Table format for map reduce system |
CN102890721B (zh) * | 2012-10-16 | 2016-03-30 | 苏州迈科网络安全技术股份有限公司 | 基于列存储技术的数据库建立方法及系统 |
CN103020204B (zh) * | 2012-12-05 | 2018-09-25 | 北京普泽创智数据技术有限公司 | 一种对分布式顺序表进行多维区间查询的方法及其系统 |
CN103902614B (zh) * | 2012-12-28 | 2018-05-04 | 中国移动通信集团公司 | 一种数据处理方法、设备和系统 |
US10885001B2 (en) | 2013-01-17 | 2021-01-05 | International Business Machines Corporation | System and method for assigning data to columnar storage in an online transactional system |
CN103631937B (zh) * | 2013-12-06 | 2017-03-15 | 北京趣拿信息技术有限公司 | 构建列存储索引的方法、装置及系统 |
CN103678556B (zh) * | 2013-12-06 | 2017-10-10 | 华为技术有限公司 | 列式数据库处理的方法和处理设备 |
CN103647850B (zh) * | 2013-12-25 | 2017-01-25 | 北京京东尚科信息技术有限公司 | 一种分布式版本控制系统的数据处理方法、设备及系统 |
US20150227629A1 (en) * | 2014-02-13 | 2015-08-13 | Christian Klensch | Financial reporting system with reduced data redundancy |
CN103778258B (zh) * | 2014-02-27 | 2017-09-29 | 华为技术有限公司 | 一种数据库数据的发送、接收方法、客户端、服务器 |
CN104955063A (zh) * | 2014-03-27 | 2015-09-30 | 中国移动通信集团广东有限公司 | 容灾数据库的建立方法、容灾方法、装置及网络系统 |
CN104035956A (zh) * | 2014-04-11 | 2014-09-10 | 江苏瑞中数据股份有限公司 | 一种基于分布式列存储的时间序列数据存储方法 |
CN104133867A (zh) * | 2014-07-18 | 2014-11-05 | 中国科学院计算技术研究所 | 分布式顺序表片内二级索引方法及系统 |
CN105589910A (zh) * | 2014-12-31 | 2016-05-18 | 中国银联股份有限公司 | 基于HBase的海量交易数据检索及系统 |
CN105224609B (zh) * | 2015-09-07 | 2018-09-14 | 北京金山安全软件有限公司 | 一种索引查询方法及装置 |
CN106557494B (zh) * | 2015-09-25 | 2019-09-20 | 北京国双科技有限公司 | 更新列存储表的方法及装置 |
CN105376165B (zh) * | 2015-10-15 | 2019-02-22 | 深圳市金证科技股份有限公司 | Udp组播方法、系统、发送装置及接收装置 |
CN106802891A (zh) * | 2015-11-26 | 2017-06-06 | 中国电信股份有限公司 | 分布式数据库非分片字段的查询方法、系统和设备 |
CN105550225B (zh) * | 2015-12-07 | 2019-05-28 | 百度在线网络技术(北京)有限公司 | 索引构建方法、查询方法及装置 |
CN105574093B (zh) * | 2015-12-10 | 2019-09-10 | 深圳市华讯方舟软件技术有限公司 | 一种在基于HDFS的spark-sql大数据处理系统上建立索引的方法 |
CN105653628B (zh) * | 2015-12-28 | 2019-08-13 | 湖南蚁坊软件股份有限公司 | 一种基于倒排索引的列存储数据库的查询方法 |
CN106959963B (zh) * | 2016-01-12 | 2020-04-28 | 杭州海康威视数字技术股份有限公司 | 一种数据查询方法、装置及系统 |
CN106471501B (zh) * | 2016-03-24 | 2020-04-14 | 华为技术有限公司 | 数据查询的方法、数据对象的存储方法和数据系统 |
CN107844488B (zh) * | 2016-09-18 | 2022-02-01 | 北京京东尚科信息技术有限公司 | 数据查询方法和装置 |
JP6871504B2 (ja) * | 2016-12-27 | 2021-05-12 | 富士通株式会社 | 情報処理装置、データロードプログラム及びデータロード方法 |
CN106844564A (zh) * | 2016-12-30 | 2017-06-13 | 郑州云海信息技术有限公司 | 一种网盘文件分表方法及装置 |
CN106844539A (zh) * | 2016-12-30 | 2017-06-13 | 曙光信息产业(北京)有限公司 | 实时数据分析方法及系统 |
CN106844541B (zh) * | 2016-12-30 | 2020-05-29 | 晶赞广告(上海)有限公司 | 一种联机分析处理方法及装置 |
CN108572958B (zh) * | 2017-03-07 | 2022-07-29 | 腾讯科技(深圳)有限公司 | 数据处理方法及装置 |
CN109120885B (zh) * | 2017-06-26 | 2021-01-05 | 杭州海康威视数字技术股份有限公司 | 视频数据获取方法及装置 |
US10437807B1 (en) * | 2017-07-06 | 2019-10-08 | Palantir Technologies Inc. | Selecting backing stores based on data request |
CN110019192B (zh) * | 2017-09-21 | 2023-10-31 | 阿里云计算有限公司 | 数据库的检索方法及装置 |
CN110019211A (zh) * | 2017-11-27 | 2019-07-16 | 北京京东尚科信息技术有限公司 | 关联索引的方法、装置和系统 |
CN110019218B (zh) | 2017-12-08 | 2023-08-25 | 阿里巴巴集团控股有限公司 | 数据存储与查询方法及设备 |
CN107908371A (zh) * | 2017-12-08 | 2018-04-13 | 浪潮软件股份有限公司 | 一种数据管理系统及其实现数据管理业务的方法 |
CN108427748A (zh) * | 2018-03-12 | 2018-08-21 | 北京奇艺世纪科技有限公司 | 分布式数据库二级索引查询方法、装置以及服务器 |
CN112988749A (zh) * | 2018-03-14 | 2021-06-18 | 北京忆芯科技有限公司 | 通过kv存储设备响应检索请求的方法及装置 |
CN110751568B (zh) * | 2018-07-20 | 2024-04-30 | 武汉烽火众智智慧之星科技有限公司 | 一种人员关系亲密度分析方法及装置 |
CN109241056B (zh) * | 2018-08-23 | 2021-03-05 | 重庆富民银行股份有限公司 | 一种用于分布式系统的数字id生成系统 |
CN109542889B (zh) * | 2018-10-11 | 2023-07-21 | 平安科技(深圳)有限公司 | 流式数据列存储方法、装置、设备和存储介质 |
CN109063219A (zh) * | 2018-10-30 | 2018-12-21 | 深圳市海能通信股份有限公司 | 一种大数据结构化查询系统 |
CN109299106B (zh) * | 2018-10-31 | 2020-09-22 | 中国联合网络通信集团有限公司 | 数据查询方法和装置 |
CN109710572B (zh) * | 2018-12-29 | 2021-02-02 | 北京赛思信安技术股份有限公司 | 一种基于HBase的文件分片方法 |
US11294905B2 (en) * | 2019-01-07 | 2022-04-05 | Optumsoft, Inc. | Sparse data index table |
CN110008289B (zh) * | 2019-03-01 | 2022-08-26 | 国电南瑞科技股份有限公司 | 一种关系数据库、电网模型数据存储及检索方法 |
CN110457363B (zh) * | 2019-07-05 | 2023-11-21 | 中国平安人寿保险股份有限公司 | 基于分布式数据库的查询方法、装置及存储介质 |
CN110765126B (zh) * | 2019-09-10 | 2023-02-07 | 浙江大华技术股份有限公司 | 分布式数据库的数据存储及查询方法、装置及存储介质 |
CN111104369A (zh) * | 2019-12-16 | 2020-05-05 | 北京明略软件系统有限公司 | 一种检索数据库构建方法及装置 |
CN111008200B (zh) * | 2019-12-18 | 2024-01-16 | 北京数衍科技有限公司 | 数据查询方法、装置和服务器 |
CN111352951A (zh) * | 2020-02-26 | 2020-06-30 | 苏宁云计算有限公司 | 一种数据导出方法、装置及系统 |
CN111506569B (zh) * | 2020-03-02 | 2024-03-01 | 平安科技(深圳)有限公司 | 数据存储方法、装置、电子装置 |
CN111427885B (zh) * | 2020-03-03 | 2023-06-09 | 中科驭数(北京)科技有限公司 | 基于查找表的数据库管理方法和装置 |
CN113535673B (zh) * | 2020-04-17 | 2023-09-26 | 北京京东振世信息技术有限公司 | 生成配置文件及数据处理的方法和装置 |
CN111737316A (zh) * | 2020-06-19 | 2020-10-02 | 广联达科技股份有限公司 | 一种工程清单查询方法、装置、计算机设备和存储介质 |
CN111797134A (zh) * | 2020-06-23 | 2020-10-20 | 北京小米松果电子有限公司 | 分布式数据库的数据查询方法、装置和存储介质 |
CN111858496B (zh) * | 2020-07-27 | 2021-09-17 | 北京大道云行科技有限公司 | 一种元数据的检索方法、装置、存储介质和电子设备 |
CN112000666B (zh) * | 2020-08-04 | 2024-02-20 | 广州未名中智教育科技有限公司 | 一种面向列的数据库管理系统 |
CN112416925B (zh) * | 2020-11-02 | 2024-04-09 | 浙商银行股份有限公司 | 基于有序分布式索引结构的查询方法和分布式数据库系统 |
CN112765169A (zh) * | 2021-01-11 | 2021-05-07 | 北京众享比特科技有限公司 | 数据处理方法、装置、设备及存储介质 |
CN113486005B (zh) * | 2021-06-09 | 2024-04-19 | 中国科学院空天信息创新研究院 | 异构结构下的空间科学卫星大数据组织及查询方法 |
CN113722296A (zh) * | 2021-09-07 | 2021-11-30 | 四川港投滨水农业研究院有限公司 | 一种农业信息处理方法、装置、电子设备及存储介质 |
CN114185934B (zh) * | 2021-12-15 | 2022-10-14 | 广州辰创科技发展有限公司 | 一种基于天盾数据库列存储的索引及查询方法及系统 |
CN116319809B (zh) * | 2022-12-27 | 2023-12-29 | 昆仑数智科技有限责任公司 | 数据操作的方法和系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5649181A (en) * | 1993-04-16 | 1997-07-15 | Sybase, Inc. | Method and apparatus for indexing database columns with bit vectors |
CN1561497A (zh) * | 2001-09-28 | 2005-01-05 | 甲骨文国际公司 | 提供关系数据的一致性层次抽象化 |
CN1588369A (zh) * | 2004-09-06 | 2005-03-02 | 杭州恒生电子股份有限公司 | 一种关系型数据库系统及其查询和报表方法 |
CN1741017A (zh) * | 2004-05-14 | 2006-03-01 | 微软公司 | 用于索引和搜索数据库的方法和装置 |
US7461089B2 (en) * | 2004-01-08 | 2008-12-02 | International Business Machines Corporation | Method and system for creating profiling indices |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6505188B1 (en) * | 2000-06-15 | 2003-01-07 | Ncr Corporation | Virtual join index for relational databases |
EP1446737B1 (en) * | 2001-09-28 | 2016-04-27 | Oracle International Corporation | An efficient index structure to access hierarchical data in a relational database system |
US8321420B1 (en) * | 2003-12-10 | 2012-11-27 | Teradata Us, Inc. | Partition elimination on indexed row IDs |
US7987181B2 (en) * | 2004-06-16 | 2011-07-26 | Symantec Operating Corporation | System and method for directing query traffic |
US7921132B2 (en) * | 2005-12-19 | 2011-04-05 | Yahoo! Inc. | System for query processing of column chunks in a distributed column chunk data store |
US20080059492A1 (en) * | 2006-08-31 | 2008-03-06 | Tarin Stephen A | Systems, methods, and storage structures for cached databases |
US7769789B2 (en) * | 2007-05-11 | 2010-08-03 | Oracle International Corporation | High performant row-level data manipulation using a data layer interface |
US9195657B2 (en) * | 2010-03-08 | 2015-11-24 | Microsoft Technology Licensing, Llc | Columnar storage of a database index |
-
2008
- 2008-11-03 CN CN2008102254863A patent/CN101727465B/zh active Active
-
2009
- 2009-11-03 US US13/127,031 patent/US20110314027A1/en not_active Abandoned
- 2009-11-03 WO PCT/CN2009/001221 patent/WO2010048789A1/zh active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5649181A (en) * | 1993-04-16 | 1997-07-15 | Sybase, Inc. | Method and apparatus for indexing database columns with bit vectors |
CN1561497A (zh) * | 2001-09-28 | 2005-01-05 | 甲骨文国际公司 | 提供关系数据的一致性层次抽象化 |
US7461089B2 (en) * | 2004-01-08 | 2008-12-02 | International Business Machines Corporation | Method and system for creating profiling indices |
CN1741017A (zh) * | 2004-05-14 | 2006-03-01 | 微软公司 | 用于索引和搜索数据库的方法和装置 |
CN1588369A (zh) * | 2004-09-06 | 2005-03-02 | 杭州恒生电子股份有限公司 | 一种关系型数据库系统及其查询和报表方法 |
Also Published As
Publication number | Publication date |
---|---|
US20110314027A1 (en) | 2011-12-22 |
WO2010048789A1 (zh) | 2010-05-06 |
CN101727465A (zh) | 2010-06-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101727465B (zh) | 分布式列存储数据库索引建立、查询方法及装置与系统 | |
KR101137147B1 (ko) | 질의 강제 인덱싱 | |
CN107784044B (zh) | 表数据查询方法及装置 | |
CN103729471B (zh) | 数据库查询方法和装置 | |
US9378233B2 (en) | For all entries processing | |
KR101365464B1 (ko) | 데이터베이스 미들웨어를 이용한 데이터 관리 시스템 및 방법 | |
US8924373B2 (en) | Query plans with parameter markers in place of object identifiers | |
US9747349B2 (en) | System and method for distributing queries to a group of databases and expediting data access | |
US9229961B2 (en) | Database management delete efficiency | |
US8812489B2 (en) | Swapping expected and candidate affinities in a query plan cache | |
US20160342653A1 (en) | Parallelizing sql user defined transformation functions | |
US10685031B2 (en) | Dynamic hash partitioning for large-scale database management systems | |
WO2017088666A1 (zh) | 一种数据存储方法和协调节点 | |
CN110399368B (zh) | 一种定制数据表的方法、数据操作方法及装置 | |
CN108319608A (zh) | 访问日志存储查询的方法、装置及系统 | |
CN101789027A (zh) | 一种基于dbms的元数据管理方法和元数据服务器 | |
CN103810219A (zh) | 一种基于行存储数据库的数据处理方法及装置 | |
CN109241100B (zh) | 一种查询方法、装置、设备及存储介质 | |
CN111400301B (zh) | 一种数据查询方法、装置及设备 | |
CN115809268B (zh) | 一种基于分片索引的自适应查询方法和装置 | |
CN110019448B (zh) | 一种数据交互方法及装置 | |
WO2008055202A2 (en) | System and method for distributing queries to a group of databases and expediting data access | |
CN111309704B (zh) | 数据库操作方法和数据库操作系统 | |
CN112434189A (zh) | 数据查询方法、装置及设备 | |
CN111026747A (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 | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20170110 Address after: Kolding road high tech Zone of Suzhou City, Jiangsu Province, No. 78 215163 Patentee after: CHINA MOBILE (SUZHOU) SOFTWARE TECHNOLOGY CO., LTD. Patentee after: China Mobile Communications Co., Ltd. Patentee after: China Mobile Communications Corp. Address before: 100032 Beijing Finance Street, No. 29, Xicheng District Patentee before: China Mobile Communications Corp. |