CN103309890A - 一种Linux文件系统与实时数据库索引融合的技术 - Google Patents
一种Linux文件系统与实时数据库索引融合的技术 Download PDFInfo
- Publication number
- CN103309890A CN103309890A CN2012100675116A CN201210067511A CN103309890A CN 103309890 A CN103309890 A CN 103309890A CN 2012100675116 A CN2012100675116 A CN 2012100675116A CN 201210067511 A CN201210067511 A CN 201210067511A CN 103309890 A CN103309890 A CN 103309890A
- Authority
- CN
- China
- Prior art keywords
- data
- bunch
- aggregate
- block
- time
- 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
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种将文件系统和实时数据库索引相融合的技术。该技术包括:具有文件系统属性的磁盘数据管理方式,具有工业特征的点、时间和数值的数据索引方式,具有专用的数据访问接口,其结构如图1所示。在本发明公开的技术,磁盘中的数据组织以点为索引点,将磁盘分为若干个簇,每个点包含多个簇,簇与簇之间通过链表连接,形成数据簇链,点所拥有的簇可动态增长。通过簇信息,可以检索到该点在某一时刻的数据块。通过本公开发明的方法,保证以点为单位的数据的独立性。采用簇的管理方式,避免因局部数据的破坏而影响数据完整。通过以点为索引对象,减少了数据查找的时间,提高查询效率,同时也提高实时数据库的性能。
Description
技术领域
本发明涉及文件系统,实时数据库技术,以点为索引对象的工业数据索引技术。
背景技术
文件系统用来管理磁盘数据。文件系统的数据索引方式和磁盘数据组织结构有着密切的关系。目前的目前绝大多数文件系统采用的层次结构和目录索引机制,这种分级机制在文件分类管理、文件数目的动态增减和文件数据的动态增长方面有着高效的性能。但对于大规模的工业数据上,这种文件系统的管理方式影响工业数据的查询。
实时数据库是数据库技术与实时系统结合的产物。实时数据库在流程行业(石化,电力,钢铁)有着广泛的应用。它可用于生产过程的自动采集、存储和监视,也可在线存储每个工艺过程点的多年数据,是企业MES的核心。实时数据库的最主要特征就是其数据和任务都有显式定时限制,但是由于实时数据库主要应用于流程行业,而流程行业通常点数规模比较大,在要求的实时性的同时还要完成对于大量历史数据的检索,以便事后分析和事故追忆,因此如何高效的对实时数据库的数据进行有效的组织管理和快速的数据检索,就成了决定实时数据库性能好坏的关键因素。
目前的实时数据库产品,其原数据存储是建立在通用文件系统之上的,但是通用文件系统的组织结构和索引方式影响以点为单元的工业数据的查询效率,同时也限制了实时数据库的性能。
发明内容
本发明主要是提供一种新的数据存储与索引技术。这种数据索引技术根据工业数据特点,结合linux文件系统的实现方式,将数据的组织管理和实时数据库的索引技术相结合,提供一种按照点、时间、数值的快速索引机制,同时采用簇和块的磁盘数据块管理方式,提高单次查询的数据吞吐能力,从而调高实时数据库的性能。
为了达到上述目的,该方法的设计上,分为以下几个部分:
1.以点为索引对象
2.按时间段连续存储
3.按照数据块操作
4.采用独立的系统访问接口
将点作为索引对象:目前的绝大多数文件系统,用文件节点来表示文件对象和目录对象。对文件的索引是通过其目录节点、目录数据、文件节点、文件数据进行的。这种数据组织方式,在实时数据库中,如果对某一点的数据进行访问时,需要先找到原数据保存的目录,从目录的数据区中找到文件对应的索引节点号,按照索引节点号,找到索引信息,从索引信息中的数据块中取出数据,再从内存的缓冲区中找到对应点的数据。如果遇到文件从在多级目录,上述过程会不断的递归下去。这种文件索引方式降低了实时数据库中单点的巡查能力,同时也降低了实时数据库的性能。在本发明中设计的数据索引方式中,没有采用这种目录索引方式,而是将工业采样点作为索引对象。在针对某一点的数据操作时,首先获取该点的点信息,根据点信息中所指示的数据区,将数据从数据区中读取或存入。采用这种索引机制,减少了数据的访问时间,提高实时数据库的单秒巡检能力。
按时间段连续的存储:上文中已提过,这种索引技术是以点为索引对象,每一个点对应工业环境中的一个实际的数据采集点。将磁盘的数据块按照簇来管理,每一个点对应多个簇。每一个簇中,包含簇信息块和多个连续的数据块。簇信息中包含指向前一簇和指向后一簇的指针,通过这些指针,将该点的所有簇链接成一个双向链表。每一个簇中包含多个连续的数据块,可以将同一个点的数据保存在同一个簇的连续数据块中。数据簇信息中包含簇的起始时间和结束时间,同时保存着每一个数据块的起始时间和结束时间。通过这种组织方式,提高按时间查询命中的概率,减少了数据块的查询时间。
按照数据块来管理数据:目前的操作系统中是按照块来操作磁盘的,每一个块的大小分为1024字节、2048字节或者4096字节。事实证明,这种磁盘管理方式可以提高数据的吞吐能力。在本文中提及的索引技术的实现中,每一个块的大小为1024字节。在每一个数据块中保存着该点的多条记录,每一条记录的形式为:时间偏移+数据。根据上文中提到的簇中块的起始时间和结束时间,判读查询的时间点是否命中。然后根据数据块的起始时间和数据块内的时间偏移,查找出给定时间点的数据值。
系统调用接口:由于本索引技术的实现是以点为索引对象,同时按照独立的数据块操作。这种操作方式有别普通文件系统中通过文件句柄对文件的访问。在本技术中,通过添加新的系统调用来支持点、时间、数值的操作。系统调用如图1所示,具体信息为:数据写:点号、数据块数、数据块信息、数据块。数据读:点号、时间、缓冲区指针。
附图说明
图1所示为系统调用的示意图;
图2为磁盘数据组织结构。
图3为点索引和簇之间的关系。
图4为数据簇的结构。
图5数据块存储结构
图6系统挂载过程
图7系统保存数据的过程
图8系统读过程
具体实施方式
1.磁盘数据组织结构
硬盘上的组织结构包含超级块、点索引区、数据簇位图区和数据簇,其分布如图2所示。在文件系统格式化的时候,我们根据给定的点的数目S,点索引区包含S个索引指针(数据簇的索引块号),数据区起始要分配S个连续的数据簇。每个点数据超过一个数据簇的时候,在剩余的空闲空间内申请新的数据簇。
超级块:
超级块和其他文件系统中的超级快一样,负责记录整个磁盘的参数,记录着磁盘的大小,格式化时输入的点数,点索引区的起始位置,数据簇位图的起始位置,数据簇的大小,第一个空闲的数据簇等常用信息。
点索引区:
保存每个点的最后一个数据簇的索引信息,就是每个点的当前工作簇的索引块块号。因为点数在系统配置的时候,作为文件系统的配置参数,索引区和数据区的起始数据簇都是确定的,通过计算偏移量直接获取每个点的起始数据簇的索引块号,因此不需要保存在索引区中。点的簇是动态增长的,簇与簇之间是通过双向链表连接的,点索引区只保留点的最后一个簇的位置信息。点索引和下文介绍的数据簇之间的关系如图3所示。
数据簇位图区:
用来分配空闲簇的,这里申请磁盘的基本单位是一簇(大小42KB)。数据簇位图占n个数据块,每个数据块为1024字节,这样数据簇位图共有8192*n个比特位,每一个比特位可以表示一个数据簇的使用情况,如果为1,代表相应的数据簇已使用:如果为0,代表相应的数据簇未使用。数据簇大小为42个数据块(42kb),这样n个数据块的数据簇位图可以管理336*n(MB)的磁盘;
数据簇:
数据簇的结构如图4所示。数据簇包括两部分:簇信息和数据块。簇信息包括:簇号,即数据簇索引块对应的数据块的块号,存储绝对块号,通过此簇号可以读取出数据簇索引块的信息。簇起始时间。每个数据簇管理多个数据块,簇起始时间为本簇已存储的数据的起始时间。结束时间,即本簇已存储的数据的结束时间。已使用块数,即本簇已使用的数据块数。前驱簇指针。指向前一个簇,若为该点的第一个簇,则此指针为0。后驱簇,指向后一个簇,若为该点的最后一个簇,此指针为0。
数据块:
数据块的大小是1KB,记录着该点在一个时间段内的连续数据,其结构如图5所示。块的起始时间、结束时间和块的物理地址保存在上文中介绍的簇信息中。块内的数据格式为:时间偏移+数据。
2.挂载过程
本发明中的索引技术,与文件系统在linux系统中的存在形式一样,是以模块化的形式添加到内核中的,在测试的过程中需要手动添加模块,待索引技术授权后,即可编译到内核中,由操作系统完成模块的添加。在模块添加到系统后,可以通过mount命令来挂接文件系统。挂接文件系统属于系统实现,这里简单的介绍在挂接过程,完成的主要工作有:Inode缓冲区申请,文件系统的注册,读取文件系统的超级快,填充超级快信息,根节点的获取,在本发明的索引技术中,没有用到典型的Linux文件inode,但是,为了能够将文件系统的超级块信息保存在操作系统的所有文件系统超级块列表上,以便在文件的读写过程中能够迅速获取超级块信息,这里采用了虚拟的根节点,在实际中没有任何意义。文件系统的卸载和资源释放由操作系统来卸载,挂载过程如图6所示。
3.保存数据
保存数据就是通过上文中提到的专用系统调用接口,将数据保存到物理磁盘上的过程。保存数据系统调用接口要求输入的参数有三个:点编号ipoint、数据包dpi、数据包个数。首先判断点编号ipoint的合法性和数据包数量的合法性。根据点编号ipoint获取点的当前工作簇,具体方法为:根据点编号计算出操作点在点索引区所在的数据块和块内偏移量,由块号和块内偏移量就可以得到点的当前工作簇指针c_ptr,如果c_ptr为空指针,则说明该点为新点,需要调用create_cluster()函数为这个新点创建簇,并返回c_ptr。
保存数据并完成索引的维护,根据上一步得到的c_ptr读取当前工作簇的簇索引块,簇索引块保存着本簇的数据块使用情况和数据块索引信息等基本信息,簇索引块对查询历史记录非常重要,因此在把用户传入的数据包dpi保存到簇内的数据块上后,需要更新簇索引块。如果当前工作簇已存储满,申请新簇,在完成新簇的数据存储后,需要敬爱那个申请新簇位置信息更新该点在点索引区的当前工作簇指针。
保存数据过程的流程如图7所示。
4.数据检索过程
数据检索过程要求系统调用接口输入的参数为点编号N、时间Time,返回数据信息报dpi的存储位置。首先判读编号N和时间Time参数的合法性,根据点N编号和超级块中的数据簇位置信息获取该点的第一个数据簇。判断时间Time是否在该簇中命中,如果命中,返回该簇信息。如果没有命中,根据点索引信息中保存该点的最后一簇位置信息,获取其最后一簇,并判断时间Time是否命中,如果命中,返回簇信息。如果没有命中,则判读Time和第一个簇的结束时间和最后一个簇的起始时间的“距离关系”,选择从最近的一个簇开始遍历,减少遍历时间,寻找目标簇。如果没有找到目标簇,则读取信息失败。如果查找到目标簇,则从目标簇的簇信息中,根据该簇内每一块的时间信息,寻找命中块,根据命中块在簇内的偏移位置和簇位置信息,获取该块数据,并将数据保存在给定的dpi中。如果成功,则返回1,失败则返回0。数据检索过程的整个流程如8所示。
Claims (6)
1.一种Linux文件系统与实时数据库索引融合的技术,其特征在于,该方法包括:
在用户访问数据时,采用独立的系统调用接口和数据格式,有别于通过文件句柄和采用系统提供的open、write、read的访问方式。在数据交换上,没有常见的文件句柄、缓冲区,而是采用点,数据块信息,数据块的方式。
在磁盘组织结构上,采用独立设计的磁盘组织结构,有别于文件系统的组织结构,包括:引导块、超级块、点索引区、数据簇位图区、数据簇的方式。
在数据管理上,没有对磁盘数据块进行分组等常见文件系统的设计方式,而是采用数据簇的设计。
在数据索引上,没有采用目录节点、目录数据、文件节点、文件数据索引方式,而是以工业采样点的为索引节点,按照点、时间、数值的索引方式。
在数据存储上,根据工业数据的特征,采用独立的数据块设计格式。
2.根据权利要求1所述的方法,其特征在于,提供独立的访问接口和数据格式。
本文中发明的新索引方式和数据组织方式与文件系统管理方式有较大的差别,需要提供专门的系统调用接口,这些接口包括数据保存接口和数据检索接口。
数据保存系统调用接口的参数包括,要保存的点号,数据块缓冲区指针,和数据块信息。点号指的是点在磁盘中的编号。数据块指针指向用户缓冲区中的待写入的数据区。数据块信息包括时间信息和块数,时间信息指数据块中第一个数据的时间和最后一个数据的时间;数据块数,指的是要写入该点的数据块数,每一块的大小为1024个字节。
数据检索系统调用接口的参数包括:点号、时间值和数据保存缓冲区指针。点号和上文中介绍的一样。时间值是指要获取的数值所在的时间点。缓冲区指针指向用户保存数据的缓冲区,这个缓冲区大小为1024字节。类型为char型。从char型的数据中解析出具体的数值将在下文中介绍。
3.根据权利要求1所述的方法,其特征在于,采用独立的磁盘组织结构。
本发明中的索引方式,采用独立的磁盘组织结构,这些独立的结构将整个磁盘划分为:引导块、超级块、点索引区、数据簇位图区、数据簇。
超级块:保存了磁盘的参数和磁盘结构的位置信息,包括磁盘的大小,格式化时输入的点数,点索引区的起始位置,数据簇位图的起始位置,数据簇的大小,第一个空闲的数据簇等常用信息。
点索引区:保存每个点的数据簇的索引信息,即每个点的当前工作簇的索引块块号。因为点数在系统配置的时候,作为文件系统的配置参数,索引区和数据区的起始数据簇大小都是确定的,通过计算偏移量直接获取每个点的起始数据簇的索引块号,因此不需要保存在索引区中。点的簇是动态增长的,簇与簇之间是通过双向链表连接的,点索引区只保留点的最后一个簇的位置信息。
簇为图区:用来分配空闲簇的,这里申请磁盘的基本单位是一簇(大小42KB)。数据簇位图占n个数据块,每个数据块为1024字节,这样数据簇位图共有81920个比特位,每一个比特位可以表示一个数据簇的使用情况,如果为1,代表相应的数据簇已使用;如果为0,代表相应的数据簇未使用。数据簇大小为42个数据块(42kb),这样n个大小的数据簇位图可以管理336*n(MB)的磁盘;
数据簇:数据簇包括两部分:簇信息和数据块。簇信息包括:簇号,即数据簇索引块对应的数据块的块号,存储绝对块号,通过此簇号可以读取出数据簇索引块的信息。簇起始时间,每个数据簇管理多个数据块,簇起始时间为本簇已存储的数据的开始时间。结束时间,即本簇已存储的数据的结束时间。已使用块数,即本簇已使用的数据块数。前驱簇指针,指向前一个簇。若为该点的第一个簇,则此指针为0。后驱簇。指向后一个簇,若为该点的最后一个簇,此指针为0。
4.根据权利要求1所述的方法,其特征在于,采用独立的数据管理方式。
在本发明中,没有采用多级的数据块的方式来满足数据的动态增加和减少。采用簇的方式,每一个簇的大小为42个数据块。这样就可以将每一个点的数据按时间段来存储。如果某一点的簇内的数据块已分配完,可以申请新的数据簇加入,这样可以满足以点索引对象的数据动态增长的需求。同时,这种按簇的方式管理数据,能够避免因某个时间段内数据失效而影响整个点其他时间段的数据和其他点的数据,保证数据的独立性和安全性。
5.根据权利要求1所述的方法,其特征在于,采用独立的数据索引方式。
目前的文件系统采用的是常见的多级结构,目录索引的方式。这种索引方式在文件分类管理和动态增长方面表现出良好的性能。在本发明的索引方式中,没有采用多级分层的设计方式,而是将工业数据采集点作为数据索引的对象,按时间段来存储在上文提到的数据簇内。这样,可以在检索数据的时候先通过时间段确定簇。再在簇内,通过簇信息来确定具体的数据块。减少了在目录节点、目录数据、文件节点、文件数据中查找的时间。
6.根据权利要求1所述的方法,其特征在于,采用独立的数据块设计。
在本发明的索引方式中,将磁盘块按照簇的管理方式,每一个簇内包含确定数目的数据块。每一个数据块的大小为1KB,数据块的格式采用固定的格式:时间偏移+数据值。数据块的信息保存在簇信息中,其中块信息包括:起始时间,通过起始时间+偏移时间,就可以确定该时刻的具体值了。数据块号,通过簇信息中数据块起始位置+数据块号,就可以确定数据块所在的物理地址。数据偏移,按照偏移时间+数据的格式,一个数据块并不能够完全打满,因此采用了数据偏移记录数据结束的位置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2012100675116A CN103309890A (zh) | 2012-03-15 | 2012-03-15 | 一种Linux文件系统与实时数据库索引融合的技术 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2012100675116A CN103309890A (zh) | 2012-03-15 | 2012-03-15 | 一种Linux文件系统与实时数据库索引融合的技术 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103309890A true CN103309890A (zh) | 2013-09-18 |
Family
ID=49135127
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2012100675116A Pending CN103309890A (zh) | 2012-03-15 | 2012-03-15 | 一种Linux文件系统与实时数据库索引融合的技术 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103309890A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104731779A (zh) * | 2013-12-18 | 2015-06-24 | 中国电子信息产业集团有限公司第六研究所 | 一种面向实时数据库的实时文件系统数据组织管理方法 |
CN111143284A (zh) * | 2018-11-02 | 2020-05-12 | 浙江宇视科技有限公司 | 文件系统动态索引方法及装置 |
CN112905531A (zh) * | 2019-11-19 | 2021-06-04 | 千寻位置网络有限公司 | Gnss离线数据的存储方法、系统及调用方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6275919B1 (en) * | 1998-10-15 | 2001-08-14 | Creative Technology Ltd. | Memory storage and retrieval with multiple hashing functions |
CN1963814A (zh) * | 2006-11-29 | 2007-05-16 | 珠海市泰德企业有限公司 | 存储器数据管理方法 |
CN101051318A (zh) * | 2007-05-11 | 2007-10-10 | 北京中星微电子有限公司 | 利用文件分配表进行磁盘数据簇链接及寻道的方法 |
US7774338B2 (en) * | 2005-09-30 | 2010-08-10 | International Business Machines Corporation | Method and apparatus for displaying text information and numerical information in association with each other |
CN102253898A (zh) * | 2011-07-22 | 2011-11-23 | 杭州海康威视数字技术股份有限公司 | 一种图像数据的内存管理方法及装置 |
-
2012
- 2012-03-15 CN CN2012100675116A patent/CN103309890A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6275919B1 (en) * | 1998-10-15 | 2001-08-14 | Creative Technology Ltd. | Memory storage and retrieval with multiple hashing functions |
US7774338B2 (en) * | 2005-09-30 | 2010-08-10 | International Business Machines Corporation | Method and apparatus for displaying text information and numerical information in association with each other |
CN1963814A (zh) * | 2006-11-29 | 2007-05-16 | 珠海市泰德企业有限公司 | 存储器数据管理方法 |
CN101051318A (zh) * | 2007-05-11 | 2007-10-10 | 北京中星微电子有限公司 | 利用文件分配表进行磁盘数据簇链接及寻道的方法 |
CN102253898A (zh) * | 2011-07-22 | 2011-11-23 | 杭州海康威视数字技术股份有限公司 | 一种图像数据的内存管理方法及装置 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104731779A (zh) * | 2013-12-18 | 2015-06-24 | 中国电子信息产业集团有限公司第六研究所 | 一种面向实时数据库的实时文件系统数据组织管理方法 |
CN111143284A (zh) * | 2018-11-02 | 2020-05-12 | 浙江宇视科技有限公司 | 文件系统动态索引方法及装置 |
CN111143284B (zh) * | 2018-11-02 | 2023-06-20 | 浙江宇视科技有限公司 | 文件系统动态索引方法及装置 |
CN112905531A (zh) * | 2019-11-19 | 2021-06-04 | 千寻位置网络有限公司 | Gnss离线数据的存储方法、系统及调用方法 |
CN112905531B (zh) * | 2019-11-19 | 2022-11-15 | 千寻位置网络有限公司 | Gnss离线数据的存储方法、系统及调用方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6025149B2 (ja) | データを管理するシステムおよび方法 | |
CN107423422B (zh) | 基于网格的空间数据分布式存储及检索方法和系统 | |
CN102521406B (zh) | 海量结构化数据复杂查询任务的分布式查询方法和系统 | |
Hinrichs et al. | The grid file: a data structure designed to support proximity queries on spatial objects | |
CN102521405B (zh) | 支持高速加载的海量结构化数据存储、查询方法和系统 | |
CN101216821B (zh) | 数据采集系统的存储管理方法 | |
US9542424B2 (en) | Lifecycle-based horizontal partitioning | |
CN102779138B (zh) | 实时数据的硬盘存取方法 | |
CN102214176B (zh) | 超大维表的切分与表连接方法 | |
CN105912687B (zh) | 海量分布式数据库存储单元 | |
CN102629269B (zh) | 一种嵌入式数据库的检索及存储方法 | |
US20110137875A1 (en) | Incremental materialized view refresh with enhanced dml compression | |
CN105117417A (zh) | 一种读优化的内存数据库Trie树索引方法 | |
CN103366015A (zh) | 一种基于Hadoop的OLAP数据存储与查询方法 | |
CN102375853A (zh) | 分布式数据库系统、在其中建立索引的方法和查询方法 | |
CN106649687B (zh) | 大数据联机分析处理方法及装置 | |
CN110309233A (zh) | 数据存储的方法、装置、服务器和存储介质 | |
CN104239377A (zh) | 跨平台的数据检索方法及装置 | |
CN104111924A (zh) | 一种数据库系统 | |
CN102890678A (zh) | 一种基于格雷编码的分布式数据布局方法及查询方法 | |
CN102411632B (zh) | 基于链表的内存数据库页式存储方法 | |
CN107451233A (zh) | 时间属性优先的时空轨迹数据文件在辅助存储设备中的存储方法 | |
CN101587484B (zh) | 一种基于T-lt树的主存数据库的索引方法 | |
CN102654863A (zh) | 一种实时数据库历史数据组织管理方式 | |
CN110096509A (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: 20130918 |
|
WD01 | Invention patent application deemed withdrawn after publication |