CN106202138B - 用于自主空间压缩的存储设备和方法 - Google Patents
用于自主空间压缩的存储设备和方法 Download PDFInfo
- Publication number
- CN106202138B CN106202138B CN201610289161.6A CN201610289161A CN106202138B CN 106202138 B CN106202138 B CN 106202138B CN 201610289161 A CN201610289161 A CN 201610289161A CN 106202138 B CN106202138 B CN 106202138B
- Authority
- CN
- China
- Prior art keywords
- data
- space
- host
- sstable
- storage device
- 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/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/174—Redundancy elimination performed by the file system
- G06F16/1744—Redundancy elimination performed by the file system using compression, e.g. sparse files
-
- 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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/1727—Details of free space management performed by the file system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
-
- 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
-
- 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
-
- 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- 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/0683—Plurality of storage devices
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3059—Digital compression and data reduction techniques where the original information is represented by a subset or similar information, e.g. lossy compression
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/16—General purpose computing application
- G06F2212/163—Server or database system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7205—Cleaning, compaction, garbage collection, erase control
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
提供用于自主空间压缩的存储设备和方法。例如,本发明构思的实施例通过减小CPU与存储装置之间的数据移动以及通过支持数据压缩的内存储增大底层存储装置的可用容量,来改善存储方案的性能、能源效率和容量。实施例包括用于通过主机端命令发起并且根据由主机指定的元数据的自主内存储空间压缩的存储设备和方法。空间压缩机可用作存储装置内的独立的模块或逻辑部分,可以在存储装置内移动数据,从而释放容量并且使得预先存在的数据更加紧密。空间压缩机可引起自压缩操作、自压缩和削减操作、移动和压缩操作和/或合并和压缩操作。空间压缩机可通知主机操作的完成。
Description
本申请要求于2015年6月1日提交的第62/169,551号美国专利申请以及于2015年9月23日提交的第14/863,438号美国专利申请的权益,这些美国专利申请通过引用包含于此。
技术领域
本发明构思涉及数据存储,更具体地讲,涉及一种用于数据的自主空间压缩的存储设备和方法。
背景技术
期望在接下来的几年内,数以十亿的传感器将部署在世界各地,并且连接到物联网(IOT)。通过这些传感器采集的数据量将被至少暂时地存储,在一些情况下,被永久地存储。因此,IOT将依靠庞大的存储数据库和底层存储装置。存储空间压缩是现代数据存储的重要方面。例如,NoSQL数据库系统定期地合并数据库文件和/或表格,以减少搜索足迹并且最大化空闲空间。日志结构文件系统(例如,只追加文件(append-only file)系统)有时实现段清理,以提高顺序写入的连续空间可用性。其他传统的方法包括为了更好的性能而清理无效空间的磁盘碎片整理处理。
传统的方法通常引起主机CPU与用于数据压缩的存储装置之间的密集的读取和/或写入活动。例如,有序字符串表格(SSTable)可被压缩在开源分布式数据库管理系统(Apache CassandraTM)中,但是主机CPU与存储装置之间的密集的通信活动可能是性能的限制因素。通过另一示例的方式,只追加文件(AOF(Append only file))文件重新写入Redis(开源键值缓存和存储)中,这可能由于通信开销而对扩展是一种挑战。本发明构思的实施例解决现有技术中的这些和其他限制。
发明内容
本发明构思的实施例可包括具有空间压缩机的存储装置。所述存储装置还可包括:一个或多个数据存储部分;通信和路径逻辑部分,被配置为从主机接收并按路径发送包括元数据的数据压缩命令。空间压缩机可被通信连接到通信和路径逻辑部分和所述一个或多个数据存储部分。空间压缩机可被配置为:从通信和路径逻辑部分接收包括元数据的数据压缩命令,并且至少基于从主机接收的元数据和数据压缩命令,压缩所述一个或多个数据存储部分中预先存在的存储数据。
本发明构思的实施例可包括一种用于在存储装置中压缩空间的计算机实现的方法。所述方法可包括:通过存储装置的通信和路径逻辑部分从主机接收包括元数据的数据压缩命令。所述方法可包括通过通信和路径逻辑部分将数据压缩命令按路径发送到空间压缩机。所述方法可包括通过空间压缩机接收包括元数据的数据压缩命令。所述方法可包括通过空间压缩机,至少基于从主机接收的元数据和数据压缩命令,压缩存储装置的一个或多个数据存储部分中预先存在的存储数据。
附图说明
从下面参照附图进行的详细描述,本发明原理的上述以及附加的特征和优点将变得更加容易理解,其中:
图1是根据本发明构思的实施例的包括主机和具有用于压缩数据的空间压缩机的存储装置的自主空间压缩系统的示例框图。
图2是由图1的存储装置接收的包括与对象指针、源数据地址和新的数据地址相关联的元数据的命令的示例框图。
图3是由图1的存储装置接收的包括与对象指针相关联的元数据的命令的示例框图。
图4是由图1的存储装置接收的包括与第一对象指针和第二对象指针相关联的元数据的命令的示例框图。
图5是由图1的存储装置接收的包括与第一对象指针、第二对象指针和第三对象指针相关联的元数据的命令的示例框图。
图6是示出根据本发明构思的实施例的用于基于主机命令压缩存储装置的一个或多个数据存储部分中预先存在的存储数据(preexisting stored data)的技术的流程图。
图7是示出根据本发明构思的实施例的用于基于主机命令压缩存储装置的一个或多个数据存储部分中预先存在的存储数据的另一技术的流程图。
图8是包括具有图1的空间压缩机的存储装置的计算系统的框图。
具体实施方式
现在,将详细描述本发明构思的实施例,本发明构思的实施例的示例在附图中示出。在下面的详细描述中,阐述了大量的特定细节,以能够全面理解本发明构思。然而,应理解,具有本领域普通技术的人员可在没有这些特定细节的情况下实践本发明构思。在其他示例中,没有详细地描述公知的方法、进程、组件、电路和网络,以免不必要地模糊实施例的各个方面。
将理解,尽管这里可使用术语“第一”、“第二”等来描述各种元件,但是这些元件不应被这些术语所限制。这些术语仅用于将一个元件与另一个元件进行区分。例如,在不脱离本发明构思的范围的情况下,第一逻辑部分可被称为第二逻辑部分,相似地,第二逻辑部分可被称为第一逻辑部分。
这里在本发明构思的描述中使用的术语仅为了描述具体实施例的目的,而不意在限制本发明构思。除非上下文另有清楚地指示,否则如本发明构思和所附权利要求的描述中所使用的单数形式也意在包括复数形式。还将理解,如在此所使用的术语“和/或”涉及并且包括一个或多个相关所列项的任意和所有可能组合。还将理解,当在本说明中使用术语“包括”和/或“包含”时,说明存在叙述的特征、整体、步骤、操作、元件和/或组件,但不排除存在或添加一个或多个其它特征、整体、步骤、操作、元件、组件和/或它们的组。附图的组件和特征不必成比例地描绘。
例如,本发明构思的实施例通过减小CPU与存储装置之间的数据移动以及通过支持数据压缩的内存储器增大底层存储装置的可用容量,来改善存储方案的性能、能源效率和容量。实施例包括用于通过主机端命令初始化并且根据由主机指定的元数据的自主内存储器空间压缩的存储设备和方法。
如下面的进一步描述,空间压缩机可用作存储装置内的独立的模块或逻辑部分,可以在存储装置内移动数据,从而释放容量并且使得预先存在的存储数据更加紧密。仍如下面的进一步描述,空间压缩机可引起自压缩操作、自压缩和削减操作、移动和压缩操作和/或合并和压缩操作。空间压缩机可通知主机操作的完成。存储器带宽和主机CPU损耗工作可被交给智能存储装置,以更好地利用存储装置的内部带宽和低功耗。换言之,这样的带宽和主机CPU损耗工作可响应于来自主机的命令和元数据而被存储装置内的空间压缩机和处理所代替。
图1是包括主机层105和装置层110的自主空间压缩系统100的示例框图。根据本发明构思的实施例的装置层110可包括具有用于压缩数据的空间压缩机145的存储装置130。空间压缩机145可包括空间压缩逻辑部分147和/或空间压缩存储部分149。在一个实施例中,空间压缩逻辑部分147可包括中央处理单元(CPU)、现场可编程门阵列(FPGA)、专用集成电路(ASIC)等,空间压缩存储部分149可包括随机存取存储器(RAM)、闪存、相变存储器(PCM)等。存储装置130可包括任何合适类型的非易失存储器,诸如,闪存、相变存储器(PCM)、自旋转移力矩随机存取存储器(STT-RAM)等。例如,存储器130可以是固态驱动(SSD)存储装置。主机层105可包括主机102,诸如,主机处理器102。例如,主机处理器102可以是中央处理单元(CPU)。然而,将理解,主机处理器102可以是任何合适类型的处理器。还将理解主机102可包括软件处理、固件部分、硬件单元或它们的任意组合。
主机102可包括一个或多个应用115和装置驱动器120。例如,一个或多个应用115可包括文件系统、数据库、一个或多个处理等。一个或多个应用115可将一个或多个命令调用125发给装置驱动器120。例如,一个或多个命令调用125可包括数据压缩命令调用125。可通过包括具体指定装置、命令字符串和元数据的控制代码(Ioctl)的方式来发出数据压缩命令调用125。例如,控制代码可以是Ioctl(dev,“COMPACT”,metadata,...)的形式。将理解,在不脱离在此公开的发明构思的情况下,数据压缩命令调用125可采用其他合适的形式或可以其他合适的方式被发出。例如,可通过网页服务接口、应用编程接口(API)等来发出压缩命令。
主机102可通过接口152与存储装置130通信。接口152可包括串行高级技术附件(SATA)接口、串行连接小型计算机系统接口(串行连接的SCSI或SAS)、快速非易失存储器主机控制器接口规范(NVMe)接口、以太网接口(诸如,10G/40G/100G以太网接口)、光纤通道(FC)接口、无限宽带接口、远程直接内存访问(RDMA)接口等。主机102的装置驱动器120可接收数据压缩命令调用125。装置驱动器120可生成包括元数据155的命令150,命令150可通过接口152从主机层105到装置层110而被发送到存储装置130。
在这种方式中,存储装置130可根据在主机层105上确定的用户和/或应用定义的压缩参数它们自己的数据结构来继承用户和/或应用定义的压缩参数。存储装置130的更低等级的闪存转换层(FTL)(未示出)或闪存垃圾收集器(GC)(未示出)不需要知道用户和/或应用定义的压缩参数,反之亦然。相反,空间压缩机145可继承来自主机的参数,并且可基于这样的参数在存储装置130内自主地实现压缩。因此,空间压缩机145也不需要知道FTL或闪存GC,但是可位于硬件和/或软件堆栈中的更高的等级。下面详细地描述命令150和相关联的元数据155。
存储装置130可包括通信和路径逻辑部分140。通信和路径逻辑部分140可从主机102的装置驱动器120接收命令150和相关联的元数据155。响应于命令150与数据压缩命令调用(例如,125)相关联,通信和路径逻辑部分140可通过线160将命令150按路径发送到空间压缩机145。
空间压缩机145可通过线160和/或线170通信连接到通信和路径逻辑部分140,并且通过线165通信连接到物理存储部分135。物理存储部分135可包括一个或多个数据存储部分,例如,一个或多个非易失存储器部分134和/或一个或多个易失存储部分136。物理存储部分135可包括一个或多个处理器132。一个或多个处理器132可包括一个或多个微处理器和/或中央处理器(CPU)。空间压缩机145可从通信和路径逻辑部分140接收包括元数据155的数据压缩命令150。空间压缩逻辑部分147可处理数据压缩命令150和/或元数据155。空间压缩存储部分149可存储数据压缩命令150和/或元数据155。如下面进一步详细描述,空间压缩机145可至少基于从主机102接收的元数据155和数据压缩命令150来压缩物理存储部分135中的预先存在的存储数据,。空间压缩机145可生成回复170并且将回复170发送到通信和路径逻辑部分140,通信和路径逻辑部分140可将回复175发送到主机的装置驱动器120。例如,回复170和/或175可指示存储压缩请求的成功或失败。
通信和路径逻辑部分140可通过常规的路径180和路径185来按路径发送非压缩相关的命令(例如,与数据压缩或空间压缩机145不相关的任何命令)。换言之,与空间压缩相不关联的全部其他命令可通过通信和路径逻辑部分140直接地被按路径发送到物理存储部分135,回复通过线185被发回到通信和路径逻辑部分140,然后作为回复175被返回到主机102的装置驱动器120。
图2是由图1的存储装置130通过接口152接收的包括与对象指针205、源数据地址215和新的数据地址220相关联的元数据155的命令150的示例框图。命令150可以是数据压缩命令150。元数据155可包括对象指针205、一个或多个源数据地址215和/或一个或多个新的数据地址220。对象指针205可指向可被存储在存储装置130上的可包括预先存在的存储数据222的对象210。预先存在的存储数据222可在生成命令150之前存在于存储在存储装置130中的对象210中。无效数据225也可在生成命令150之前存在于存储在存储装置130中的对象210中。
(图1的)空间压缩机145可使得与一个或多个源数据地址215相应的预先存在的存储数据222的一个或多个子集合(例如,217)移动到与一个或多个新的数据地址220相应的对象210内的新的位置226。(图1的)空间压缩机145可使得与一个或多个源数据地址215相应的预先存在的存储数据222的另一个或多个子集合(例如,219)移动到与一个或多个新的数据地址220相应的对象210内的新的位置226。无效数据225可被丢弃,以释放对象210内的空间,由此提供额外空的空间230。对象指针205可在这样的移动之前和之后指向同一对象210。
在一些实施例中,对象210可以是文件210。例如,对象210可以是文件系统、数据库、键(key)存储器等内的文件210。在示出的示例中,一个或多个源数据地址215可对应于文件210内的逻辑块地址(LBA)的第一范围217和文件210内的LBA的第二范围219。一个或多个新的数据地址220可对应于文件210内的LBA的第三范围226。例如,第一范围217可对应于LBA1-400,第二范围219可对应于LBA1000-1100,第三范围226可对应于LBA 4000-4500。将理解,任何合适数量的预先存在的存储数据的子集合以及相关联的LBA范围可存在于文件210中。在数据的移动之后,预先存在的存储数据中的一些数据可位于文件210的不同的部分,而预先存在的存储数据中的其他数据可位于文件210的相同的部分。
在数据的移动之后,空的部分230可至少部分地由于无效数据225被丢弃而存在于文件210的末端或末尾。在移动之前的日志末尾235可在移动之后调整到新的位置240。因此,压缩可至少基于从(图1的)主机102接收的命令150和元数据155重新组建文件210,从而有效数据(预先存在的存储数据)222可被逻辑连续地组建,空闲空间或空的空间可被逻辑连续地组建。存储装置130可内部地处理数据移动任务,并且在处理完成时回复给(图1的)主机102。
图3是由图1的存储装置130通过接口152接收的包括与对象指针305相关联的元数据155的命令150的示例框图。命令150可以是数据压缩命令150。元数据155可包括对象指针305。对象指针305可指向可被存储在存储装置130上的可包括预先存在的存储数据315的对象310。预先存在的存储数据315可在生成命令150之前,存在于存储在存储装置130中的对象310中。如下面进一步的描述,(图1的)空间压缩机145可使得预先存在的存储数据315的一个或多个子集合移动到对象310内的新的位置。
对象310可以是包括一个或多个页(例如,页1至页N)的数据库表格310。一个或多个页中的每页可包括一个或多个有效记录(例如,有效R1、有效R2等)和/或一个或多个未使用和/或无效条目(例如,320、322和/或325)。(图1的)空间压缩机145可使得一个或多个页(例如,页1至页N)中的每页的一个或多个有效记录(例如,有效R1、有效R2等)重新排列为相应的页(例如,页1至页N)中的每页内的逻辑连续的排列。
例如,如数据库表格310的预先存在的存储数据315的页1中所示,有效记录R1之后是未使用和/或无效空间320,未使用和/或无效空间320之后是有效记录R2,有效记录R2之后是未使用空间322。在(图1的)空间压缩机145将数据重新排列为重新排列的数据317中之后,页1可与之前不同地被排列。具体地说,页1可包括有效记录R1,之后是有效记录R2,之后是未使用空间330。未使用的空间中的一些或全部可被削减或释放(如335所示),以释放页1内的更多空间。
通过另一示例的方式,如数据库表格310的预先存在的存储数据315的页N中所示,有效记录R1之后是未使用空间325、未使用空间325之后是有效记录R3,有效记录R3之后是有效记录R2。在(图1的)空间压缩机145将数据重新排列为重新排列的数据317中之后,页N可与之前不同地被排列。具体地说,页N可包括有效记录R1,之后是有效记录R2,之后是有效记录R3。页N的未使用的空间中的一些或全部可被削减或释放(如340所示),以释放页N内的更多空间。在数据库表格310内可更新内部元数据,诸如,页头、目录结构等。
因此,(图1的)空间压缩机145可使得一个或多个页(例如,页1至页N)中的每页的一个或多个未使用和/或无效条目(例如,320、322和/或325)重新排列为相应的页(例如,页1至页N)中的每页内的逻辑连续的排列。将理解,任何合适数量的有效记录可被重新排列为每页内的逻辑连续的排列。(图1的)空间压缩机145可使得一个或多个页(例如,页1至页N)中的每页的一个或多个未使用和/或无效的条目(例如,320、322和/或325)从数据库表格310削减或释放。还将理解,任何合适的未使用空间可被削减或释放,以释放每页内的额外的空间。压缩可至少基于从(图1的)主机102接收的命令150和元数据155改善数据库表格310的状态,从而有效记录可被逻辑连续地组建,并且未使用记录被削减或释放,从而释放数据库表格310中的空间。存储装置130可内部地处理数据压缩任务,并且在处理完成时回复给(图1的)主机102。
图4是由图1的存储装置130通过接口152接收的包括与第一对象指针405和第二对象指针415相关联的元数据155的命令150的示例框图。命令150可以是数据压缩命令150。元数据155可包括可指向第一对象(诸如,第一AOF(只追加文件(Append only file))文件410)的第一对象指针405。元数据155可包括可指向第二对象(诸如,第二AOF文件420)的第二对象指针415。第一AOF文件410和第二AOF文件420可被存储在存储装置130上。该实施例中的压缩可涉及将有效数据从第一AOF文件410移动到第二AOF文件420,由此,重新组建原始对象。然后可删除原始第一AOF文件410。
第一AOF文件410可包括预先存在的存储数据425。预先存在的存储数据425可在生成命令150之前存在于存储在存储装置130中的第一AOF文件410中。(图1中)空间压缩机145可使得第一AOF文件410中的预先存在的存储数据425的一个或多个子集合(例如,U12-A、U9-B和/或U10-C)移动到第二AOF文件420。第一AOF文件410中的预先存在的存储数据425可包括一个或多个时间戳记录(例如,W1-A、W2-B、W3-D、U4-A、U5-C、W6-D、U7-B、U8-C、U9-B、U10-C、D11-D和U12-A),其中,‘W’表示写入操作,‘U’表示更新操作,‘D’表示删除操作,数字1至数字12表示记录的时间戳,其中,时间戳可在第一AOF文件410中以时间先后顺序被排列。字母‘A’表示第一独特键或数据的类型,字母‘B’表示第二独特键或数据的类型,字母‘C’表示第三独特键或数据的类型,字母‘D’表示第四独特键或数据的类型。例如,W1-A、U4-A和U12-A可以与相同的独特键或数据的类型相关联。因此,各种操作在AOF文件内交错。还将理解第一AOF文件410可包括表示任何合适数量的操作的任何合适数量的记录,以及与每个记录相关联的任何合适种类的时间戳。还将理解,第一AOF文件410可包括任何合适数量的独特键或数据类型的。
(图1的)空间压缩机145可使得第一AOF文件410的一个或多个时间戳记录425的子集合(例如,W1-A、U4-A和U12-A)被压缩为单个时间戳记录(例如,U12-A)并且被存储在第二AOF文件420中。通过另一示例的方式,(图1的)空间压缩机145可使得第一AOF文件410的一个或多个时间戳记录425的另一子集合(例如,W2-B、U7-B和U9-B)被压缩为单个时间戳记录(例如,U9-B)并且被存储在第二AOF文件420中。通过另一示例的方式,(图1的)空间压缩机145可使得第一AOF文件410的一个或多个时间戳记录425的另一子集合(例如,W3-C、U5-C、U8-C和U10-C)被压缩为单个时间戳记录(例如,U10-C)并且被存储在第二AOF文件420中。关于由字母‘D’表示的独特键或数据的类型,由于最近记录的这样的键或数据的类型被删除(例如,D11-D)了,因此与由字母‘D’表示的这样的独特键或数据的类型相关联的记录可被丢弃,并且在第二AOF文件420上不需要复制或压缩。
因此,在高级键值缓存存储(诸如,Redis)中,压缩可至少基于从(图1的)主机102接收的命令150和元数据155,将第一AOF文件410压缩在第二AOF文件420中。在一些实施例中,AOF文件可包含与数百万的操作相关联的数百万的记录,其中,数百万的记录可被压缩下降到远远更少的记录和相关联的操作,甚至下降到数千的而不是数百万的数量级。存储装置130可内部地处理数据压缩任务,并且在处理完成时回复给(图1的)主机102。
图5是由图1的存储装置接收的包括与第一对象指针505、第二对象指针515和第三对象指针525相关联的元数据的命令的示例框图。命令150可以是数据压缩命令150。元数据155可包括对象指针505、对象指针515和/或对象指针525。在一些实施例中,对象指针(例如,505、515和525)可均与NoSQL数据库相关联。对象指针(例如,505、515和525)可均指向数据库表格,诸如,Cassandra中的有序字符串表格(SSTable)、Hbase、LevelDB或任何合适种类的数据库表格。与SSTable相关联的布置信息可描述如何在存储器装置130上存储键值对。
对象指针505可指向可存储在存储装置130上的对象510,并且对象510可包括预先存在的存储数据的第一部分(例如,键545、值540和/或过时的值535)。预先存在的存储数据的第一部分(例如,键545、值540和/或过时的值535)可在生成命令150之前存在于存储在存储装置130中的对象510中。对象指针515可指向可存储在存储装置130上的另一对象520,并且对象520可包括预先存在的存储数据的第二部分(例如,键547、值555和/或过时的值550)。预先存在的存储数据的第二部分(例如,键547、值555和/或过时的值550)可在生成命令150之前存在于存储在存储装置130中的对象520中。对象指针525可指向可被预分配和/或存储在存储装置130上的另一对象530。
如下面进一步的描述,(图1的)空间压缩机145可使得预先存在的存储数据的第一部分(例如,键545、值540和/或过时的值535)的一个或多个子集合(例如,值540和相应的键545)移动到第三对象530。(图1的)空间压缩机145可使得第二对象520中的预先存在的存储数据的第二部分(例如,键547、值555和/或过时的值550)的一个或多个子集合(例如,值555和相应的键547)移动到第三对象530。
第一对象510可对应于第一有序字符串表格(SSTable)510。第一SSTable 510中的预先存在的存储数据的第一部分可包括一个或多个键545、一个或多个值540和/或一个或多个过时的值535。第二对象520可对应于第二SSTable 520。第二SSTable 520中的预先存在的存储数据的第二部分可包括一个或多个值555和相应的一个或多个键547。第二SSTable 520中的预先存在的存储数据的第二部分还可包括一个或多个过时的值550和相应的一个或多个键547。第三对象530可对应于为了写入新移动的SSTable而可在存储装置130上预分配的第三SSTable 530。
(图1的)空间压缩机145可使得第一SSTable 510的一个或多个值540和相应的一个或多个键545移动到第三SSTable530。相似地,(图1的)空间压缩机145可使得第二SSTable 520的一个或多个值555和相应的一个或多个键547移动到第三SSTable 530。在该方式中,压缩的键值可在560被写入到新的SSTable 530。换言之,压缩可合并多个对象,在输入对象中移动公告(tombstone),和/或在一个新的输出对象中重新组建输入对象。在合并已完成之后,SSTable 510和SSTable 520可被删除,以释放存储装置130中的空间。
过时的值(例如,535和550)不需要被移动。更具体地说,(图1的)空间压缩机145可使得第一SSTable 510的一个或多个过时的值535和相应的一个或多个键545不移动到第三SSTable530。相似地,(图1的)空间压缩机145可使得第二SSTable 520的一个或多个过时的值550和相应的一个或多个键547不移动到第三SSTable 530。
因此,压缩可至少基于从(图1的)主机102接收的命令150和元数据155,将第一SSTable 510和第二SSTable 520合并到第三SSTable 530中。存储装置130可内部地处理数据合并任务,并且在处理完成时回复给(图1的)主机102。回复(例如,图1的175)可包括在压缩之后新写入的SSTable 530的布置描述。
图6是示出根据本发明构思的实施例的用于基于主机命令(例如,图1的125、150)压缩存储装置(例如,130)的一个或多个数据存储部分(例如,图1的134、136)中预先存在的存储数据的技术的流程图600。技术可在605开始,其中,存储装置(例如,图1的130)的通信和路径逻辑部分(例如,图1的140)可从主机(例如,图1的102)接收包括元数据的数据压缩命令。在610,通信和路径逻辑部分(例如,图1的140)可将数据压缩命令按照路径发送到空间压缩机(例如,图1的145)。在615,空间压缩机(例如,图1的145)可接收包括元数据的数据压缩命令。在620,空间压缩机(例如,图1的145)可压缩存储装置(例如,图1的130)的一个或多个数据存储部分(例如,图1的134、136)中预先存在的存储数据。将理解,图6中示出的步骤不需要以指示的顺序完成,而是,可以以不同的顺序和/或使用中间的步骤来执行图6中示出的步骤。
图7是示出根据本发明构思的实施例的用于基于主机命令(例如,图1的125、150)压缩存储装置(例如,图1的130)的一个或多个数据存储部分(例如,图1的134、136)中预先存在的存储数据的另一技术的流程图700。技术可在705开始,其中,存储装置(例如,图1的130)的通信和路径逻辑部分(例如,图1的140)可从主机(例如,图1的102)接收包括元数据的数据压缩命令。在710,可对命令是否是数据压缩命令进行确定。如果不是,则表示命令是非数据压缩命令,流程可转到715,其中,通信和路径逻辑部分(例如,图1的140)可以以通用方式将命令直接地按照路径发送到存储装置(例如,图1的130)的一个或多个存储部分(例如,图1的134、136)。
否则,如果是这样,则表示命令是数据压缩命令,流程可转到720。在720,通信和路径逻辑部分(例如,图1的140)可将数据压缩命令按照路径发送到空间压缩机(例如,图1的145)。在725,空间压缩机(例如,图1的145)可接收包括元数据的数据压缩命令。在730,空间压缩机(例如,图1的145)可压缩存储装置(例如,图1的130)的一个或多个数据存储部分(例如,图1的134、136)中预先存在的存储数据。将理解,图7中示出的步骤不需要以指示的顺序完成,而是,可以以不同的顺序和/或使用中间的步骤来执行图7中示出的步骤。
图8是包括具有图1的空间压缩机145的存储装置130的计算系统800的框图。计算系统800可包括时钟810、随机存取存储器(RAM)815、用户接口820、调制解调器825(诸如,基频芯片组)、固态驱动/盘(SSD)840和/或处理器835,它们中的任意或全部可被电连接到系统总线805。计算系统800可包括也可电连接到系统总线805的图1的存储装置130和空间压缩机145。空间压缩机145可包括时钟810、随机存取存储器(RAM)815、用户接口820、调制解调器825、固态驱动/盘(SSD)840和/或处理器835,或者相反,可以与时钟810、随机存取存储器(RAM)815、用户接口820、调制解调器825、固态驱动/盘(SSD)840和/或处理器835交互。
以下讨论意在提供可实现本发明构思的特定方面的合适的机器的简明、通用的描述。典型地,机器包括附加到处理器、存储器(例如,随机存取存储器(RAM)、只读存储器(ROM)或其他状态保护介质)、存储装置、视频接口和输入/输出接口端所连接到的系统总线。可至少部分地通过来自传统输入装置(诸如,键盘、鼠标等)的输入以及通过从另一机器接收的指令、与虚拟现实(VR)环境的交互、生物测量反馈或其他输入信号来控制机器。如在此使用的,术语“机器”意在广泛地包括单个机器、虚拟机器或者一起操作的可通信连接的机器、虚拟机器或装置的系统。示例性的机器包括计算装置(诸如,个人计算机、工作站、服务器、便携计算机、手持装置、电话、平板等),以及运输装置(诸如,私人或公共运输工具(例如,汽车、火车、出租车等)
机器可包括嵌入式控制器(诸如,可编程的或不可编程的逻辑装置或阵列)、专用集成电路(ASIC)、嵌入式计算机、智能卡等。机器可使用一个或多个连接来连接到一个或多个远程机器,诸如通过网络接口、调制解调器或其他通信连接。机器可通过物理和/或逻辑网络(诸如,内联网、以太网、局域网、广域网等)的方式被互相连接。本领域的技术人员将理解,网络通信可利用包括以下项的各种有线和/或无线的短范围或长范围载波和协议:射频(RF)、卫星、微波、电气电子工程师协会(IEEE)545.11、光、红外、电缆、激光等。
可参照或结合相关联的数据来描述本发明构思的实施例,相关联的数据包括当被机器访问时使得机器执行任务或定义抽象数据类型或低等级硬件环境的函数、程序、数据结构、应用程序等的。例如,可在易失和/或非易失存储器(例如,RAM、ROM等)中或其他存储装置和它们相关联的存储介质中存储相关联的数据,其中,相关联的存储介质包括硬件驱动、软盘、光存储器、磁带、闪存、记忆棒、数字视频盘、生物存储器等。可以以包、串行数据、并行数据、传播信号等的形式,通过包括物理和/或逻辑网络的传输环境来传送相关联的数据,并且可以以压缩的或加密的格式来使用相关联的数据。相关联的数据可被用于分布式环境中,并且可为了机器访问而被局部地和/或远程地存储。
已经参照示出的实施例描述并示出了本发明构思的原理,将认识到可在不脱离这样的原理的情况下在排列和细节上对示出的实施例进行修改,并且可以以任何期望的方式来组合示出的实施例。尽管上述讨论集中于具体的实施例上,但是其他配置也被考虑。具体地说,即使在此使用了诸如“根据本发明构思的实施例”的表述等,这些短语指总体上参考实施例的可能性,而不意在将本发明构思限制为具体的实施例配置。如在此使用的,这些术语可参考可组合到其他实施例中的相同的或不同的实施例。
本发明构思的实施例可包括可由一个或多个处理器执行的指令的非暂时性机器可读介质,该指令包括用于执行如在此描述的本发明构思的元件的指令。
上述示意性的实施例可不被解释为限制它的发明构思。尽管已经描述了几个实施例,但是本领域的技术人员将容易地理解,在实质上不脱离本公开的发明教导和优点的情况下,可对这些实施例进行许多修改。因此,全部这样的修改意在被包括在如权利要求限定的本发明构思的范围内。
Claims (20)
1.一种存储装置,包括:
一个或多个数据存储部分;
通信和路径逻辑部分,被配置为从包括第一处理器的主机接收并按路径发送包括元数据的命令,并且通信和路径逻辑部分还被配置为确定从主机接收的包括元数据的所述命令是包括元数据的数据压缩命令还是包括元数据的非数据压缩命令;
包括一个或多个第二处理器的空间压缩机,通信连接到通信和路径逻辑部分和所述一个或多个数据存储部分,其中,空间压缩机的所述一个或多个第二处理器被配置为:从通信和路径逻辑部分接收主机的包括元数据的数据压缩命令,处理主机的包括元数据的数据压缩命令,并且至少基于从主机接收的元数据和数据压缩命令,压缩所述一个或多个数据存储部分中预先存在的存储数据,
其中,通信和路径逻辑部分还被配置为:当所述命令是数据压缩命令时,将所述命令按路径发送到空间压缩机,当所述命令是非数据压缩命令时,将所述命令按路径发送到所述一个或多个数据存储部分,从而绕过空间压缩机,
其中,元数据包括对象指针,对象指针指向包括预先存在的存储数据的对象,
其中,所述存储装置根据在包括主机的主机层上确定的用户和/或应用定义的压缩参数自己的数据结构来继承用户和/或应用定义的压缩参数,空间压缩机被配置为继承来自主机的压缩参数,并且基于来自主机的压缩参数在所述存储装置内自主地压缩所述一个或多个数据存储部分中预先存在的存储数据,从而代替存储器带宽和主机的第一处理器的损耗工作。
2.如权利要求1所述的存储装置,其中,所述一个或多个数据存储部分包括一个或多个非易失存储器部分以及一个或多个易失存储器部分。
3.如权利要求1所述的存储装置,其中:
元数据还包括一个或多个源数据地址以及一个或多个新的数据地址;
空间压缩机被配置为:使得与所述一个或多个源数据地址相应的预先存在的存储数据的一个或多个子集合移动到与所述一个或多个新的数据地址相应的对象内的新的位置。
4.如权利要求3所述 的存储装置,其中:
所述对象是文件;
所述一个或多个源数据地址对应于文件内的逻辑块地址的第一范围以及文件内的逻辑块地址的第二范围;
所述一个或多个新的数据地址对应于文件内的逻辑块地址的第三范围。
5.如权利要求1所述的存储装置,其中:
空间压缩机被配置为:使得预先存在的存储数据的一个或多个子集合移动到对象内的新的位置。
6.如权利要求5所述的存储装置,其中:
对象是包括一个或多个页的数据库表格,所述一个或多个页中的每页包括一个或多个有效记录以及一个或多个未使用或无效条目;
空间压缩机被配置为:使得所述一个或多个页中的每页的所述一个或多个有效记录重新排列为所述一个或多个页中的相应的页中的每页内的逻辑连续的排列;
空间压缩机被配置为:使得所述一个或多个页中的每页的所述一个或多个未使用或无效条目重新排列为所述一个或多个页中的相应的页中的每页内的逻辑连续的排列。
7.如权利要求6所述的存储装置,其中:
所述一个或多个未使用或无效条目包括重新排列为逻辑连续的排列的多个未使用或无效条目;
空间压缩机被配置为:使得所述一个或多个页中的每页的逻辑连续的所述多个未使用或无效条目从数据库表格被削减。
8.如权利要求1所述的存储装置,其中:
元数据包括第一对象指针和第二对象指针;
第一对象指针指向包括预先存在的存储数据的第一对象;
第二对象指针指向第二对象;
空间压缩机被配置为:使得第一对象中的预先存在的存储数据的一个或多个子集合移动到第二对象。
9.如权利要求8所述的存储装置,其中:
第一对象对应于第一只追加文件AOF文件;
第一AOF文件中的预先存在的存储数据包括一个或多个时间戳记录;
第二对象对应于第二AOF文件;
空间压缩机被配置为:使得第一AOF文件的所述一个或多个时间戳记录的子集合被压缩为单个时间戳记录,并且单个时间戳记录被存储在第二AOF文件中。
10.如权利要求9所述的存储装置,其中:
第一AOF文件的所述一个或多个时间戳记录的子集合被称为第一子集合;
第二AOF文件的单个时间戳记录被称为第一单个时间戳记录;
空间压缩机被配置为:使得第一AOF文件的所述一个或多个时间戳记录的第二子集合被压缩为第二单个时间戳记录,并且第二单个时间戳记录被存储在第二AOF文件中。
11.如权利要求1所述的存储装置,其中:
元数据包括第一对象指针、第二对象指针和第三对象指针;
第一对象指针指向包括预先存在的存储数据的第一部分的第一对象;
第二对象指针指向包括预先存在的存储数据的第二部分的第二对象;
第三对象指针指向第三对象;
空间压缩机被配置为:使得第一对象中的预先存在的存储数据的第一部分的一个或多个子集合移动到第三对象;
空间压缩机被配置为:使得第二对象中的预先存在的存储数据的第二部分的一个或多个子集合移动到第三对象。
12.如权利要求11所述的存储装置,其中:
第一对象对应于第一有序字符串表格SSTable;
第一SSTable中的预先存在的存储数据的第一部分包括:一个或多个值和相应的一个或多个键以及一个或多个过时的值和相应的一个或多个键;
第二对象对应于第二SSTable;
第二SSTable中的预先存在的存储数据的第二部分包括:一个或多个值和相应的一个或多个键以及一个或多个过时的值和相应的一个或多个键;
第三对象对应于第三SSTable;
空间压缩机被配置为:使得第一SSTable的所述一个或多个值和相应的一个或多个键移动到第三SSTable;
空间压缩机被配置为:使得第二SSTable的所述一个或多个值和相应的一个或多个键移动到第三SSTable。
13.如权利要求12所述的存储装置,其中:
空间压缩机被配置为:使得第一SSTable的所述一个或多个过时的值和相应的一个或多个键不移动到第三SSTable;
空间压缩机被配置为:使得第二SSTable的所述一个或多个过时的值和相应的一个或多个键不移动到第三SSTable。
14.一种用于在存储装置中压缩空间的计算机实现的方法,所述方法包括:
通过存储装置的通信和路径逻辑部分从包括第一处理器的主机接收包括元数据的命令;
通过通信和路径逻辑部分确定从主机接收的包括元数据的所述命令是包括元数据的数据压缩命令还是包括元数据的非数据压缩命令;
当确定所述命令是数据压缩命令时,通过通信和路径逻辑部分将从主机接收的包括元数据的所述命令按路径发送到空间压缩机;
通过空间压缩机接收包括元数据的数据压缩命令;
通过空间压缩机,至少基于从主机接收的元数据和数据压缩命令,压缩存储装置的一个或多个数据存储部分中预先存在的存储数据;
当所述命令是非数据压缩命令时,通过通信和路径逻辑部分将从主机接收的包括元数据的所述命令按路径发送到存储装置的所述一个或多个数据存储部分,从而绕过空间压缩机,
其中,元数据包括对象指针,对象指针指向包括预先存在的存储数据的对象,
其中,存储装置根据在包括主机的主机层上确定的用户和/或应用定义的压缩参数自己的数据结构来继承用户和/或应用定义的压缩参数,空间压缩机被配置为继承来自主机的压缩参数,并且基于来自主机的压缩参数在存储装置内自主地压缩所述一个或多个数据存储部分中预先存在的存储数据,从而代替存储器带宽和主机的第一处理器的损耗工作。
15.如权利要求14所述的计算机实现的方法,其中,元数据还包括:一个或多个源数据地址以及一个或多个新的数据地址,所述方法还包括:
通过空间压缩机,使得与所述一个或多个源数据地址相应的预先存在的存储数据的一个或多个子集合移动到与所述一个或多个新的数据地址相应的对象内的新的位置。
16.如权利要求14所述的计算机实现的方法,其中,所述方法还包括:
通过空间压缩机,使得预先存在的存储数据的一个或多个子集合移动到对象内的新的位置。
17.如权利要求16所述的计算机实现的方法,其中,所述对象是包括一个或多个页的数据库表格,所述一个或多个页中的每页包括一个或多个有效记录以及多个未使用或无效条目,所述方法还包括:
通过空间压缩机,使得所述一个或多个页中的每页的所述一个或多个有效记录重新排列为所述一个或多个页中的相应的页中的每页内的逻辑连续的排列;
通过空间压缩机,使得所述一个或多个页中的每页的所述多个未使用或无效条目重新排列为所述一个或多个页中的相应的页中的每页内的逻辑连续的排列;
从数据库表格削减所述一个或多个页中的每页的逻辑连续的所述多个未使用或无效条目。
18.如权利要求14所述的计算机实现的方法,其中,元数据包括指向包括预先存在的存储数据的第一对象的第一对象指针,并且包括指向第二对象的第二对象指针,所述方法还包括:
通过空间压缩机,使得第一对象中的预先存在的存储数据的一个或多个子集合移动到第二对象。
19.如权利要求18所述的计算机实现的方法,其中,第一对象对应于第一只追加文件AOF文件,第一AOF文件中的预先存在的存储数据包括一个或多个时间戳记录,第二对象对应于第二AOF文件,所述方法还包括:
通过空间压缩机,使得第一AOF文件的所述一个或多个时间戳记录的第一子集合被压缩为第一单个时间戳记录,并且第一单个时间戳记录被存储在第二AOF文件中;
通过空间压缩机,使得第一AOF文件的所述一个或多个时间戳记录的第二子集合被压缩为第二单个时间戳记录,并且第二单个时间戳记录被存储在第二AOF文件中。
20.如权利要求14所述的计算机实现的方法,其中,元数据包括第一对象指针、第二对象指针和第三对象指针,第一对象指针指向包括预先存在的存储数据的第一部分的第一有序字符串表格SSTable,第二对象指针指向包括预先存在的存储数据的第二部分的第二SSTable,第三对象指针指向第三SSTable,所述方法还包括:
通过空间压缩机,使得第一SSTable的预先存在的存储数据的第一部分的一个或多个值和相应的一个或多个键移动到第三SSTable;
通过空间压缩机,使得第二SSTable的预先存在的存储数据的第二部分的一个或多个值和相应的一个或多个键移动到第三SSTable;
通过空间压缩机,使得第一SSTable的预先存在的存储数据的第一部分的一个或多个过时的值和相应的一个或多个键不移动到第三SSTable;
通过空间压缩机,使得第二SSTable的预先存在的存储数据的第二部分的一个或多个过时的值和相应的一个或多个键不移动到第三SSTable。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201562169551P | 2015-06-01 | 2015-06-01 | |
US62/169,551 | 2015-06-01 | ||
US14/863,438 | 2015-09-23 | ||
US14/863,438 US10216418B2 (en) | 2015-06-01 | 2015-09-23 | Storage apparatus and method for autonomous space compaction |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106202138A CN106202138A (zh) | 2016-12-07 |
CN106202138B true CN106202138B (zh) | 2022-04-01 |
Family
ID=57398629
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610289161.6A Active CN106202138B (zh) | 2015-06-01 | 2016-05-04 | 用于自主空间压缩的存储设备和方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10216418B2 (zh) |
KR (1) | KR102334735B1 (zh) |
CN (1) | CN106202138B (zh) |
TW (2) | TWI706315B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10938765B1 (en) * | 2016-03-11 | 2021-03-02 | Veritas Technologies Llc | Systems and methods for preparing email databases for analysis |
CN106844102B (zh) * | 2017-01-16 | 2022-11-04 | 腾讯科技(深圳)有限公司 | 数据恢复方法和装置 |
US10606767B2 (en) * | 2017-05-19 | 2020-03-31 | Samsung Electronics Co., Ltd. | Ethernet-attached SSD for automotive applications |
TWI646424B (zh) * | 2017-08-09 | 2019-01-01 | 宏碁股份有限公司 | 智慧型磁碟重組方法與智慧型磁碟重組系統 |
CN107479833B (zh) * | 2017-08-21 | 2020-04-17 | 中国人民解放军国防科技大学 | 一种面向键值存储的远程非易失内存访问与管理方法 |
CN110716690B (zh) * | 2018-07-12 | 2023-02-28 | 阿里巴巴集团控股有限公司 | 数据回收方法和系统 |
US11237744B2 (en) * | 2018-12-28 | 2022-02-01 | Verizon Media Inc. | Method and system for configuring a write amplification factor of a storage engine based on a compaction value associated with a data file |
US11079958B2 (en) | 2019-04-12 | 2021-08-03 | Intel Corporation | Apparatus, system and method for offloading data transfer operations between source and destination storage devices to a hardware accelerator |
US11232070B2 (en) * | 2019-06-24 | 2022-01-25 | Western Digital Technologies, Inc. | Metadata compaction in a distributed storage system |
KR102714982B1 (ko) | 2019-07-05 | 2024-10-10 | 삼성전자주식회사 | 키-밸류 기반으로 데이터를 저장하는 스토리지 장치 및 이의 동작 방법 |
CN113094292B (zh) | 2020-01-09 | 2022-12-02 | 上海宝存信息科技有限公司 | 数据存储装置以及非挥发式存储器控制方法 |
WO2022267508A1 (zh) * | 2021-06-25 | 2022-12-29 | 华为技术有限公司 | 元数据压缩方法及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103049388A (zh) * | 2012-12-06 | 2013-04-17 | 深圳市江波龙电子有限公司 | 一种分页存储器件的压缩管理方法及装置 |
US8904137B1 (en) * | 2011-05-12 | 2014-12-02 | Symantec Corporation | Deduplication system space recycling through inode manipulation |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8363837B2 (en) * | 2005-02-28 | 2013-01-29 | HGST Netherlands B.V. | Data storage device with data transformation capability |
US8296398B2 (en) * | 2008-04-29 | 2012-10-23 | Overland Storage, Inc. | Peer-to-peer redundant file server system and methods |
US8479080B1 (en) | 2009-07-12 | 2013-07-02 | Apple Inc. | Adaptive over-provisioning in memory systems |
KR101638061B1 (ko) * | 2009-10-27 | 2016-07-08 | 삼성전자주식회사 | 플래시 메모리 시스템 및 그것의 플래시 조각 모음 방법 |
US8140740B2 (en) | 2009-10-29 | 2012-03-20 | Hewlett-Packard Development Company, L.P. | Data defragmentation of solid-state memory |
US10013354B2 (en) * | 2010-07-28 | 2018-07-03 | Sandisk Technologies Llc | Apparatus, system, and method for atomic storage operations |
US9558247B2 (en) | 2010-08-31 | 2017-01-31 | Samsung Electronics Co., Ltd. | Storage device and stream filtering method thereof |
US8850114B2 (en) | 2010-09-07 | 2014-09-30 | Daniel L Rosenband | Storage array controller for flash-based storage devices |
US11232022B2 (en) * | 2010-10-29 | 2022-01-25 | Samsung Electronics Co., Ltd. | Memory system, data storage device, user device and data management method thereof having a data management information matching determination |
US8930614B2 (en) | 2011-07-29 | 2015-01-06 | Kabushiki Kaisha Toshiba | Data storage apparatus and method for compaction processing |
US9298707B1 (en) * | 2011-09-30 | 2016-03-29 | Veritas Us Ip Holdings Llc | Efficient data storage and retrieval for backup systems |
US10803970B2 (en) | 2011-11-14 | 2020-10-13 | Seagate Technology Llc | Solid-state disk manufacturing self test |
KR101824949B1 (ko) | 2011-11-23 | 2018-02-05 | 삼성전자주식회사 | 플래시 메모리를 기반으로 하는 저장 장치 및 그것을 포함한 사용자 장치 |
US8751830B2 (en) * | 2012-01-23 | 2014-06-10 | International Business Machines Corporation | Memory address translation-based data encryption/compression |
US9747293B2 (en) * | 2012-02-28 | 2017-08-29 | Deep Information Sciences, Inc. | Method and system for storage and retrieval of information |
CN104780843A (zh) * | 2012-09-13 | 2015-07-15 | 隆奥克医学技术公司 | 骨矿物质密度测量设备和方法 |
US9448738B2 (en) * | 2013-03-15 | 2016-09-20 | Western Digital Technologies, Inc. | Compression and formatting of data for data storage systems |
US9280570B2 (en) * | 2013-03-28 | 2016-03-08 | Avaya Inc. | System and method for deletion compactor for large static data in NoSQL database |
US8819335B1 (en) | 2013-08-30 | 2014-08-26 | NXGN Data, Inc. | System and method for executing map-reduce tasks in a storage device |
-
2015
- 2015-09-23 US US14/863,438 patent/US10216418B2/en active Active
-
2016
- 2016-03-01 TW TW108119893A patent/TWI706315B/zh active
- 2016-03-01 TW TW105106045A patent/TWI668626B/zh active
- 2016-05-04 CN CN201610289161.6A patent/CN106202138B/zh active Active
- 2016-06-01 KR KR1020160068228A patent/KR102334735B1/ko active IP Right Grant
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8904137B1 (en) * | 2011-05-12 | 2014-12-02 | Symantec Corporation | Deduplication system space recycling through inode manipulation |
CN103049388A (zh) * | 2012-12-06 | 2013-04-17 | 深圳市江波龙电子有限公司 | 一种分页存储器件的压缩管理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
US10216418B2 (en) | 2019-02-26 |
TWI668626B (zh) | 2019-08-11 |
KR102334735B1 (ko) | 2021-12-06 |
TW201937361A (zh) | 2019-09-16 |
KR20160141674A (ko) | 2016-12-09 |
CN106202138A (zh) | 2016-12-07 |
TWI706315B (zh) | 2020-10-01 |
US20160350007A1 (en) | 2016-12-01 |
TW201702860A (zh) | 2017-01-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106202138B (zh) | 用于自主空间压缩的存储设备和方法 | |
US11733871B2 (en) | Tier-optimized write scheme | |
US9612774B2 (en) | Metadata structures for low latency and high throughput inline data compression | |
US10102150B1 (en) | Adaptive smart data cache eviction | |
CA2564844C (en) | Method and system for compression of files for storage and operation on compressed files | |
CN103098035B (zh) | 存储系统 | |
US8554745B2 (en) | Nearstore compression of data in a storage system | |
US7970965B2 (en) | Method and system for compression of data for block mode access storage | |
US11042328B2 (en) | Storage apparatus and method for autonomous space compaction | |
US12067236B2 (en) | Data stability in data storage system | |
GB2536514A (en) | Storage device and method for controlling storage device | |
US10606499B2 (en) | Computer system, storage apparatus, and method of managing data | |
US20050114408A1 (en) | Data management systems, data management system storage devices, articles of manufacture, and data management methods | |
US9600200B1 (en) | Method to extend SSD lifespan in caching applications by aggregating related content into large cache units | |
EP3937000A1 (en) | Key value storage device and method for sorting key | |
US9594635B2 (en) | Systems and methods for sequential resilvering | |
US10474587B1 (en) | Smart weighted container data cache eviction | |
US11372767B2 (en) | Selectively processing storage commands at different granularities based on command types | |
Lee et al. | Boosting compaction in B-tree based key-value store by exploiting parallel reads in flash ssds | |
US20140095558A1 (en) | Computing system and method of managing data thereof | |
Chen et al. | WAL-assisted Tiering: Painlessly Improving Your Favorite Log-Structured KV Store Instead of Building a New One | |
Wei et al. | A Novel Storage Management in Embedded Environment |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | 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 |