关于nosql:TcaplusDB知识库TcaplusDB的存储分配策略图解

41次阅读

共计 1122 个字符,预计需要花费 3 分钟才能阅读完成。

前言

保留数据的办法多种多样,最间接的办法是在内存中建一个数据结构,保留数据。比方用一个 List,每当收到一条数据就向 List 中追加一条记录。

这个计划非常简单,性能良好,但问题是数据寄存在内存中,一旦服务器停机或重启,数据就会永恒失落。

为了解决数据失落问题,能够把数据长久化寄存在非易失存储介质(比方硬盘)中。能够应用磁盘的文件,每当收到一条数据就向文件中 Append 一行。这是一个长久化存储数据的解决方案,但如果磁盘损坏呢?RAID 是一个单机冗余存储计划,那如果主机损坏呢?

网络存储是一个解决方案,通过软件层进行存储正本的复制。仿佛咱们能够解决数据安全问题,然而做存储正本复制过程中是否能保障正本之间的一致性?

TcaplusDB 的开发人员思考到了这些存储问题,在本期的知识库中,TcaplusDB 君将介绍 TcaplusDB 的存储调配策略,对于数据的读写逻辑咱们将会在下期的知识库中进行介绍。

存储空间调配的根本策略

  • TcaplusDB 优先应用数据文件的前 1G 的空间。起因是存储引擎启动时,会将数据文件的前 1G 空间通过 mmap 映射到内存中,拜访效率较高,而残余的空间中数据是间接对接文件 IO 的形式拜访的;
  • 数据的 Key 比数据的 Value 更有权力优先应用前 1G 的空间。起因是通常状况下 Key 的拜访频率要比 Value 高。以后 1G 空间中原先调配给 Key 应用的闲暇块有余时,会将前 1G 空间中原先调配给 Value 应用的闲暇块挪给 Key 应用;
  • 所有数据的 Key 尽量寄存在一起。这是因为咱们有很多 Key 遍历的场景(比方数据迁徙),Key 放在一起,能够肯定水平上放慢遍历的过程,缩小磁盘 IO;
  • 闲暇块的查找策略为 Best-Fit,即找满足需要的最小闲暇块,目标是为了尽可能的让数据存在同一块中,防止数据的 Split。

存储空间的具体调配过程参见下图(下图拆分成了两个局部,两幅图通过虚线框的”尝试从文件空间调配“节点分割在一起):

<center> 存储空间具体调配过程图 <center/>

<center> 从文件空间中调配图 <center/>

策略设计的思考

存储引擎依据空间调配策略,会先调配数据 Value 的存储空间,写入数据 Value 局部后,再调配数据 Key 的存储空间,并写入数据 Key 局部。之所以是这样的程序,有两方面的起因:

  • 数据 Key 的头部须要记录它所指向的 Value 的存储地址,须要先调配 Value 的存储空间,失去 Value 的存储地址头,再写 Key;
  • 数据拜访入口是 Key,依照这个程序,Key 写胜利,咱们也根本能够认为 Value 也是写胜利了,能够缩小数据不统一的状况。

最初

咱们曾经理解了 TcaplusDB 的存储调配策略,后续咱们将揭开更多 TcaplusDB 设计的非凡神秘。

正文完
 0