内存数据库VS传统数据库:如何在多个任务之间共享内存中的数据?

内存数据库(IMDB)将计算机数据存储在计算机的主存储器中,而不是磁盘驱动器中,以产生更快的响应时间。访问存储在内存中的数据可节省从磁盘查询数据所需的时间。依赖快速响应时间和实时数据管理的应用程序使用内存数据库。受益于内存数据库的行业包括电信,银行,旅行和游戏。内存数据库也称为主内存数据库(MMDB),实时数据库(RTDB)或内存数据库系统(IMDS)。


内存数据库VS传统数据库:如何在多个任务之间共享内存中的数据?_医疗科技_健康险


该图描述了内存数据库的结构


    什么是内存数据库?  


内存数据库将其所有数据保留在计算机的随机存取存储器(RAM)中。查询数据时仅访问主存储器。这样可以比基于磁盘的系统更快地访问该数据。


缺点是RAM的易变性。当内存数据库崩溃时,数据将丢失。非易失性随机存取存储器(NVRAM)的开发可以帮助内存数据库在断电或崩溃后维护数据。闪存就是一个例子,但是主要缺点是限制了闪存可以被擦除和重写的次数。正在开发提供比闪存更持久的内存的NVRAM芯片。


    内存中数据库如何工作?  


内存数据库中的数据存储依赖于计算机的随机存取存储器(RAM)或主存储器,而不是传统的磁盘驱动器。数据以压缩且非关系的格式加载到内存数据库中。数据采用直接可用的格式,没有压缩或加密的障碍。它允许从索引直接导航到行或列,并且是一个只读系统。


内存数据库的速度因缺乏翻译和缓存而得以实现。数据以与包含它的应用程序相同的形式使用。数据访问由内存数据库管理系统管理。


内存数据库系统还可以充当只读分析数据库,用于存储有关商业智能(BI)应用程序度量标准的历史数据。这消除了数据索引编制,从而可以降低IT成本。多核服务器,64位计算和较低的RAM价格使内存分析变得更加普遍。


    为什么要使用内存数据库?  


管理大量数据并需要快速响应时间的应用程序可以受益于内存数据库架构。数据分析行业越来越依赖于内存数据库系统。


内存数据库的好处包括:


更快的交易


没有翻译


多用户并发


内存数据库通常用于:


实时银行,零售,广告,医疗设备分析,机器学习和计费/订户应用


在线互动游戏


地理空间 / GIS处理


处理流式传感器数据


开发嵌入式软件系统


在传输系统,网络交换机和路由器中的应用


满足电子商务应用程序的要求


    内存数据库与传统数据库  


内存数据库与传统磁盘数据库的比较包括速度,容量和易变性。内存数据库将所有数据保留在计算机的主内存或RAM中。传统数据库从磁盘驱动器检索数据。


内存数据库比传统数据库更快,因为它们需要较少的CPU指令。它们还消除了从磁盘访问数据所花费的时间。


内存数据库比传统数据库更易变,因为断电或计算机RAM崩溃时数据会丢失。可以更轻松地从传统数据库的磁盘还原数据。


传统数据库由在其上读取和写入数据的磁盘驱动器格式化。当传统数据库的一部分引用另一部分时,必须从磁盘读取其他块。对于内存数据库,可以通过直接指针管理数据库的不同部分。


内存数据库允许实时分析和报告数据。


当系统为添加到系统中的每个组件创建数据副本时,传统的数据库会存储冗余数据。


    如何实现内存数据库?  


为避免因断电或计算机崩溃而丢失数据的风险,请使用非易失性随机存取存储器(NVRAM)增强内存数据库。尽管闪存成本高昂并且可以重写内存的次数有限,但仍是常用的闪存。这可以帮助内存数据库在断电或崩溃后维护数据。闪存就是一个例子,但是主要缺点是限制了闪存可以被擦除和重写的次数。


从闪存读取数据库比使用磁盘驱动器快。这就是为什么开发NVRAM芯片提供比闪存更持久的内存的原因。


    什么是内存数据库管理系统?  


内存数据库(IMDB;也称为主内存数据库系统或MMDB)存储在计算机的主内存(RAM)中,并由内存数据库管理系统进行管理。传统数据库存储在磁盘驱动器上。


内存数据库VS传统数据库:如何在多个任务之间共享内存中的数据?_医疗科技_健康险


传统的基于磁盘的数据库在格式化时会考虑到面向块的设备,在该设备上读写数据。当数据库的一部分引用另一部分时,可能需要从磁盘读取不同的块。这在内存数据库中不是问题,可以通过直接指针管理数据库各部分之间的相互关系。内存中数据始终存在,因此没有读取延迟。将数据写入磁盘必须以“原子”方式完成,在该方式中,所有写操作都已注册,或者没有写入。这通常需要日记或重复写入。内存数据库没有这种要求,因此对内存的更改几乎是即时的。


    磁盘数据库与内存数据库  


 磁盘数据库


所有数据都存储在磁盘上,并在需要时将磁盘I / O移到主存储器中。


数据始终保存在磁盘上。


传统的数据结构(例如B树)旨在将表和索引有效地存储在磁盘上。


支持非常广泛的工作负载,例如OLTP,数据仓库,混合工作负载等。


 内存数据库


所有数据存储在主存储器中,无需执行磁盘I / O即可查询或更新数据。


数据是持久性还是易失性,取决于内存数据库产品。


专用数据结构和索引结构假定数据始终位于主存储器中。


针对高性能进行了优化。


    在内存数据库管理系统中如何访问和更改数据?  


RDM内存数据库中的数据“准备就绪”。在磁盘块中的数据可以被压缩,加密,扁平化或编码的情况下,内存中的数据采用直接可用的格式。它还具有独立于磁盘阻塞问题的结构,允许直接从列到列,行到行或索引到行导航,从而允许通过分配内存块和重新排列指针来实现更改。


    如何在多个任务之间共享内存中的数据?  


答案是双重的:越来越快。对于熟悉RDM事务性文件服务器(TFS)(可用于在同一计算机,办公室LAN或全球范围内的用户进程之间共享数据库)的人员来说,该数据库可以由TFS在内存中进行管理。这比TFS管理的磁盘数据库快。


但是,在多个任务之间共享一个数据库的最快方法是使用多个线程运行一个进程,其中每个任务都在自己的线程中运行。这种形式的应用程序在一台计算机上运行,并允许每个线程直接在本地堆存储中访问数据库。它还避免了将未更改的数据库对象读入本地缓存的需求,因为可以直接从数据库内存中查看原始对象。这是在多用户模式下共享数据库的非常快速的方法。


    可以在内存中使用磁盘数据库吗?  


使用RDM时,答案是“是!”。内存数据库在打开时可以从磁盘加载,在关闭数据库或请求“保存点”时也可以保存到磁盘。保存点是原子的,这意味着自上一个保存点以来对数据的所有更改都一起写入磁盘,或没有写入。这使它们具有事务性,但与磁盘数据库不在同一事务边界上。


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


根据定义,内存数据库处理在主内存中处理的数据。无需处理二级存储,二级存储的速度可能比访问主存储器中保存的数据慢几个数量级。消除了访问速度较慢的辅助存储的需求,从而允许在内存数据库中使用基于磁盘的数据库不可行的算法。例如,基于磁盘的数据库通常使用基于b树的索引来限制定位行所需的磁盘访问次数。内存数据库可以使用AVL树代替b树,从而减少(或消除)重复数据的需求,但增加遍历过程中访问的行数。


如果某些东西停止工作,内存中的数据库可能会遭受数据丢失:您如何处理这种情况?


应用程序开发人员需要理解,在使用内存中的数据库时可能会出现数据丢失。有几种方法(如持久性和复制)可用于减轻数据丢失的场景,但数据丢失仍然是可能的。


 持久性


Raima支持在内存中打开数据库的两种模式。


Volatile—第一次打开数据库时为空,关闭数据库时丢弃所有内容


•持久性——在打开数据库时,从辅助存储上的内容填充,在关闭时,更改的数据(插入、更新、删除)被写入辅助存储


如果使用持久内存模式打开数据库,那么在关闭数据库时,更改的内容将自动写入辅助存储。此外,开发人员可以根据需要将更改持久化到辅助存储。使用


持久性可以将数据丢失限制为自上次持久性操作以来发生的数据丢失。


 复制


许多数据库系统支持将更改复制到另一个数据库实例(或另一个数据库系统)。使用复制可以从复制的副本中恢复可能从内存中的副本中丢失的数据。


所有的嵌入式数据库也是内存中的数据库吗?


嵌入式数据库可以定义为在应用程序中运行且不需要安装、配置或访问其他进程的数据库引擎。由引擎管理的数据的存储媒体依赖于实现。


最初,大多数数据库引擎使用硬盘来存储数据,因为可用的内存量不允许为有用的数据集提供足够的数据量。随着内存大小的增加,许多供应商开始增加内存中的功能。如今,许多数据库引擎,无论是嵌入式的还是传统的,都对内存中提供了一些支持。


    Raima如何在RDM中实现内存中的数据库系统?  


Raima RDM数据库引擎分为两个组件:运行时引擎和存储引擎。


运行时负责事务管理、规则实施、查询处理和维护数据库的本地未提交更改。每当运行时引擎需要数据库对象时,它就从存储引擎请求该对象。此外,当提交运行时中的本地更改时,它们将被提供给存储引擎,存储在数据库的所有用户共享的位置上。运行时引擎不知道或不关心存储引擎是使用主存还是辅助存储。


存储引擎可以看作是一个键/值对存储库。键是数据库对象标识符,值是数据库对象的位置。对于基于磁盘的数据库,这些值将是文件标识符、文件偏移量和大小,对于内存数据库,这些值将是数据库对象的内存位置。


对象本身可能被编码、压缩和加密,但是运行时引擎将知道如何解释内容。


通过维护这个抽象,应用程序开发人员不需要做任何事情,只需要指定一个预先打开的配置参数就可以使用内存中的RDM数据库。应用程序、运行时和存储引擎都可以运行在相同的内存空间中,提供非常低的访问延迟。如果开发人员知道数据库将主要在内存中使用,他们可以利用AVL索引等方法来优化内存中的访问。


57
6
0
94

相关资讯

  1. 1、Win1020H2系统怎么精减优化?2988
  2. 2、怎么获取支付宝赏个脸呗红包支付宝赏个脸呗红包获取教程908
  3. 3、Win10SysMain服务禁用?Win10SysMain服务禁用方法3403
  4. 4、Share微博怎么设置背景?更换方法了解一下3027
  5. 5、电脑连不上wifi但是手机可以连得上如何解决?4263
  6. 6、网易云音乐怎么设置定时关机?网易云音乐定时关机设置方法简述1746
  7. 7、Win7系统桌面上图标删不掉怎么办?2243
  8. 8、怎么开启2345加速浏览器的过滤弹窗广告?341
  9. 9、怎么使用Word快速隐藏数字?Word快速隐藏数字方法教学4456
  10. 10、小米max3怎么调节屏幕亮度?小米max3调节屏幕亮度的方法1908
全部评论(0)
我也有话说
0
收藏
点赞
顶部