CN106886375B - 存储数据的方法和装置 - Google Patents
存储数据的方法和装置 Download PDFInfo
- Publication number
- CN106886375B CN106886375B CN201710187260.8A CN201710187260A CN106886375B CN 106886375 B CN106886375 B CN 106886375B CN 201710187260 A CN201710187260 A CN 201710187260A CN 106886375 B CN106886375 B CN 106886375B
- Authority
- CN
- China
- Prior art keywords
- key
- write
- value pair
- pair data
- log file
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
Abstract
本申请公开了存储数据的方法和装置。该方法的一具体实施方式包括:获取待存储的键值对数据;将上述键值对数据存储在磁盘的预写日志文件中;根据上述键值对数据在磁盘中的存储位置以及该键值对数据中的键在内存中为该键值对数据生成索引项,以通过该索引项对该键值对数据执行预定操作,在检测到满足合并整理条件的预写日志文件时,根据索引将该满足预定条件的预写日志文件中保留的键值对数据追加写入磁盘中,其中,存储位置包括以下至少一项:预写日志文件的文件名、键值对数据在预写日志文件中与文件起始位置的偏移量。该实施方式可以减小写入放大问题,提高存储数据的有效性。
Description
技术领域
本申请涉及计算机技术领域,具体涉及数据处理领域,尤其涉及存储数据的方法和装置。
背景技术
写入放大(Write amplification,简称WA)是闪存和固态硬盘(SSD)中实际写入的物理信息量是将要写入的逻辑数量的多倍的现象。这是因为闪存在可重新写入数据前必须先擦除,执行这些操作的过程就产生了一次以上的用户数据和元数据的移动(或重新写入),导致物理信息量倍增,并增加请求写入的次数。
作为电子平台上开发程序或系统的核心组件,引擎可供开发者迅速生成、铺设程序所需的功能,或利用其辅助程序的运转。现有的引擎架构一般包括三个部分:日志模块、索引模块和存储模块,日志模块保存与内存一致的数据,从日志模块中保存入存储模块的数据在日志模块中被清除。在数据被从日志模块中保存入存储模块时,需要对数据进行过滤冗余处理,通过索引模块从日志模块中读出键值对,清除重复的键或者被删除的键值,之后,将保留的键值写入存储模块。这种读、写过程存在写入放大问题,从而导致盘片需求量增大,存储数据的有效性不高。
发明内容
本申请的目的在于提出一种改进的存储数据的方法和装置,来解决以上背景技术部分提到的技术问题。
第一方面,本申请实施例提供了一种存储数据的方法,该方法包括:获取待存储的键值对数据;将上述键值对数据存储在磁盘的预写日志文件中;根据上述键值对数据在磁盘中的存储位置以及该键值对数据中的键在内存中为该键值对数据生成索引项,以通过该索引项对该键值对数据执行预定操作,在检测到满足合并整理条件的预写日志文件时,根据索引将该满足预定条件的预写日志文件中保留的键值对数据追加写入磁盘中,其中,存储位置包括以下至少一项:预写日志文件的文件名、键值对数据在预写日志文件中与文件起始位置的偏移量。
在一些实施例中,当预定操作包括读操作时,通过索引项对预写日志文件中所存储的键值对数据执行预定操作包括:在索引中查找待读取键值对数据所对应的索引项,以获取待读取键值对数据的存储位置;根据上述存储位置从预写日志文件中读取待读取键值对数据。
在一些实施例中,当预定操作包括删除操作时,通过所述索引项对预写日志文件中所存储的键值对数据执行预定操作包括:根据键值对数据中的键在索引中删除待删除键值对数据的索引项。
在一些实施例中,上述方法还包括:删除被追加写入磁盘的预写日志文件;更新内存中的索引。
在一些实施例中,合并整理条件包括以下至少一项:预写日志文件的占用空间超过预设文件空间阈值;预写日志文件的占用空间与总空间的比值超过预设文件空间比例阈值;预写日志文件中被删除的键值对数据超过预设阈值;预写日志文件中被删除键值对数据的占用空间与总空间的比值超过预设删除比例阈值;磁盘的已占用空间超过预设磁盘空间阈值;磁盘的已占用空间与磁盘总容量的比值超过预设磁盘空间比例阈值。
在一些实施例中,内存中的索引包括根据磁盘中的预写日志文件中的键值对数据的键生成的字典树,其中,在该字典树中,从根节点出发的每条路径对应一个键值对数据的键,每条路径的最后一个节点存储该路径所对应的键值对数据的存储位置。
第二方面,本申请实施例还提供了一种存储数据的装置,该装置包括:获取模块,配置用于获取待存储的键值对数据;存储模块,配置用于将上述键值对数据存储在磁盘的预写日志文件中;索引项生成模块,配置用于根据上述键值对数据在磁盘中的存储位置以及键值对数据中的键在内存中为该键值对数据生成索引项,以供数据操作模块通过该索引项对该键值对数据执行预定操作,在检测到满足合并整理条件的预写日志文件时,根据索引将该满足预定条件的预写日志文件中保留的键值对数据追加写入磁盘中,其中,存储位置包括以下至少一项:预写日志文件的文件名、键值对数据在预写日志文件中与文件起始位置的偏移量。
在一些实施例中,当预定操作包括读操作时,数据操作模块配置用于:在索引中查找待读取键值对数据所对应的索引项,以获取待读取键值对数据的存储位置;根据存储位置从预写日志文件中读取待读取键值对数据。
在一些实施例中,当预定操作包括删除操作时,数据操作模块配置用于:根据键值对数据中的键在索引中删除待删除键值对数据的索引项。
在一些实施例中,上述装置还包括:删除模块,配置用于删除被追加写入磁盘的预写日志文件;索引生成模块还配置用于更新内存中的索引。
在一些实施例中,合并整理条件包括以下至少一项:预写日志文件的占用空间超过预设文件空间阈值;预写日志文件的占用空间与总空间的比值超过预设文件空间比例阈值;预写日志文件中被删除的键值对数据超过预设阈值;预写日志文件中被删除键值对数据的占用空间与总空间的比值超过预设删除比例阈值;磁盘的已占用空间超过预设磁盘空间阈值;磁盘的已占用空间与磁盘总容量的比值超过预设磁盘空间比例阈值。
在一些实施例中,内存中的索引包括根据磁盘中的预写日志文件中的键值对数据的键生成的字典树,其中,在该字典树中,从根节点出发的每条路径对应一个键值对数据的键,每条路径的最后一个节点存储该路径所对应的键值对数据的存储位置。
第三方面,本申请实施例提供了一种存储设备,包括:一个或多个处理器;程序存储装置,用于存储一个或多个程序;磁盘,用于存储一个或多个预写日志文件;当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现任一上述的方法。
本申请实施例提供的存储数据的方法和装置,通过获取待存储的键值对数据,接着将该键值对数据存储在磁盘的预写日志文件中,然后根据该键值对数据在磁盘中的存储位置以及该键值对数据中的键在内存中为该键值对生成索引项,以通过索引项对预写日志文件中所存储的键值对数据执行预定操作,在检测到满足合并整理条件的预写日志文件时,根据索引将该满足预定条件的预写日志文件中保留的键值对数据追加写入磁盘中。由于键值对数据存储在预写日志文件中,可以通过对内存中的索引项对预写日志文件中所存储的键值对数据执行预定操作,在合并整理操作时,以追加写方式只写保留的键值对数据,从而可以减小写入放大问题,提高存储数据的有效性。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1是本申请可以应用于其中的示例性系统架构图;
图2是根据本申请的存储数据的方法的一个实施例的流程图;
图3是根据本申请的存储数据的方法的一个可选实现方式中的字典树形式索引示意图;
图4是根据本申请的存储数据的方法的一个应用场景的示意图;
图5是根据图4示出的应用场景中删除键值对数据的过程示意图;
图6是根据本申请的存储数据装置的一个实施例的结构示意图;
图7是适于用来实现本申请实施例的终端设备或服务器的计算机系统的结构示意图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
图1示出了可以应用本申请的存储数据的方法或存储数据装置的实施例的示例性系统架构100。
如图1所示,系统架构100可以包括终端设备101、102、103,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送消息等。终端设备101、102、103上可以安装有各种通讯客户端应用,例如网页浏览器应用、存储数据类应用、购物类应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等。
终端设备101、102、103可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、电子书阅读器、MP3播放器(Moving Picture ExpertsGroup Audio Layer III,动态影像专家压缩标准音频层面3)、MP4(Moving PictureExperts Group Audio Layer IV,动态影像专家压缩标准音频层面4)播放器、膝上型便携计算机和台式计算机等等。
服务器105可以是提供各种服务的服务器,例如对终端设备101、102、103上显示的网页提供支持的网页服务器等。服务器105可以对接收到的数据(如搜索请求等)进行分析等处理。例如,服务器105可以接收从终端设备101、102、103等发送的搜索请求,并对接收到的搜索请求中包含的搜索关键词数据进行分析和存储。
需要说明的是,本申请所提供的存储数据的方法的实施例一般由服务器105执行,相应地,存储数据装置的实施例一般设置于服务器105中。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
继续参考图2,示出了根据本申请的存储数据的方法的一个实施例的流程200。该存储数据的方法,包括以下步骤:
步骤201,获取待存储的键值对数据。
通常,在分布式存储系统中,通过key-value(键值对)分布式存储可以将key(键)作为索引实现大数据量、高并发的快速查询。在本实施例中,存储数据的方法运行于其上的电子设备(例如图1所示的服务器105)可以从本地或远程地获取待存储的key-value数据。其中,待存储的key-value数据可以是符合上述电子设备存储的数据的条件的key-value数据。
作为示例,上述电子设备要存储的key-value数据可以包括:key是用户输入的搜索关键词,value(值)是与该搜索关键词相关的其他搜索关键词,例如该搜索关键词的同义词、近义词、相关词等。举例而言,如果该搜索关键词为“北京天气”,与该搜索关键词相关的其他搜索关键词例如可以包括“北京天气”、“首都天气”、“北京的天气”等等,则可以生成该条key-value数据:key=“北京天气”,value=“北京天气、首都天气、北京的天气……”。当上述电子设备是为网页浏览器提供支持的后台服务器时,上述电子设备可以存储有或者通过获取终端设备的搜索关键词生成该条键值对数据,其可以从本地获取该条键值对数据;当上述电子设备是与为网页浏览器提供支持的后台服务器相连接的其他电子设备时,其可以远程地获取该条键值对数据。可以理解,实践中还可以有很多种存储数据的方法运行于其上的电子设备从本地或远程地获取待存储的key-value数据的情况,在此不再穷举。key-value数据的生成方法不是本实施例方案的发明点,其可以采用公知的各种技术,在此不再赘述。
步骤202,将上述键值对数据存储在磁盘的预写日志文件中。
在本实施例中,上述电子设备(例如图1所示的服务器105)可以进一步将步骤201中获取的待存储的key-value数据存储在磁盘的预写日志(write-ahead log,WAL)文件中。
其中,磁盘可以是用于存储数据的而磁性盘片,通过磁头在磁性盘片上的移动读写数据。磁盘上可以包括多个预写日志文件。在本实施例中,磁头可以顺着一个方向移动,按可用预写日志文件的顺序将待存储的key-value数据写入预写日志文件。上述电子设备可以通过设置文件标记(例如位标记)来表示预写日志文件是否可用。例如,已存储有数据的预写日志文件不可用。当某个预写日志文件的数据被删除时,上述电子设备可以将预设日志文件的文件标记修改为可用(如将标记为置位)。当磁盘中的最后一个可用预写日志文件被写满时,上述电子设备可以控制磁头从起始位置顺序检测可用预写日志文件以写入数据。
步骤203,根据上述键值对数据在磁盘中的存储位置以及键值对数据中的键在内存中为该键值对数据生成索引项。
在本实施例中,上述电子设备可以接着根据上述key-value数据在磁盘中的存储位置以及key-value数据中的key在内存中为该条key-value数据生成索引项,从而,上述电子设备可以通过索引项对磁盘的预写日志文件中存储的key-value数据执行预定操作,在检测到满足合并整理条件的预写日志文件时,根据索引将该满足预定条件的预写日志文件中保留的key-value数据追加写入磁盘中。实践中,电子设备可以遍历满足预定条件的预写日志文件中的key-value数据,并根据其中的各个key,从索引中查找,若查找到该条key-value数据的索引项,且没有删除标记,则可以确定该条key-value数据需保留。否则,当在索引中查找不到相应索引项,或者查找到相应索引项被做了删除标记,则不保留该条key-value数据。
其中,合并整理条件例如可以包括但不限于以下至少一项:预写日志文件的占用空间超过预设文件空间阈值(如15千兆字节);预写日志文件的占用空间与总空间的比值超过预设文件空间比例阈值(如99%);预写日志文件中被删除的键值对数据超过预设阈值(如50条);预写日志文件中被删除键值对数据的占用空间与总空间的比值超过预设删除比例阈值(如90%);磁盘的已占用空间超过预设磁盘空间阈值(如15亿兆字节);磁盘的已占用空间与磁盘总容量的比值超过预设磁盘空间比例阈值(如90%);等等。
这里,存储位置可以包括但不限于以下至少一项:预写日志文件的文件名、所述键值对数据在预写日志文件中与文件起始位置的偏移量。其中偏移量可以是字节数(如1byte),也可以是偏移的位数(如8bit),本申请对此不做限定。
这里的预定操作可以是针对数据的基本操作,例如包括但不限于读操作、写操作、删除操作等。预定操作还可以是由基本操作组成的组合操作,例如合并整理操作,其可以包括读操作、写操作、删除操作中的一项或多项。
以写操作为例,上述电子设备可以按可用预写日志文件的顺序将待存储的key-value数据写入预写日志文件,然后根据键值对数据在磁盘中的存储位置以及key-value数据中的key在内存中为键值对数据生成索引项。
以读操作为例,上述电子设备可以先根据待读取的key-value数据中的key,在索引中查找到相应索引项,从索引项中获取该key对应的key-value数据在磁盘中的存储位置,例如预写日志文件的文件名、键值对数据在预写日志文件中与文件起始位置的偏移量,上述电子设备可以根据该存储位置找到key-value数据所在的预写日志文件,并根据键值对数据在预写日志文件中与文件起始位置的偏移量找到key-value数据读出。
以删除操作为例,上述电子设备可以根据待删除的键值对数据中的key,在索引中查找到相应索引项,并删除该索引项。电子设备可以根据该索引项查找磁盘中删除对应的key-value数据,或者对磁盘中对应的key-value数据做出已删除标记,或者对磁盘中对应的key-value数据暂且不做任何处理。当检测到满足合并整理条件的预写日志文件时,根据索引将该满足预定条件的预写日志文件中保留的key-value数据追加写入磁盘中。此时,由于删除操作对待删除的key-value数据进行了删除索引项的操作,所以,在这里根据索引将该满足预定条件的预写日志文件中保留的key-value数据追加写入磁盘时,不再写入需删除的key-value数据,而只写入了需保留的key-value数据。由此,对数据的合并整理过程中只有需保留的key-value数据占了两份空间,可以大大减少读写数据量,从而减少写入放大。
在本实施例的一些可选实现方式中,上述电子设备对预写日志文件进行合并整理操作后,可以删除掉合并整理前的预写日志文件,以腾出磁盘空间。另外,由于该预写日志文件中的键值对数据的存储位置发生了变化,上述电子设备可以根据变化后的存储位置更新内存中的索引,以便后续根据索引对相应键值对数据进行操作。
在本实施例的一些可选实现方式中,内存中的索引可以包括根据磁盘中的预写日志文件中的key-value数据的key生成的字典树。其中,在字典树中,从根节点出发的每条路径可以对应一个键值对数据的键,每条路径的最后一个节点可以存储该路径所对应的键值对数据的存储位置。作为示例,假如所存储的key-value数据中的key是用户搜索时的搜索关键词,如图3所示,生成的字典树中:从根节点300到节点311形成的路径,节点300和节点310对应一个key“西门”,节点311中存放key“西门”对应的键值对数据的存储地址“地址1”;从根节点300到节点313形成的路径,节点300、节点310、节点312对应一个key“西门庆”,节点313中存放key“西门庆”对应的key-value数据的存储地址“地址2”;从根节点300到节点321形成的路径,节点300、节点320对应一个key“西瓜”,节点321中存放key“西瓜”对应的键值对数据的存储地址“地址3”;等等。
继续参见图4,图4是根据本实施例的存储数据的方法的应用场景的一个示意图。在图4的应用场景中,本实施例的存储数据的方法例如应用于为网页浏览器提供支持的后台服务器410。用户可以通过运行有网页浏览器的终端设备420输入搜索关键词421以获取网页。后台服务器410可以根据用户输入的搜索关键词421及搜索关键词421的同义词、近义词、相关词提供搜索结果422、423、424等通过终端设备420展现给用户。后台服务器410可以根据所有用户的搜索关键词,通过诸如聚类、语义分析之类的方法,对搜索关键词进行分类和扩充,例如,可以将同义词、近义词、相关词作为value,其中的一个词作为key进行存储,以供用户通过搜索关键词421搜索网页时,检索出与该搜索关键词421及其同义词、近义词、相关词相应的结果提供给用户。
该应用场景中,当接收到用户输入的搜索关键词时,后台服务器410可以先将用户输入的搜索关键词与索引中的key进行匹配。其中,该匹配可以是同义词、近义词、相关词的匹配。当在索引中能匹配到相应key时,后台服务器410可以确定该条检索数据不存储,当在索引中不能匹配到相应key时,后台服务器可以将该搜索关键词作为key,该搜索关键词的同义词、近义词、相关词作为value生成key-value数据,并将其作为待存储key-value数据。接着,后台服务器410可以将该待存储key-value数据存储在磁盘的预写日志文件中。在该应用场景中,磁头可以按可用预写日志文件的顺序写入数据,每次读取数据后磁头仍跳回数据写到的位置,则后台服务器可以将该待存储key-value数据存储在磁盘中磁头当前指向的预写日志文件中。然后,根据key-value数据在磁盘中的存储位置以及key-value数据中的key在内存中为key-value数据生成索引项,以通过索引项对key-value数据执行预定操作。
可以理解,一定时期往往会产生该时期的网络热词,假设后台服务器410按照时间段(如1天)存储预定数量(如1000)的热词,则对于一个当前时间段不是热词的历史热词,则需要被删除。此时,请参考图5,假设某个历史热词对应的键值对数据x需要被删除,在步骤501中,后台服务器可以只删除键值对数据x在索引中的索引项。当键值对数据x所在的预设日志文件的合并整理条件(例如预写日志文件被删除的数据达到90%)满足时,后台服务器410可以遍历键值对数据x所在的预设日志文件,如步骤502所示,对于键值对数据x,后台服务器410可以匹配索引中的key,此时没有匹配到相应的key,则键值对数据x的索引项为空。如步骤503所示,假设key-value数据x所在的预设日志文件中,另一个键值对数据y的索引项存在,则后台服务器410可以将该键值对数据y以追加写的方式存储到磁盘,并可以更新索引中该键值对数据y的索引项。然后,如步骤504所示,后台服务器410在遍历完key-value数据x所在的预设日志文件后,可以将整个文件删除。
本实施例的存储数据的方法,由于key-value数据存储在预写日志文件中,可以通过对内存中的索引项对预写日志文件中所存储的键值对数据执行预定操作,在合并整理操作时,以追加写方式只写保留的key-value数据,从而可以减小写入放大问题,提高存储数据的有效性。
进一步参考图6,作为对存储数据的方法的实现,本申请提供了一种存储数据的装置的一个实施例,该装置实施例与图2所示的方法实施例相对应。
如图6所示,本实施例的存储数据的装置600包括:获取模块601、存储模块602、索引项生成模块603和数据操作模块604。其中,获取模块601可以配置用于获取待存储的key-value数据;存储模块602可以配置用于将上述key-value数据存储在磁盘的预写日志文件中;索引项生成模块603可以根据上述key-value数据在磁盘中的存储位置以及key-value数据中的key在内存中为该key-value数据生成索引项,以供数据操作模块604通过该索引项对该key-value数据执行预定操作,在检测到满足合并整理条件的预写日志文件时,根据索引将该满足预定条件的预写日志文件中保留的key-value数据追加写入磁盘中,其中,存储位置可以包括但不限于以下至少一项:预写日志文件的文件名、key-value数据在预写日志文件中与文件起始位置的偏移量。
在本实施例的一些可选实现方式中,当预定操作包括读操作时,数据操作模块604可以配置用于:在索引中查找待读取key-value数据所对应的索引项,以获取待读取key-value数据的存储位置;根据存储位置从预写日志文件中读取待读取key-value数据。
在本实施例的一些可选实现方式中,当预定操作包括删除操作时,数据操作模块604可以配置用于:根据key-value数据中的key在索引中删除待删除key-value数据的索引项。
在本实施例的一些可选实现方式中,上述装置600还可以包括:删除模块(未示出),配置用于删除被追加写入磁盘的预写日志文件;索引生成模块603还可以配置用于更新内存中的索引。
在本实施例的一些可选实现方式中,合并整理条件可以包括但不限于以下至少一项:预写日志文件的占用空间超过预设文件空间阈值;预写日志文件的占用空间与总空间的比值超过预设文件空间比例阈值;预写日志文件中被删除的key-value数据超过预设阈值;预写日志文件中被删除key-value数据的占用空间与总空间的比值超过预设删除比例阈值;磁盘的已占用空间超过预设磁盘空间阈值;磁盘的已占用空间与磁盘总容量的比值超过预设磁盘空间比例阈值;等等。
在本实施例的一些可选实现方式中,内存中的索引包括根据磁盘中的预写日志文件中的key-value数据的key生成的字典树,其中,在该字典树中,从根节点出发的每条路径对应一个key-value数据的键,每条路径的最后一个节点存储该路径所对应的key-value数据的存储位置。
值得说明的是,存储数据的装置600中记载的诸模块与参考图2描述的方法中的各个步骤相对应。由此,上文针对方法描述的操作和特征同样适用于存储数据的装置600及其中包含的模块或单元,在此不再赘述。
本领域技术人员可以理解,上述存储数据的装置600还包括一些其他公知结构,例如处理器、存储器等,为了不必要地模糊本公开的实施例,这些公知的结构在图6中未示出。
下面参考图7,其示出了适于用来实现本申请实施例的终端设备/服务器的计算机系统700的结构示意图。图7示出的终端设备/服务器仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图7所示,计算机系统700包括中央处理单元(CPU)701,其可以根据存储在只读存储器(ROM)702中的程序或者从存储部分708加载到随机访问存储器(RAM)703中的程序而执行各种适当的动作和处理。在RAM 703中,还存储有系统700操作所需的各种程序和数据。CPU701、ROM 702以及RAM703通过总线704彼此相连。输入/输出(I/O)接口705也连接至总线704。
以下部件连接至I/O接口705:包括硬盘等的存储部分706;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分707。通信部分707经由诸如因特网的网络执行通信处理。驱动器708也根据需要连接至I/O接口705。可拆卸介质709,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器708上,以便于从其上读出的计算机程序根据需要被安装入存储部分706。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分707从网络上被下载和安装,和/或从可拆卸介质709被安装。在该计算机程序被中央处理单元(CPU)701执行时,执行本申请的方法中限定的上述功能。需要说明的是,本申请所述的非易失性计算机可读介质可以是非易失性计算机可读信号介质或者非易失性计算机可读存储介质或者是上述两者的任意组合。非易失性计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。非易失性计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,非易失性计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括获取模块、存储模块、索引项生成模块和数据操作模块。其中,这些模块的名称在某种情况下并不构成对该单元本身的限定,例如,获取模块还可以被描述为“配置用于获取待存储的键值对数据的模块”。
作为另一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的装置中所包含的;也可以是单独存在,而未装配入该装置中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该装置执行时,使得该装置:获取待存储的键值对数据;将上述键值对数据存储在磁盘的预写日志文件中;根据上述键值对数据在磁盘中的存储位置以及该键值对数据中的键在内存中为该键值对数据生成索引项,以通过该索引项对该键值对数据执行预定操作,在检测到满足合并整理条件的预写日志文件时,根据索引将该满足预定条件的预写日志文件中保留的键值对数据追加写入磁盘中,其中,存储位置包括以下至少一项:预写日志文件的文件名、键值对数据在预写日志文件中与文件起始位置的偏移量。
以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
Claims (14)
1.一种存储数据的方法,其特征在于,所述方法包括:
获取待存储的键值对数据;
将所述键值对数据存储在磁盘的预写日志文件中;
根据所述键值对数据在磁盘中的存储位置以及所述键值对数据中的键在内存中为所述键值对数据生成索引项,以通过所述索引项对所述键值对数据执行预定操作,在检测到满足合并整理条件的预写日志文件时,根据索引将该满足预定条件的预写日志文件中保留的键值对数据追加写入磁盘中,其中,所述存储位置包括以下至少一项:预写日志文件的文件名、所述键值对数据在预写日志文件中与文件起始位置的偏移量。
2.根据权利要求1所述的方法,其特征在于,当所述预定操作包括读操作时,所述通过所述索引项对预写日志文件中所存储的键值对数据执行预定操作包括:
在索引中查找待读取键值对数据所对应的索引项,以获取待读取键值对数据的存储位置;
根据所述存储位置从预写日志文件中读取待读取键值对数据。
3.根据权利要求1所述的方法,其特征在于,当所述预定操作包括删除操作时,所述通过所述索引项对预写日志文件中所存储的键值对数据执行预定操作包括:
根据键值对数据中的键在索引中删除待删除键值对数据的索引项。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
删除被追加写入磁盘的预写日志文件;
更新内存中的索引。
5.根据权利要求1所述的方法,其特征在于,所述合并整理条件包括以下至少一项:
预写日志文件的占用空间超过预设文件空间阈值;
预写日志文件的占用空间与总空间的比值超过预设文件空间比例阈值;
预写日志文件中被删除的键值对数据超过预设阈值;
预写日志文件中被删除键值对数据的占用空间与总空间的比值超过预设删除比例阈值;
磁盘的已占用空间超过预设磁盘空间阈值;
磁盘的已占用空间与磁盘总容量的比值超过预设磁盘空间比例阈值。
6.根据权利要求1-5中任一所述的方法,其特征在于,内存中的索引包括根据磁盘中的预写日志文件中的键值对数据的键生成的字典树,其中,在所述字典树中,从根节点出发的每条路径对应一个键值对数据的键,每条路径的最后一个节点存储该路径所对应的键值对数据的存储位置。
7.一种存储数据的装置,其特征在于,所述装置包括:
获取模块,配置用于获取待存储的键值对数据;
存储模块,配置用于将所述键值对数据存储在磁盘的预写日志文件中;
索引项生成模块,配置用于根据所述键值对数据在磁盘中的存储位置以及所述键值对数据中的键在内存中为所述键值对数据生成索引项,以供数据操作模块通过所述索引项对所述键值对数据执行预定操作,在检测到满足合并整理条件的预写日志文件时,根据索引将该满足预定条件的预写日志文件中保留的键值对数据追加写入磁盘中,其中,所述存储位置包括以下至少一项:预写日志文件的文件名、所述键值对数据在预写日志文件中与文件起始位置的偏移量。
8.根据权利要求7所述的装置,其特征在于,当所述预定操作包括读操作时,所述数据操作模块配置用于:
在索引中查找待读取键值对数据所对应的索引项,以获取待读取键值对数据的存储位置;
根据所述存储位置从预写日志文件中读取待读取键值对数据。
9.根据权利要求7所述的装置,其特征在于,当所述预定操作包括删除操作时,所述数据操作模块配置用于:
根据键值对数据中的键在索引中删除待删除键值对数据的索引项。
10.根据权利要求7所述的装置,其特征在于,所述装置还包括:
删除模块,配置用于删除被追加写入磁盘的预写日志文件;
所述索引生成模块还配置用于更新内存中的索引。
11.根据权利要求7所述的装置,其特征在于,所述合并整理条件包括以下至少一项:
预写日志文件的占用空间超过预设文件空间阈值;
预写日志文件的占用空间与总空间的比值超过预设文件空间比例阈值;
预写日志文件中被删除的键值对数据超过预设阈值;
预写日志文件中被删除键值对数据的占用空间与总空间的比值超过预设删除比例阈值;
磁盘的已占用空间超过预设磁盘空间阈值;
磁盘的已占用空间与磁盘总容量的比值超过预设磁盘空间比例阈值。
12.根据权利要求7-11中任一所述的装置,其特征在于,内存中的索引包括根据磁盘中的预写日志文件中的键值对数据的键生成的字典树,其中,在所述字典树中,从根节点出发的每条路径对应一个键值对数据的键,每条路径的最后一个节点存储该路径所对应的键值对数据的存储位置。
13.一种存储设备,包括:
一个或多个处理器;
程序存储装置,用于存储一个或多个程序;
磁盘,用于存储一个或多个预写日志文件;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-6中任一所述的方法。
14.一种非易失性计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-6中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710187260.8A CN106886375B (zh) | 2017-03-27 | 2017-03-27 | 存储数据的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710187260.8A CN106886375B (zh) | 2017-03-27 | 2017-03-27 | 存储数据的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106886375A CN106886375A (zh) | 2017-06-23 |
CN106886375B true CN106886375B (zh) | 2019-11-05 |
Family
ID=59181426
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710187260.8A Active CN106886375B (zh) | 2017-03-27 | 2017-03-27 | 存储数据的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106886375B (zh) |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107463512B (zh) * | 2017-06-26 | 2020-11-13 | 上海高顿教育培训有限公司 | 分布式高速存储系统的数据更新方法 |
CN107480233A (zh) * | 2017-08-07 | 2017-12-15 | 郑州云海信息技术有限公司 | 一种日志数据定位的方法及系统 |
CN108153488B (zh) * | 2017-12-13 | 2021-05-04 | 北京小米移动软件有限公司 | 数据自增方法及装置 |
CN108228829B (zh) * | 2018-01-03 | 2022-01-11 | 北京百度网讯科技有限公司 | 用于生成信息的方法和装置 |
US10579606B2 (en) * | 2018-05-03 | 2020-03-03 | Samsung Electronics Co., Ltd | Apparatus and method of data analytics in key-value solid state device (KVSSD) including data and analytics containers |
CN109164977B (zh) * | 2018-07-23 | 2022-01-11 | 中国建设银行股份有限公司 | 一种数据存储系统和方法、存储介质 |
CN109254870B (zh) * | 2018-08-01 | 2021-05-18 | 华为技术有限公司 | 数据备份的方法和装置 |
CN110837338A (zh) * | 2018-08-15 | 2020-02-25 | 阿里巴巴集团控股有限公司 | 一种存储索引处理方法及装置 |
CN109558457B (zh) * | 2018-12-11 | 2022-04-22 | 浪潮(北京)电子信息产业有限公司 | 一种数据写入方法、装置、设备及存储介质 |
CN111444114B (zh) * | 2019-01-16 | 2023-06-13 | 阿里巴巴集团控股有限公司 | 一种非易失性内存中数据的处理方法、装置及系统 |
CN110377531B (zh) * | 2019-07-19 | 2021-08-10 | 清华大学 | 基于日志结构的持久性内存存储引擎装置及控制方法 |
CN110764705B (zh) * | 2019-10-22 | 2023-08-04 | 北京锐安科技有限公司 | 一种数据的读写方法、装置、设备和存储介质 |
CN111008183B (zh) * | 2019-11-19 | 2023-09-15 | 武汉极意网络科技有限公司 | 一种用于业务风控日志数据的存储方法及系统 |
CN112925473A (zh) * | 2019-12-06 | 2021-06-08 | 阿里巴巴集团控股有限公司 | 数据存储方法、装置、设备及存储介质 |
CN111045898A (zh) * | 2019-12-22 | 2020-04-21 | 北京浪潮数据技术有限公司 | 多级子系统的日志收集方法、装置、设备及可读存储介质 |
CN113032349A (zh) * | 2019-12-25 | 2021-06-25 | 阿里巴巴集团控股有限公司 | 数据存储方法、装置、电子设备及计算机可读介质 |
CN112256650A (zh) * | 2020-10-20 | 2021-01-22 | 广州市百果园网络科技有限公司 | 存储空间管理方法、装置、设备及存储介质 |
CN112416940A (zh) * | 2020-11-27 | 2021-02-26 | 深信服科技股份有限公司 | 键值对存储方法、装置、终端设备以及存储介质 |
CN112540731B (zh) * | 2020-12-22 | 2023-08-11 | 北京百度网讯科技有限公司 | 数据的追加写方法、装置、设备、介质和程序产品 |
CN112732191B (zh) * | 2021-01-08 | 2023-01-10 | 苏州浪潮智能科技有限公司 | 基于日志结构合并树合并数据的方法、系统、设备及介质 |
CN112783896B (zh) * | 2021-01-12 | 2023-05-23 | 湖北宸威玺链信息技术有限公司 | 一种用于加载文件减少内存使用率的方法 |
CN113094372A (zh) * | 2021-04-16 | 2021-07-09 | 三星(中国)半导体有限公司 | 数据存取方法、数据存取控制装置及数据存取系统 |
CN115202588B (zh) * | 2022-09-14 | 2022-12-27 | 本原数据(北京)信息技术有限公司 | 数据存储方法及装置、数据恢复方法及装置 |
CN116561073B (zh) * | 2023-04-14 | 2023-12-19 | 云和恩墨(北京)信息技术有限公司 | 基于数据库的文件合并方法及系统、设备、存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104133867A (zh) * | 2014-07-18 | 2014-11-05 | 中国科学院计算技术研究所 | 分布式顺序表片内二级索引方法及系统 |
CN104809178A (zh) * | 2015-04-15 | 2015-07-29 | 北京科电高技术公司 | 一种键值数据库内存日志的写入方法 |
CN105468298A (zh) * | 2015-11-19 | 2016-04-06 | 中国科学院信息工程研究所 | 一种基于日志结构合并树的键值存储方法 |
-
2017
- 2017-03-27 CN CN201710187260.8A patent/CN106886375B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104133867A (zh) * | 2014-07-18 | 2014-11-05 | 中国科学院计算技术研究所 | 分布式顺序表片内二级索引方法及系统 |
CN104809178A (zh) * | 2015-04-15 | 2015-07-29 | 北京科电高技术公司 | 一种键值数据库内存日志的写入方法 |
CN105468298A (zh) * | 2015-11-19 | 2016-04-06 | 中国科学院信息工程研究所 | 一种基于日志结构合并树的键值存储方法 |
Also Published As
Publication number | Publication date |
---|---|
CN106886375A (zh) | 2017-06-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106886375B (zh) | 存储数据的方法和装置 | |
US11740891B2 (en) | Providing access to a hybrid application offline | |
US20210185122A1 (en) | Synchronized content library | |
CN109254733B (zh) | 用于存储数据的方法、装置和系统 | |
US11221918B2 (en) | Undo changes on a client device | |
US9565232B2 (en) | Importing content items | |
US9747321B2 (en) | Providing a content preview | |
US20140195514A1 (en) | Unified interface for querying data in legacy databases and current databases | |
US11816128B2 (en) | Managing content across discrete systems | |
US20140229457A1 (en) | Automatic content item upload | |
CN113688139B (zh) | 对象存储方法、网关、设备及介质 | |
CN109697019A (zh) | 基于fat文件系统的数据写入的方法和系统 | |
CN110119386A (zh) | 数据处理方法、数据处理装置、介质和计算设备 | |
CN113361236A (zh) | 一种编辑文档的方法和装置 | |
CN115878625A (zh) | 数据处理方法和装置及电子设备 | |
CN113760822A (zh) | 基于hdfs的分布式智慧校园文件管理系统优化方法及装置 | |
CN113722007A (zh) | Vpn分支设备的配置方法、装置及系统 | |
US10185759B2 (en) | Distinguishing event type | |
CN113792031B (zh) | 键值对数据的处理方法、系统、设备和介质 | |
CN113760860B (zh) | 一种数据读取方法和装置 | |
CN115858496A (zh) | 一种数据迁移的方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |