内存数据库系统全面解析,内存数据库管理系统 (IMDBMS) 是一种主要依赖主内存进行数据存储、管理和操作的数据库管理系统 ( DBMS ) 。这消除了硬盘存储的延迟和开销,并减少了访问数据所需的指令集。为了实现更有效的存储和访问,数据可以以压缩格式存储。
传统 DBMS 在访问数据时将数据从磁盘移动到缓存或缓冲池中的内存。将数据移动到内存可以更有效地重新访问数据,但不断需要移动数据会导致性能问题。由于 IMDBMS 中的数据已经驻留在内存中并且不必移动,因此可以显着提高应用程序和查询性能。
内存数据库系统全面解析
内存数据库 (IMDB) 将计算机数据存储在计算机的主内存而不是磁盘驱动器中,以产生更快的响应时间。访问存储在内存中的数据消除了从磁盘查询数据所需的时间。依赖快速响应时间和实时数据管理的应用程序使用内存数据库。受益于内存数据库的行业包括电信、银行、旅游和游戏。内存数据库也称为主内存数据库 (MMDB)、实时数据库 (RTDB) 或内存数据库系统 (IMDS)。
什么是内存数据库?
内存数据库将其所有数据保存在计算机的随机存取存储器 (RAM) 中。查询数据时只访问主存。与基于磁盘的系统相比,这允许更快地访问该数据。
缺点是 RAM 的波动性。当内存数据库崩溃时,数据会丢失。非易失性随机存取存储器 (NVRAM) 的开发可以帮助内存数据库在断电或崩溃后保持数据。闪存就是一个例子,但一个主要的缺点是闪存可以擦除和重写的次数有限。正在开发的 NVRAM 芯片可提供比闪存更持久的内存。
内存数据库如何工作?
内存数据库中的数据存储依赖于计算机的随机存取内存 (RAM) 或主内存,而不是传统的磁盘驱动器。数据以压缩和非关系格式加载到内存数据库中。数据采用直接可用的格式,没有压缩或加密的障碍。它允许从索引直接导航到行或列,并且是一个只读系统。
由于缺乏翻译和缓存,内存数据库的速度成为可能。数据以与包含它的应用程序相同的形式使用。数据访问由内存数据库管理系统管理。
内存数据库系统还可以充当只读分析数据库,用于存储有关商业智能 (BI) 应用程序指标的历史数据。这消除了数据索引,从而可以降低 IT 成本。多核服务器、64 位计算和更低的 RAM 价格使内存分析变得更加普遍。
为什么要使用内存数据库?
管理大量数据并需要快速响应时间的应用程序可以从内存数据库架构中受益。数据分析行业越来越依赖于内存数据库系统。
内存数据库的好处包括:
- 更快的交易
- 没有翻译
- 多用户并发
内存数据库通常用于:
- 实时银行、零售、广告、医疗设备分析、机器学习和计费/订户应用
- 在线互动游戏
- 地理空间/地理信息系统处理
- 流传感器数据的处理
- 开发嵌入式软件系统
- 在传输系统、网络交换机和路由器中的应用
- 满足电子商务应用需求
内存数据库 vs 传统数据库?
内存数据库与传统磁盘数据库的比较包括速度、容量和波动性。内存数据库将所有数据保存在计算机的主内存或 RAM 中。传统数据库从磁盘驱动器检索数据。
内存数据库比传统数据库更快,因为它们需要更少的 CPU 指令。它们还消除了从磁盘访问数据所需的时间。
内存数据库比传统数据库更不稳定,因为在断电或计算机 RAM 崩溃时数据会丢失。可以更轻松地从传统数据库的磁盘中恢复数据。
传统数据库由读写数据的磁盘驱动器格式化。当传统数据库的一部分引用另一部分时,必须从磁盘读取不同的块。使用内存数据库,可以通过直接指针管理数据库的不同部分。
内存数据库允许实时分析和报告数据。
传统数据库存储冗余数据,因为系统会为添加到系统的每个组件创建数据副本。
如何实现内存数据库?
为避免在停电或计算机崩溃时丢失数据的风险,请使用非易失性随机存取存储器 (NVRAM) 增强内存数据库。闪存是常用的,尽管其成本高且存储器可重写的次数有限。这可以帮助内存数据库在断电或崩溃后维护数据。闪存就是一个例子,但一个主要的缺点是闪存可以擦除和重写的次数有限。
从闪存读取数据库比使用磁盘驱动器更快。这就是为什么正在开发可提供比闪存更持久内存的 NVRAM 芯片的原因。
为确保 IMDBMS 中数据的持久性,必须定期将其从内存移动到持久性、非易失性存储。这很重要,因为存储在内存中的数据不会在中断后继续存在。有多种方法可以实现数据持久化。一种选择是事务日志,其中将内存数据库的定期快照写入非易失性存储介质。如果系统出现故障并且必须重新启动,则可以将数据库回滚或转发到最后一个完成的事务。
维护数据持久性的另一种选择是在非易失性介质上创建数据库的附加副本。另一种选择是利用非易失性 RAM ( NVRAM ),例如由电池或铁电 RAM ( FeRAM )备份的电池RAM,它可以在电源关闭时保持数据。将数据存储在硬盘驱动器和内存芯片上的混合 IMDBMS也是一种选择。
内存数据库系统具有广泛的用途,但主要用于需要高性能的实时应用程序。IMDBMS 的用例包括具有实时数据管理要求的应用程序,例如电信、金融、国防和情报。需要实时数据访问的应用程序,包括呼叫中心应用程序、旅行和预订应用程序以及流媒体应用程序,也是 IMDBMS 的良好候选者。
尽管 IMDBMS 产品还可以管理其他类型的数据库。
内存数据库
一个内存数据库(IMDB)是一种计算机系统,存储和检索数据记录驻留在计算机的主存储器,例如随机存取存储器(RAM)。对于 RAM 中的数据,IMDB 比传统的基于磁盘的数据库具有速度优势,而传统的基于磁盘的数据库会导致访问延迟,因为硬盘驱动器和固态驱动器 (SSD) 等存储介质的访问时间比 RAM 慢得多。这意味着 IMDB 在快速读取和写入数据至关重要的情况下非常有用。
值得注意的是,IMDB 的概念并不意味着存储数据的结构。换句话说,IMDB 可以存储关系(表格)数据、文档数据、键值数据,甚至是组合。
内存数据库如何工作?
IMDB 的工作原理是将所有数据保存在 RAM 中。这是将数据存储在 RAM 中而不是磁盘或 SSD 中的介质。IMDB 本质上用 RAM 访问替换了基于磁盘的数据库的磁盘访问组件。在某些 IMDB 中,基于磁盘的组件保持不变,但 RAM 是主要存储介质。由于 RAM 是易失性的(例如,如果计算机断电,数据就会丢失),一些 IMDB 还将数据存储在磁盘上,作为一种预防措施,以最大限度地降低数据丢失的风险。
大多数 IMDB 还通过在集群中的多台计算机中保存所有数据记录的副本(“副本”)来防止单个数据中心中的数据丢失(称为“高可用性”的能力)。这种数据冗余可确保任何给定计算机发生故障时不会丢失任何数据记录。
内存数据库示例用例
一个示例用例是需要在任何给定时间为数十万客户存储购物车内容的高流量电子商务网站。对于许多基于磁盘的数据库而言,这种规模的响应时间太慢,因此使用 IMDB 来跟上负载并确保积极的客户体验。
另一个用例涉及商业智能 (BI) 分析,其中以可视方式(即在仪表板中)检索和呈现数据。许多类型的业务用户希望查看以多种方式呈现的数据,以及深入了解更多数据细节。为了有效地做到这一点,他们利用可以快速交付数据的内存数据库,让用户花更多的时间分析和制定决策,减少等待系统响应的时间。
内存数据库的替代品
再举一个例子,内存缓存系统用于加速对慢速数据库(尤其是基于磁盘的)的访问,实质上是模拟 IMDB 的性能。虽然这些缓存不是真正的 IMDB,因为它们不会长期存储数据,但它们与基于磁盘的数据库一起工作,作为(主要)功能等效于 IMDB。IMDB 临时存储驻留在底层数据库中的经常访问的数据,以便将这些数据更快地交付给应用程序。Hazelcast IMDG 通常用作缓存系统,用于加速访问驻留在基于磁盘的数据库中的数据。