什么是内存中数据库?

内存中数据库将组织或个人的所有数据存储在计算机的主内存中。

数据分析速度在内存中数据库上快于使用辅助存储设备的传统数据库。这些辅助存储设备包括硬盘或固态设备。计算机的中央处理器 (CPU) 只能直接访问存储在主存储器中的数据。因此,计算机在主存储器中读取/写入数据的速度比辅助存储器中的数据快得多。这使得内存中数据库的速度非常快。

内存中数据库图

组织将内存中数据库用于需要高速数据库操作的应用程序。广告位的实时竞价就使用了内存中数据库。在实时广告竞价中,竞价平台会在用户加载网页的同时放置一个广告位进行拍卖。实时竞价平台从多个投标者那里收集报价数据,基于几条规则选择中标,并显示中标者的广告。所有这些都必须在网页加载的几毫秒内发生。内存中数据库可帮助实时竞价平台在几毫秒的延迟内执行所有这些数据操作。

为什么组织需要内存中数据库?

随着物联网 (IoT) 的出现和基于云的解决方案的发展,组织需要实时处理数据。健康和安全监视器等数百万台设备每秒都会生成数据。实时分析这些数据至关重要。组织需要高性能的数据库解决方案来处理其实时数据。内存中数据库还可以通过加快数据库操作来帮助组织提高生产效率。它还可以帮助他们利用大数据的优势。如果组织需要以下其中一项,则应考虑采用内存中数据库:

  • 组织需要利用大数据的实时优势。
  • 组织定期收集数据,并需要快速访问。
  • 数据持久性对组织来说不是大问题。
O'Reilly 报告:构建统一的数据基础架构
O'Reilly 报告:构建统一的数据基础架构
只有三分之一的企业发展成为数据驱动型组织。解决方案是什么?在这本电子书中找到答案!

内存中数据库与磁盘数据库

  • 与传统的磁盘数据库相比,内存中数据库的读取/写入速度更快。在传统数据库中,每个数据库操作都需要从磁盘写入/读取,这涉及到输入/输出 (IO) 操作。这个额外的过程减慢了磁盘数据库的速度。
  • 与内存数据库中的数据相比,传统的磁盘数据库中的数据是永久性的。内存中数据库使用的主内存是易失性的。如果系统出现故障,数据可能会丢失。内存中数据库采用了各种技术来克服数据波动问题。
  • 在传统数据库中,用于存储数据的结构很复杂。这是为了确保能够有效通过磁盘进行数据访问。通常,随机访问辅助存储设备要花很长时间。传统数据库采用了各种数据结构(如 B-Tree)来克服此问题。而内存数据库的存储结构就很简单,因为从主内存中随机访问数据非常高效。
  • 传统的磁盘数据库只能在具有辅助存储设备的系统中运行。许多嵌入式设备不支持辅助存储。内存中数据库可以在这些嵌入式设备的主内存上高效运行。在物联网领域工作的组织通常会因为此功能而选择内存数据库。
  • 内存数据库更适合数据要求较低的应用程序。尽管内存容量有了显著增加,但仍局限于数千兆字节。在传统的磁盘数据库中,就没有这样的限制。它们可以对容量多达几 TB 的数据进行操作。

内存中数据库如何确保数据持久性?

保证 ACID 属性是每个数据库的先决条件:

  • 原子性
  • 一致性
  • 隔离性
  • 持久性

虽然内存中数据库保证前三个属性,但还需要采取其他步骤来确保持久性。此属性规定,即使系统或电源出现故障,所有数据也应保持不变。内存数据库基于易失性主内存。易失性存储器的设计方式是,如果系统关机,所有数据都将丢失。内存中数据库采用了各种技术来确保在断电或系统故障后数据不会被删除。

快照

内存中数据库创建数据库的定期快照并将其存储在磁盘驱动器(非易失性)中。此数据库快照是整个数据库在特定时间点的副本。虽然定期创建快照是保留数据的一种方法,但它可能无法确保持久性。保存快照后,总是有可能出现系统故障。创建快照之后的所有更改都将丢失。

事务日志记录

在此方法中,内存中数据库记录对数据库所做的每一次修改。这些事务日志将包含每个插入和修改操作的详细信息。它存储在非易失性文件中,该文件可用于在发生故障时恢复数据库。在每分钟执行数千次操作的数据库中,事务日志记录会增加系统的性能和存储容量开销。大多数内存数据库都会保留事务日志,在创建快照后就将其丢弃。

非易失性随机存取存储器 (NVRAM)

确保数据持久性的另一种方法是使用非易失性随机存取存储器。即使关闭电源,NVRAM 仍会保留数据。NVRAM 是一种常用的解决方案,内存中数据库用其来实现数据持久性。内存中数据库使用电池供电的静态内存或电可擦除可编程只读存储器 (EEPROM)。

了解用于治理、管理和使用所有共享数据资产的单一解决方案
了解用于治理、管理和使用所有共享数据资产的单一解决方案
通过一体化方法来管理整个企业的数据资产,避免孤岛。

内存中数据库的基本功能

随着实时应用程序的增加,对内存中数据库的需求也随之增加。市场上有多种内存中数据库。有时很难选择完美的内存中数据库解决方案。内存中数据库应具备以下基本功能才能在当前各市场方案中发挥作用。

云迁移就绪

大多数组织都开始转向云端,并青睐软件即服务 (SAAS) 业务模式。内存中数据库还需要能够支持云模式。这意味着内存中数据库应作为数据库即服务提供。借助数据库即服务,开发人员和用户可以按需使用共享的数据库资源池。一旦完成后,数据库资源将返回到资源池。云就绪型内存中数据库快速、可扩展且灵活。

物联网就绪

如果组织想要开拓物联网市场,就需要一个专门支持物联网市场的实时数据库。物联网包括数百个持续发送实时数据的传感器(如健康和安全监视器)。内存中数据库应该可以处理全球各地众多传感器发送的数百万条消息。内存中数据库应能非常快速地存储和检索这些数据,以便分析能够快速得出决策。

符合 ACID 标准

每个数据库都应满足原子性、一致性、隔离性和持久性的要求。这些功能对于数据完整性至关重要。从业务角度来看,拥有一个符合 ACID 属性的数据库将有助于组织做出正确的决策。使用不具备 ACID 属性的内存中数据库的专有实施方案可能会导致数据不准确和决策错误。请务必慎重选择。

内存中数据库的优势是什么?

性能

内存中数据库将数据存储在计算机的主内存中,处理器可以直接访问这些内存。内存中数据库的读写操作比传统的磁盘数据库快得多。

简单

传统数据库的存储要求很复杂,因为它们需要优化辅助存储设备上的读取/写入操作。这包括将数据存储在连续磁盘块上的逻辑,检索因此很方便。而使用内存中数据库,随机访问非常高效。因此,存储内存中数据库的数据结构非常简单。

在嵌入式系统中使用

内存中数据库不需要辅助存储设备。在当前流动性很高的情况下,这一特性非常有用。游戏机或智能电视等嵌入式设备无法提供辅助存储设备。因此,它们可以使用内存中数据库。现今物联网已经变得非常流行,但却无法使用辅助存储设备,因此这一特性非常重要。

内存中数据库的缺点是什么?

数据持久性

尽管随机存取内存有助于高速数据操作,但内存中数据库很容易丢失数据。内存中数据库中的数据只是临时存储的。如果系统崩溃,就有可能丢失数据。

解决方案:我们在前面的章节中已经了解了内存中数据库如何使用不同的技术(如快照、事务日志和非易失性随机存取内存)来解决数据持久性问题。

数据容量

由于计算机的随机存取内存容量有限(通常以千兆字节为单位),因此内存中数据库可能无法处理海量数据需求。

解决方案:此问题有多种解决方案。通过网格连接多台计算机以增加主内存的容量是解决容量问题的一种方法。此外,对于多核计算机,我们可以扩展随机存取内存的大小。