令人惊叹的是,在过去的 50-60 年中,科技行业仅产生了大约 6-7 类内存技术。即便如此,这些内存类别中的每一个都为我们存储和检索数据的方式带来了不同的属性。从早期的 RAM 到 SRAM、DRAM、NAND 闪存,再到现在的固态硬盘 (SSD) 和 NVMe (Non-Volatile Memory Express),我们已经看到了数据存储选项在速度、密度和稳定性方面的显着改进。
Redis on Flash (RoF) 利用了 Flash SSD 形式的高速存储日益普及的优势,重置了现有的性价比预期。通过将 Redis 从 RAM 扩展到 Flash,并使用智能分层始终将热值保存在 RAM 中,RoF 达到了新的吞吐量水平,同时仍保持亚毫秒级的延迟。通过这项创新,存储在 Redis 中的数据的经济性发生了彻底改变。
我们已经看到许多客户从这种方法中受益。例如,Whitepages 使用我们的 Redis on Flash 解决方案来存储和查询数 TB 的数据 - 热值和键在 RAM 中,冷值在经济高效的基于闪存的 SSD 中。这种架构使他们只需将 30% 的数据集保存在 RAM 中,仍然可以从 Redis (on Flash) 获得小于亚毫秒级的延迟。事实上,他们维持了 <100 毫秒的端到端应用程序延迟。这种 RAM 消耗的显着减少每年为 Whitepages 节省了数十万美元的基础设施成本。
在过去的几年里,英特尔和美光一直在研究一种全新的存储和内存技术,该技术基于 3D XPoint™,速度更快、密度更高且非易失性。他们的目标是通过将更多数据放在靠近非易失性介质上的处理器附近,从而提高整体系统性能并降低延迟。在 Redis,我们一直在与英特尔密切合作,以确保我们的解决方案能够以最佳方式运行并与这项新技术配合使用。我们首先对基于 3D XPoint™ 技术的 NVMe SSD 卡英特尔傲腾上的 RoF 进行了基准测试,并看到了比标准基于 NVMe 的 SSD 解决方案显着的性能提升。在过去的几个月里,我们一直在调整 RoF 的基准,使其与基于 NVDIMM 的新型 3D XPoint 技术配合使用。
基于 3D XPoint 技术的英特尔持久内存在 DRAM 和 SSD 之间提供了一个新的层,可以在双路服务器中提供高达 6TB 的容量,其性能与传统 DRAM 内存相当。此外,英特尔一直在与业界合作,为 Linux 和 Windows 环境创建一个新的编程语言模型,这将允许应用程序直接且持久地与内存中的数据交互。这意味着像 RoF 这样的应用程序可以决定数据集的哪一部分将完全保留在 DRAM 中,哪一部分可以同时托管在 DRAM 和 3D XPoint™ 上。作为这项工作的一部分,我们重新设计了我们的 RoF 代码路径,以最大限度地提高这项新技术带来的性能提升。我们在主 Redis 线程中使用嵌入式存储引擎,并使用英特尔的 DAX访问 NVDIMM。这有助于减少内部瓶颈并消除与 Redis 主线程和用于运行存储引擎的 I/O 线程之间的上下文切换相关的开销。
最终结果是 - Redis on Flash 用户可能会看到与 DRAM 相当的性能,即使超过 80% 的数据集存储在 NVDIMM 上。这转化为显着降低的总体拥有成本。
为什么这对 Redis 用户很重要?
持久内存允许您将内存视为数据的主要存储层。以新型英特尔 NVDIMM 技术所承诺的速度运行将改变 Redis 用户的游戏规则。当它开始与服务器一起发货时,客户不仅会获得快速、持久的数据存储,并且更接近 CPU 和内存。使用 RoF,他们还将能够扩展他们的“内存”。
此外,如果 Redis 用户由于内存成本而限制了自己,那么这种想法即将改变。将数据保存在内存中将变得更加便宜。新的持久内存层允许您在每个节点上保留更多数据,从而在保持性能的同时显着降低基础设施成本。
这是否意味着不仅 Redis,而且所有其他 DBMS 现在都可以享受 3D XPoint™ 技术带来的新速度?
实际上,这是一种误解,因为您的 DBMS 必须经过优化才能与这项新技术配合使用。事实上,当我们第一次开始使用 3D XPoint™ 时,我们发现与我们在英特尔傲腾™(基于 3D XPoint™ 的基于 NVMe 的 SSD 卡)上所做的测试相比,对性能没有任何影响。这是由于我们的整个软件堆栈和存储引擎并非旨在以这种持久内存的速度工作。也就是说,由于 Redis 基于内存引擎(其所有数据结构都是字节可寻址的,没有特殊的序列化/反序列化过程),因此相对容易地使 RoF 堆栈与 NVDIMM(其设计也是字节可寻址的)配合使用。
现有的基于磁盘的数据库将其整个引擎构建在并非设计为字节可寻址的存储引擎上。它们的序列化/反序列化开销以及对其内部基于磁盘的数据结构的长时间访问将阻止它们在运行于这项革命性技术之上时获得预期的性能提升。
将大部分处理基础设施转移到 3D Xpoint™ 技术不会在一夜之间发生,但这是一个您需要做好准备的事件。我们相信,一旦 3D Xpoint™ 技术成为主流,大多数数据库市场都将不得不转向内存。将不再有任何理由继续使用基于磁盘的数据库。作为开发人员或软件架构师,您应该开始考虑将您的应用程序代码迁移到与内存数据库(如 Redis)原生协作。您越早这样做,就越能让自己在竞争中占据优势。