CN105631035A - 数据存储方法和装置 - Google Patents

数据存储方法和装置 Download PDF

Info

Publication number
CN105631035A
CN105631035A CN201610006693.4A CN201610006693A CN105631035A CN 105631035 A CN105631035 A CN 105631035A CN 201610006693 A CN201610006693 A CN 201610006693A CN 105631035 A CN105631035 A CN 105631035A
Authority
CN
China
Prior art keywords
data page
compression
unpacked
data
page
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.)
Granted
Application number
CN201610006693.4A
Other languages
English (en)
Other versions
CN105631035B (zh
Inventor
孔智
尹博学
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Priority to CN201610006693.4A priority Critical patent/CN105631035B/zh
Publication of CN105631035A publication Critical patent/CN105631035A/zh
Priority to US15/751,072 priority patent/US10649905B2/en
Priority to PCT/CN2016/086343 priority patent/WO2017117919A1/zh
Application granted granted Critical
Publication of CN105631035B publication Critical patent/CN105631035B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • G06F12/0882Page mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24552Database cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/401Compressed data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本申请公开了数据存储方法和装置。该方法的一具体实施方式包括:响应于将待存储数据写入数据库的缓存存储区域中的压缩数据页,判断压缩数据页中剩余的存储空间是否大于存储空间阈值;若否,确定非压缩数据页中用于生成压缩数据页的非压缩数据页;对所确定的非压缩数据页进行压缩,生成压缩数据页。实现了预先生成压缩数据页,从而使得每一次将数据写入压缩数据页时,均可确保压缩数据页中具有足够的存储空间存储写入的数据,从而减轻将数据写入压缩数据页时的系统开销,进而提升系统的写入效率。

Description

数据存储方法和装置
技术领域
本申请涉及计算机领域,具体涉及数据库领域,尤其涉及数据存储方法和装置。
背景技术
在对数据库的访问中,通常将访问频次较高的热数据存储在数据库的缓存存储区域中。同时,可以将热数据进行压缩后存储在缓存存储区域的压缩数据页中,使得缓存存储区域中存储更多的热数据,进一步提升对热数据的命中率。目前,通常采用的方式为:直接向压缩数据页中写入数据,在压缩数据页上剩余的存储空间不足时,才对非压缩数据页进行压缩生成新的压缩数据页。
然而,当采用上述方式将数据写入压缩数据页时,一方面,因对非压缩数据页进行压缩生成新的压缩数据页,造成将热数据写入压缩数据页的线程被挂起,增加系统开销。另一方面,当生成新的压缩数据页失败时,会引起页面分裂,因页面分裂需要对描述数据页之间的关系的数据结构进行加锁操作,造成并发等待的问题,进一步增加系统开销。
发明内容
本申请提供了数据存储方法和装置,用于解决上述背景技术部分存在的技术问题。
第一方面,本申请提供了数据存储方法,该方法包括:响应于将待存储数据写入数据库的缓存存储区域中的压缩数据页,判断压缩数据页中剩余的存储空间是否大于存储空间阈值,其中,缓存存储区域包括:用于存储待存储数据的非压缩数据页以及用于存储待存储数据对应的压缩数据的压缩数据页;若否,确定非压缩数据页中用于生成压缩数据页的非压缩数据页;对所确定的非压缩数据页进行压缩,生成压缩数据页,以使得在下一次将待存储数据写入压缩数据页时,利用生成的压缩数据页存储待存储数据。
第二方面,本申请提供了数据存储装置,该装置包括:响应单元,配置用于响应于将待存储数据写入数据库的缓存存储区域中的压缩数据页,判断压缩数据页中剩余的存储空间是否大于存储空间阈值,其中,缓存存储区域包括:用于存储待存储数据的非压缩数据页以及用于存储待存储数据对应的压缩数据的压缩数据页;确定单元,配置用于当压缩数据页中剩余的存储空间小于存储空间阈值,确定非压缩数据页中用于生成压缩数据页的非压缩数据页;压缩单元,配置用于对所确定的非压缩数据页进行压缩,生成压缩数据页,以使得在下一次将待存储数据写入压缩数据页时,利用生成的压缩数据页存储待存储数据。
本申请提供的数据存储方法和装置,通过响应于将待存储数据写入数据库的缓存存储区域中的压缩数据页,判断压缩数据页中剩余的存储空间是否大于存储空间阈值;若否,确定非压缩数据页中用于生成压缩数据页的非压缩数据页;对所确定的非压缩数据页进行压缩,生成压缩数据页,以使得在下一次将待存储数据写入压缩数据页时,利用生成的压缩数据页存储待存储数据。实现了预先生成压缩数据页,从而使得每一次将数据写入压缩数据页时,均可确保压缩数据页中具有足够的存储空间存储写入的数据,从而减轻将数据写入压缩数据页时的系统开销,进而提升系统的写入效率。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1是本申请可以应用于其中的示例性系统架构图;
图2示出了根据本申请的数据存储方法的一个实施例的流程图;
图3示出了利用空闲压缩线程进行压缩的原理图;
图4示出了对非压缩数据页进行压缩的流程图;
图5示出了根据本申请的数据存储装置的一个实施例的结构示意图;
图6是适于用来实现本申请实施例的终端设备或服务器的计算机系统的结构示意图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
图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播放器(MovingPictureExpertsGroupAudioLayerIII,动态影像专家压缩标准音频层面3)、MP4(MovingPictureExpertsGroupAudioLayerIV,动态影像专家压缩标准音频层面4)播放器、膝上型便携计算机和台式计算机等等。
服务器105可以是提供各种服务的服务器,例如对终端设备101、102、103上的应用提供数据访问支持的服务器。服务器可以对接收到的数据访问请求进行处理,并将处理结果(例如数据库中的数据)反馈给终端设备。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
请参考图2,其示出了根据本申请的数据存储方法的一个实施例的流程200。需要说明的是,本申请实施例所提供的数据存储方法一般由图1中的服务器105执行,相应地,数据存储装置一般设置于服务器105中。该方法包括以下步骤:
步骤201,响应于将待存储数据写入数据库的缓存存储区域中的压缩数据页,判断压缩数据页中剩余的存储空间是否大于存储空间阈值。
在本实施例中,缓存存储区域包括:用于存储待存储数据的非压缩数据页以及用于存储待存储数据对应的压缩数据的压缩数据页。该缓存存储区域可以为在对数据库的访问过程中,用于存储用户频繁访问的数据(也可称之为热数据)的存储区域,也可将该缓存存储区域称之为bufferpool。在本实施例中,由于在每一次存储数据,即将数据写入数据表中时,是以记录为单位进行写入的。因此,存储空间阈值的大小可以为当前写入到数据表中占用的存储空间最大的记录所占用的存储空间。
在本实施例中,压缩数据页中的数据可以包括:压缩数据以及以追加写方式写入的非压缩的mlog。下面首先说明在bufferpool中设置压缩数据页的原理:为了提升对在bufferpool中的热数据的命中概率,即通过一次读取操作读取出bufferpool中的热数据的概率,可以将bufferpool划分为用于存储对待存储数据进行压缩之后生成的压缩数据的压缩数据页以及非压缩数据页。从而,可以将热数据进行压缩后存储在压缩数据页中,使得bufferpool中可以缓存更多的热数据,提升热数据的命中概率。在对经压缩后的热数据进行读取时,可以进行解压缩操作,得到解压缩后的热数据。在本实施例中,可以将最近访问的数据存储在非压缩数据页中,同时,可以将除最近访问的数据以外的数据存储于压缩数据页中,从而在bufferpool中存储更多的热数据,提升对热数据的命中概率。
在本实施例中,可以预先分别创建压缩数据页链表和非压缩数据页链表,利用压缩数据页链表和非压缩数据页链表分别管理压缩数据页与非压缩数据页。压缩数据页链表和非压缩数据页链表均可以采用LRU(LeastRecentlyUsed)链表实现。以压缩数据页链表为例,链表中的每一个节点对应一个压缩数据页,节点中可以记录指示该压缩数据页之前的压缩数据页的存储地址的指针、该压缩数据页之后的压缩数据页的存储地址的指针、压缩数据页的实际物理地址。
在本实施例的一些可选的实现方式中,还包括:接收输入的存储空间设置指令;设置非压缩数据页与压缩数据页的存储空间的大小。在本实施例中,可以对压缩数据页与非压缩数据页占据的存储空间大小进行设置。例如,将非压缩数据页的大小设置为16KB,也可将该压缩数据页称之为普通非压缩数据页。假设普通非压缩数据页的大小为16KB,bufferpool中存储20个非压缩数据页,在压缩的情况下,当压缩数据页的大小为8KB时,则bufferpool中可以存储38个数据页,其中,包含1个非压缩数据页和37个压缩数据页,该非压缩数据页为非压缩数据页链表中的非压缩数据页,其占用的存储空间可以相当于1.5个普通非压缩数据页。因此,在缓存存储区域的大小相同的情况下,通过压缩增加了数据页的数量,提升对热数据的命中概率。
步骤202,若否,确定非压缩数据页中用于生成压缩数据页的非压缩数据页。
在本实施例中,当判断出压缩数据页中剩余的存储空间小于存储空间阈值时,可以进一步确定出非压缩数据页中用于生成压缩数据页的非压缩数据页。
在本实施例的一些可选的实现方式中,当压缩数据页中剩余的存储空间小于存储空间阈值时,从预先创建的压缩线程中选取出用于对非压缩数据页进行压缩、生成压缩数据页的压缩线程。
在本实施例中,可以预先创建多个压缩线程,当压缩数据页中剩余的存储空间小于存储空间阈值时,从预先创建的压缩线程中选取出空闲的压缩线程。然后,利用空闲的压缩线程对非压缩数据页进行压缩,生成压缩数据页。
请参考图3,其示出了利用空闲压缩线程进行压缩的原理图。
在图3中,示出了用于将数据写入压缩数据页的线程用户线程和用于对非压缩数据页进行压缩的异步压缩线程。用户线程在将数据写入压缩数据页之后,即insert操作完成之后,可以判断压缩数据页的剩余存储空间即mlog空间是否大于存储空间阈值即max_rec_size。max_rec_size可以为当前写入到数据表中占用的存储空间最大的记录所占用的存储空间。当判断出压缩数据页的剩余存储空间小于存储空间阈值,例如,小于当前写入到数据表中占用的存储空间最大的记录所占用的存储空间时,则可以查找是否存在空闲的压缩线程。当确定存在空闲的压缩线程时,可以发出信号唤醒空闲的压缩线程。同时,可以向压缩线程提交spaceid参数与pageid参数。spaceid参数可以为一个数据库文件的标识,pageid参数可以用于表示在数据库文件中以数据页为单位的偏移。从而,使得空闲的压缩线程可以基于spaceid参数与pageid参数,查找用于生成压缩数据页的非压缩数据页。
在本实施例的一些可选的实现方式中,确定非压缩数据页中用于生成压缩数据页的非压缩数据页包括:利用压缩线程接收压缩请求,压缩请求包括数据页标识;当数据页标识存在于非压缩数据页链表中且数据页标识对应的非压缩数据页未被压缩过时,将非压缩数据页确定为用于生成压缩数据页的非压缩数据页,其中,非压缩数据页链表包括多个节点,每一个节点对应一个非压缩数据页的数据页标识。
请参考图4,其示出了对非压缩数据页进行压缩的流程图。
步骤401:利用空闲的压缩线程接收用户线程提交的spaceid参数与pageid参数。spaceid参数可以为一个数据库文件的标识,pageid参数可以用于表示在数据库文件中以数据页为单位的偏移。可以基于spaceid参数和pageid参数,生成bufferpool中的哈希表bufferpoolhash的键值即key,在bufferpoolhash中,与该键值对应的value可以为指示非压缩数据页的存储位置的指针。从而,可以进一步查找出bufferpoolhash中是否存在key对应的非压缩数据页。
步骤402:判断是否未查找到或是哨兵页。
步骤403:当查找到上述非压缩数据页以及该非压缩数据页不是哨兵页时,判断该非压缩数据页是否在bufferpool中的非压缩数据页链表即unzip_lru链表中,并且未被压缩过。
步骤404:当确定非压缩数据页在bufferpool中的非压缩数据页链表中并且未被压缩过时,可以从该非压缩数据页的页头中获取Indexid参数和height参数,获取Index的定义和height参数,可以利用Indexid参数获取Index的定义,利用height参数判断是否为叶子节点。
步骤405:判断Index是否存在,即Index的定义是否在cache中。
步骤406:当Index存在时,进行加锁操作,并且由于在数据库中,所有数据页之间的关系可以采用btree数据结构进行表示,因此,在处理btree的中间节点时需要对整个btree进行加锁操作。
步骤407:再次判断是否需要压缩,即判断从查找到该非压缩数据页至当前时间的时间段内,是否被别的压缩线程处理过。
步骤408:当判断出需要进行压缩时,对该非压缩数据页进行压缩生成压缩数据页。
步骤203,对所确定的非压缩数据页进行压缩,生成压缩数据页。
在本实施例中,当确定出用于生成压缩数据页的非压缩数据页之后,可以对该非压缩数据页进行压缩,生成压缩数据页。
在本实施例的一些可选的实现方式中,在响应于将待存储数据写入数据库的缓存存储区域中的压缩数据页之后,还包括:将待存储数据写入非压缩数据页中的预设非压缩数据页。
在本实施例中,在将数据写入压缩数据页成功后,可以将数据写入到对应的非压缩数据页中,该非压缩数据页可以为非压缩数据页链表中的预先选取的一个非压缩数据页。从而在对该数据进行读取时,无需进行解压缩操作。
下面说明本实施例中的将数据写入压缩数据页的方式与现有技术的区别:在现有技术中,只有在压缩数据页中剩余的存储空间不够写入一条记录时,才对非压缩数据页进行压缩生成新的压缩数据页。一方面,因需要对非压缩数据页进行压缩生成新的压缩数据页,造成将数据写入压缩数据页的线程被挂起,从而增加系统开销。另一方面,当生成新的压缩数据页失败时,会引起页面分裂,因页面分裂需要对描述数据页之间的关系的数据结构进行加锁操作,造成并发等待的问题,进一步增加系统开销,降低整个系统的写入效率。而在本实施例中,为了防止无法直接在压缩数据页中写入数据,即压缩数据页中无法提供足够的空间存储写入的数据,可以预先对非压缩数据页进行压缩。这样,在每一次将数据写入压缩数据页时,均可以确保压缩数据页中有足够的空间来存储写入的数据。从而减轻了将数据写入压缩数据页时的系统开销,进而提升系统的写入效率。
进一步参考图5,作为对上述各图所示方法的实现,本申请提供了一种数据存储装置的一个实施例,该装置实施例与图2所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。
如图5所示,本实施例的数据存储装置500包括:响应单元501,确定单元502,压缩单元503。其中,响应单元501配置用于响应于将待存储数据写入数据库的缓存存储区域中的压缩数据页,判断压缩数据页中剩余的存储空间是否大于存储空间阈值,其中,缓存存储区域包括:用于存储待存储数据的非压缩数据页以及用于存储待存储数据对应的压缩数据的压缩数据页;确定单元502配置用于当压缩数据页中剩余的存储空间小于存储空间阈值,确定非压缩数据页中用于生成压缩数据页的非压缩数据页;压缩单元503配置用于对所确定的非压缩数据页进行压缩,生成压缩数据页,以使得在下一次将待存储数据写入压缩数据页时,利用生成的压缩数据页存储待存储数据。
在本实施例中,响应单元501可以响应于将待存储数据写入数据库的缓存存储区域中的压缩数据页,判断压缩数据页中剩余的存储空间是否大于存储空间阈值。缓存存储区域可以为在对数据库的访问过程中,用于存储热数据的存储空间。存储空间阈值的大小可以为一张数据表中写入的最长的记录的长度。
在本实施例中,当压缩数据页中剩余的存储空间小于存储空间阈值时,确定单元502可以确定非压缩数据页中用于生成压缩数据页的非压缩数据页。
在本实施例中,在通过确定单元502确定了用于生成压缩数据页的非压缩数据页之后,压缩单元503可以对所确定的非压缩数据页进行压缩,生成压缩数据页。
在本实施例的一些可选的实现方式中,装置500还包括:选取单元(未示出),配置用于当压缩数据页中剩余的存储空间小于存储空间阈值时,从预先创建的压缩线程中选取出用于对非压缩数据页进行压缩、生成压缩数据页的压缩线程。
在本实施例的一些可选的实现方式中,确定单元502包括:压缩请求接收子单元(未示出),配置用于利用压缩线程接收压缩请求,压缩请求包括数据页标识;非压缩数据页确定子单元(未示出),配置用于当数据页标识存在于非压缩数据页链表中且数据页标识对应的非压缩数据页未被压缩过时,将非压缩数据页确定为用于生成压缩数据页的非压缩数据页,其中,非压缩数据页链表包括多个节点,每一个节点可以对应一个非压缩数据页的数据页标识。
在本实施例的一些可选的实现方式中,装置500还包括:写入子单元(未示出),配置用于在响应于将待存储数据写入数据库的缓存存储区域中的压缩数据页之后,将待存储数据写入非压缩数据页中的预设非压缩数据页。
在本实施例的一些可选的实现方式中,装置500还包括:指令接收单元(未示出),配置用于接收输入的存储空间设置指令;设置单元(未示出),配置用于设置非压缩数据页与压缩数据页的存储空间的大小。
本领域技术人员可以理解,上述数据存储装置500还包括一些其他公知结构,例如处理器、存储器等,为了不必要地模糊本公开的实施例,这些公知的结构在图5中未示出。
图6示出了适于用来实现本申请实施例的终端设备或服务器的计算机系统的结构示意图。
如图6所示,计算机系统600包括中央处理单元(CPU)601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储部分608加载到随机访问存储器(RAM)603中的程序而执行各种适当的动作和处理。在RAM603中,还存储有系统600操作所需的各种程序和数据。CPU601、ROM602以及RAM603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。
以下部件连接至I/O接口605:包括键盘、鼠标等的输入部分606;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至I/O接口605。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装入存储部分608。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括有形地包含在机器可读介质上的计算机程序,所述计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分609从网络上被下载和安装,和/或从可拆卸介质611被安装。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,所述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
作为另一方面,本申请还提供了一种非易失性计算机存储介质,该非易失性计算机存储介质可以是上述实施例中所述装置中所包含的非易失性计算机存储介质;也可以是单独存在,未装配入终端中的非易失性计算机存储介质。上述非易失性计算机存储介质存储有一个或者多个程序,当所述一个或者多个程序被一个设备执行时,使得所述设备:响应于将待存储数据写入数据库的缓存存储区域中的压缩数据页,判断所述压缩数据页中剩余的存储空间是否大于存储空间阈值,其中,所述缓存存储区域包括:用于存储待存储数据的非压缩数据页以及用于存储待存储数据对应的压缩数据的压缩数据页;若否,确定所述非压缩数据页中用于生成压缩数据页的非压缩数据页;对所确定的非压缩数据页进行压缩,生成压缩数据页,以使得在下一次将待存储数据写入压缩数据页时,利用生成的压缩数据页存储待存储数据。
以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

Claims (10)

1.一种数据存储方法,其特征在于,所述方法包括:
响应于将待存储数据写入数据库的缓存存储区域中的压缩数据页,判断所述压缩数据页中剩余的存储空间是否大于存储空间阈值,其中,所述缓存存储区域包括:用于存储待存储数据的非压缩数据页以及用于存储待存储数据对应的压缩数据的压缩数据页;
若否,确定所述非压缩数据页中用于生成压缩数据页的非压缩数据页;
对所确定的非压缩数据页进行压缩,生成压缩数据页,以使得在下一次将待存储数据写入压缩数据页时,利用生成的压缩数据页存储待存储数据。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述压缩数据页中剩余的存储空间小于存储空间阈值时,从预先创建的压缩线程中选取出用于对非压缩数据页进行压缩、生成压缩数据页的压缩线程。
3.根据权利要求2所述的方法,其特征在于,所述确定所述非压缩数据页中用于生成压缩数据页的非压缩数据页包括:
利用所述压缩线程接收压缩请求,所述压缩请求包括数据页标识;
当所述数据页标识存在于非压缩数据页链表中且所述数据页标识对应的非压缩数据页未被压缩过时,将所述非压缩数据页确定为用于生成压缩数据页的非压缩数据页,其中,所述非压缩数据页链表包括多个节点,每一个节点对应一个所述非压缩数据页的数据页标识。
4.根据权利要求3所述的方法,其特征在于,在响应于将待存储数据写入数据库的缓存存储区域中的压缩数据页之后,所述方法还包括:
将所述待存储数据写入所述非压缩数据页中的预设非压缩数据页。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
接收输入的存储空间设置指令;
设置非压缩数据页与压缩数据页的存储空间的大小。
6.一种数据存储装置,其特征在于,所述装置包括:
响应单元,配置用于响应于将待存储数据写入数据库的缓存存储区域中的压缩数据页,判断所述压缩数据页中剩余的存储空间是否大于存储空间阈值,其中,所述缓存存储区域包括:用于存储待存储数据的非压缩数据页以及用于存储待存储数据对应的压缩数据的压缩数据页;
确定单元,配置用于当压缩数据页中剩余的存储空间小于存储空间阈值,确定所述非压缩数据页中用于生成压缩数据页的非压缩数据页;
压缩单元,配置用于对所确定的非压缩数据页进行压缩,生成压缩数据页,以使得在下一次将待存储数据写入压缩数据页时,利用生成的压缩数据页存储待存储数据。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:
选取单元,配置用于当所述压缩数据页中剩余的存储空间小于存储空间阈值时,从预先创建的压缩线程中选取出用于对非压缩数据页进行压缩、生成压缩数据页的压缩线程。
8.根据权利要求7所述的装置,其特征在于,所述确定单元包括:
压缩请求接收子单元,配置用于利用所述压缩线程接收压缩请求,所述压缩请求包括数据页标识;
非压缩数据页确定子单元,配置用于当所述数据页标识存在于非压缩数据页链表中且所述数据页标识对应的非压缩数据页未被压缩过时,将所述非压缩数据页确定为用于生成压缩数据页的非压缩数据页,其中,所述非压缩数据页链表包括多个节点,每一个节点对应一个所述非压缩数据页的数据页标识。
9.根据权利要求8所述的装置,其特征在于,所述装置还包括:
写入单元,配置用于在响应于将待存储数据写入数据库的缓存存储区域中的压缩数据页之后,将所述待存储数据写入所述非压缩数据页中的预设非压缩数据页。
10.根据权利要求9所述的装置,其特征在于,所述装置还包括:
指令接收单元,配置用于接收输入的存储空间设置指令;
设置单元,配置用于设置非压缩数据页与压缩数据页的存储空间的大小。
CN201610006693.4A 2016-01-04 2016-01-04 数据存储方法和装置 Active CN105631035B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN201610006693.4A CN105631035B (zh) 2016-01-04 2016-01-04 数据存储方法和装置
US15/751,072 US10649905B2 (en) 2016-01-04 2016-06-20 Method and apparatus for storing data
PCT/CN2016/086343 WO2017117919A1 (zh) 2016-01-04 2016-06-20 数据存储方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610006693.4A CN105631035B (zh) 2016-01-04 2016-01-04 数据存储方法和装置

Publications (2)

Publication Number Publication Date
CN105631035A true CN105631035A (zh) 2016-06-01
CN105631035B CN105631035B (zh) 2018-04-17

Family

ID=56045968

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610006693.4A Active CN105631035B (zh) 2016-01-04 2016-01-04 数据存储方法和装置

Country Status (3)

Country Link
US (1) US10649905B2 (zh)
CN (1) CN105631035B (zh)
WO (1) WO2017117919A1 (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106503032A (zh) * 2016-09-09 2017-03-15 深圳大学 一种数据压缩的方法及装置
WO2017117919A1 (zh) * 2016-01-04 2017-07-13 北京百度网讯科技有限公司 数据存储方法和装置
CN109918381A (zh) * 2019-03-13 2019-06-21 北京百度网讯科技有限公司 用于存储数据的方法和装置
CN110209968A (zh) * 2019-04-24 2019-09-06 北京奇艺世纪科技有限公司 一种数据存储系统、方法、装置及计算机可读存储介质
CN111290714A (zh) * 2020-02-06 2020-06-16 北京百度网讯科技有限公司 数据读取方法和装置
CN111352861A (zh) * 2020-02-19 2020-06-30 Oppo广东移动通信有限公司 内存压缩方法、装置及电子设备
CN113296709A (zh) * 2017-06-02 2021-08-24 伊姆西Ip控股有限责任公司 用于去重的方法和设备

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11561722B2 (en) * 2020-08-25 2023-01-24 Micron Technology, Inc. Multi-page parity data storage in a memory device
CN113625971A (zh) * 2021-08-17 2021-11-09 咪咕数字传媒有限公司 数据存储方法、装置、设备以及计算机存储介质
CN115543970B (zh) * 2022-11-29 2023-03-03 本原数据(北京)信息技术有限公司 数据页处理方法、数据页处理装置、电子设备及存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1996311A (zh) * 2006-01-02 2007-07-11 国际商业机器公司 管理存储系统的方法和数据处理系统
CN102609360A (zh) * 2012-01-12 2012-07-25 华为技术有限公司 一种数据处理方法、装置及系统
CN102831245A (zh) * 2012-09-17 2012-12-19 洛阳翔霏机电科技有限责任公司 一种关系型数据库的实时数据存储和读取方法
CN103345368A (zh) * 2013-07-18 2013-10-09 四川九成信息技术有限公司 一种在缓冲存储器中缓存数据的方法
CN103744627A (zh) * 2014-01-26 2014-04-23 武汉英泰斯特电子技术有限公司 对实时采集的数据压缩存储的方法及系统
CN103995855A (zh) * 2014-05-14 2014-08-20 华为技术有限公司 存储数据的方法和装置

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6914969B2 (en) * 2001-06-18 2005-07-05 International Business Machines Corporation Service logic execution environment for telecommunications service components
US7953954B2 (en) * 2007-01-26 2011-05-31 Micron Technology, Inc. Flash storage partial page caching
US7895242B2 (en) * 2007-10-31 2011-02-22 Microsoft Corporation Compressed storage management
US9176858B2 (en) * 2012-11-19 2015-11-03 Hitachi, Ltd. Storage system configured to selectively utilize data compression based on real pool usage rates
KR102094163B1 (ko) * 2013-08-28 2020-03-27 삼성전자 주식회사 하이브리드 캐시 기반의 메모리 시스템에서 캐시를 관리하는 장치 및 방법과, 그 메모리 시스템
US20150242432A1 (en) * 2014-02-21 2015-08-27 Microsoft Corporation Modified Memory Compression
CN104461933B (zh) 2014-11-07 2017-10-03 珠海全志科技股份有限公司 内存管理方法及其装置
CN105631035B (zh) * 2016-01-04 2018-04-17 北京百度网讯科技有限公司 数据存储方法和装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1996311A (zh) * 2006-01-02 2007-07-11 国际商业机器公司 管理存储系统的方法和数据处理系统
CN102609360A (zh) * 2012-01-12 2012-07-25 华为技术有限公司 一种数据处理方法、装置及系统
CN102831245A (zh) * 2012-09-17 2012-12-19 洛阳翔霏机电科技有限责任公司 一种关系型数据库的实时数据存储和读取方法
CN103345368A (zh) * 2013-07-18 2013-10-09 四川九成信息技术有限公司 一种在缓冲存储器中缓存数据的方法
CN103744627A (zh) * 2014-01-26 2014-04-23 武汉英泰斯特电子技术有限公司 对实时采集的数据压缩存储的方法及系统
CN103995855A (zh) * 2014-05-14 2014-08-20 华为技术有限公司 存储数据的方法和装置

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017117919A1 (zh) * 2016-01-04 2017-07-13 北京百度网讯科技有限公司 数据存储方法和装置
CN106503032A (zh) * 2016-09-09 2017-03-15 深圳大学 一种数据压缩的方法及装置
CN113296709A (zh) * 2017-06-02 2021-08-24 伊姆西Ip控股有限责任公司 用于去重的方法和设备
CN113296709B (zh) * 2017-06-02 2024-03-08 伊姆西Ip控股有限责任公司 用于去重的方法和设备
CN109918381A (zh) * 2019-03-13 2019-06-21 北京百度网讯科技有限公司 用于存储数据的方法和装置
CN110209968A (zh) * 2019-04-24 2019-09-06 北京奇艺世纪科技有限公司 一种数据存储系统、方法、装置及计算机可读存储介质
CN110209968B (zh) * 2019-04-24 2022-02-01 北京奇艺世纪科技有限公司 一种数据存储系统、方法、装置及计算机可读存储介质
CN111290714A (zh) * 2020-02-06 2020-06-16 北京百度网讯科技有限公司 数据读取方法和装置
CN111290714B (zh) * 2020-02-06 2023-09-05 北京百度网讯科技有限公司 数据读取方法和装置
CN111352861A (zh) * 2020-02-19 2020-06-30 Oppo广东移动通信有限公司 内存压缩方法、装置及电子设备
CN111352861B (zh) * 2020-02-19 2023-09-29 Oppo广东移动通信有限公司 内存压缩方法、装置及电子设备

Also Published As

Publication number Publication date
CN105631035B (zh) 2018-04-17
US20180300250A1 (en) 2018-10-18
US10649905B2 (en) 2020-05-12
WO2017117919A1 (zh) 2017-07-13

Similar Documents

Publication Publication Date Title
CN105631035A (zh) 数据存储方法和装置
CN112765271B (zh) 区块链交易索引的存储方法、装置、计算机设备及介质
US20180107725A1 (en) Data Storage Method and Apparatus, and Data Read Method and Apparatus
CN105205014A (zh) 一种数据存储方法和装置
WO2017107414A1 (zh) 文件操作方法和装置
CN105787077A (zh) 数据同步方法和装置
CN111352935B (zh) 一种块链式账本中的索引创建方法、装置及设备
CN105488125A (zh) 页面访问方法和装置
CN103970758A (zh) 数据库访问系统及方法
CN104657435A (zh) 一种应用数据的存储管理方法和网络管理系统
CN111782304B (zh) 分页加载数据逻辑控制方法、装置、计算机设备及介质
CN109829077A (zh) 一种页面显示方法、装置和设备
CN106170757A (zh) 一种数据存储方法及装置
US11093389B2 (en) Method, apparatus, and computer program product for managing storage system
CN115470156A (zh) 基于rdma的内存使用方法、系统、电子设备和存储介质
CN112650804B (zh) 大数据接入方法、装置、系统及存储介质
CN113742332A (zh) 数据存储方法、装置、设备及存储介质
CN111339098A (zh) 一种权限管理方法、数据查询方法及装置
CN112434233B (zh) 一种用于加快次级页面首屏渲染的方法与设备
CN111831179B (zh) 签约方法、装置及计算机可读介质
CN111310088B (zh) 一种页面渲染方法及装置
CN106446272A (zh) 用于发送数据的方法和装置
CN114676071B (zh) 数据处理方法、装置、电子设备及存储介质
CN107577825A (zh) 一种在移动终端加载网页的方法及装置
WO2024016789A1 (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
GR01 Patent grant
GR01 Patent grant