(注:部分资料直接来源于Internet)
1. 内存数据库简介
1.1 概念
一、什么是内存数据库
传统的数据库管理系统把所有数据都放在磁盘上进行管理,所以称做磁盘数据库(DRDB:Disk-Resident Database)。磁盘数据库需要频繁地访问磁盘来进行数据的操作,由于对磁盘读写数据的操作一方面要进行磁头的机械移动,另一方面受到系统调用(通常通过CPU中断完成,受到CPU时钟周期的制约)时间的影响,当数据量很大,操作频繁且复杂时,就会暴露出很多问题。
近年来,内存容量不断提高,价格不断下跌,操作系统已经可以支持更大的地址空间(计算机进入了64位时代),同时对数据库系统实时响应能力要求日益提高,充分利用内存技术提升数据库性能成为一个热点。
在数据库技术中,目前主要有两种方法来使用大量的内存。一种是在传统的数据库中,增大缓冲池,将一个事务所涉及的数据都放在缓冲池中,组织成相应的数据结构来进行查询和更新处理,也就是常说的共享内存技术,这种方法优化的主要目标是最小化磁盘访问。另一种就是内存数据库(MMDB:Main Memory Database,也叫主存数据库)技术,就是干脆重新设计一种数据库管理系统,对查询处理、并发控制与恢复的算法和数据结构进行重新设计,以更有效地使用CPU周期和内存,这种技术近乎把整个数据库放进内存中,因而会产生一些根本性的变化。两种技术的区别如下表:
内存数据库系统带来的优越性能不仅仅在于对内存读写比对磁盘读写快上,更重要的是,从根本上抛弃了磁盘数据管理的许多传统方式,基于全部数据都在内存中管理进行了新的体系结构的设计,并且在数据缓存、快速算法、并行操作方面也进行了相应的改进,从而使数据处理速度一般比传统数据库的数据处理速度快很多,一般都在10倍以上,理想情况甚至可以达到1000倍。
而使用共享内存技术的实时系统和使用内存数据库相比有很多不足,由于优化的目标仍然集中在最小化磁盘访问上,很难满足完整的数据库管理的要求,设计的非标准化和软件的专用性造成可伸缩性、可用性和系统的效率都非常低,对于快速部署和简化维护都是不利的。
2. 内存数据库历史和发展
一、雏形期
从上个世纪60年代末到80年代初。在这个时期中,出现了主存数据库的雏形。1969年IBM公司研制了世界上最早的数据库管理系统------基于层次模型的数据库管理系统IMS,并作为商品化软件投入市场。在设计IMS时,IBM考虑到基于内存的数据管理方法,相应推出了IMS/VS Fast Path。Fast Path是一个支持内存驻留数据的商业化数据库,但它同时也可以很好地支持磁盘驻留数据。在这个产品中体现了主存数据库的主要设计思想,也就是将需要频繁访问,要求高响应速度的数据直接存放在物理内存中访问和管理。在这个阶段中,包括网状数据库、关系数据库等其他各种数据库技术也都逐渐成型。
二、技术理论成熟期
1984年,D J DeWitt等人发表了《主存数据库系统的实现技术》一文。第一次提出了Main Memory Database(主存数据库)的概念。预言当时异常昂贵的计算机主存价格一定会下降,用户有可能将大容量的数据库全部保存在主存中,提出了AVL树、哈希算法、主存数据库恢复机制等主存数据库技术的关键理论,为主存数据库的发展指出了明确的方向 。
1984年,D J DeWitt等人提出使用非易逝内存或预提交和成组提交技术作为主存数据库的提交处理方案,使用指针实现主存数据库的存取访问。
1985年,IBM推出了IBM 370上运行的OBE主存数据库
1986年,RB Hagman提出了使用检查点技术实现主存数据库的恢复机制。威斯康星大学提出了按区双向锁定模式解决主存数据库中的并发控制问题。并设计出MM-DBMS主存数据库。贝尔实验室推出了DALI主存数据库模型。
1987年,ACM SIGMOD会议中提出了以堆文件(HEAP FILE)作为主存数据库的数据存储结构。Southern Methodist大学设计出MARS主存数据库模型。
1988年普林斯顿大学设计出TPK主存数据库。
1990年普林斯顿大学又设计出System M主存数据库。
三、产品发展期和市场成长期
随着互联网的发展,越来越多的网络应用系统需要能够支持大用户量并发访问、高响应速度的的数据库系统,主存数据库市场成熟
半导体技术快速发展,半导体内存大规模生产,动态随机存取存储器(DRAM)的容量越来越大,而价格越来越低,这无疑为计算机内存的不断扩大提供了硬件基础,使得主存数据库的技术可行性逐步成熟
1994年美国OSE公司推出了第一个商业化的,开始实际应用的主存数据库产品Polyhedra
1998年德国SoftwareAG推出了Tamino Database。
1999年日本UBIT会社开发出XDB主存数据库产品。韩国Altibase推出Altibase
2000年奥地利的QuiLogic公司推出了SQL-IMDB
2001年美国McObject推出eXtremeDB。加拿大Empress公司推出EmpressDB
四、几种主存技术应用的比较
第一代:用户定制的主存数据库。通过应用程序来管理内存和数据;不支持SQL语句, 不提供本地存储, 没有数据库恢复技术;性能好但很难维护和在别的应用中不能使用;应用在实时领域比如工厂自动化生产。
第二代:简单功能的内存数据库。能够快速处理简单的查询;支持部分的 SQL语句和简单的恢复技术;主要目的是能够快速处理大量事务;针对简单事务处理领域,尤其是交换机, 移动通信等。
第三代:通用的主存数据库。针对传统的商业关系型数据库领域,能够提供更高的性能、通用性以及稳定性;提供不同的接口来处理复杂的SQL语句和满足不同的应用领域;可以应用在计费、电子商务、在线安全领域,几乎包括磁盘数据库的所有应用领域。
五、目前几种常见的通用内存数据库
eXtremeDB:eXtremeDB实时数据库是McObject公司的一款特别为实时与嵌入式系统数据管理而设计的数据库,只有50K到130K的开销,速度达到微秒级。eXtremeDB完全驻留在主内存中,不使用文件系统(包括内存盘)。eXtremeDB采用了新的磁盘融合技术,将内存拓展到磁盘,将磁盘当做虚拟内存来用,实时性能保持微秒级的同时,数据管理量在32BIT下能达到20G。
Oracle TimesTen:Oracle TimesTen是Oracle从TimesTen公司收购的一个内存优化的关系数据库,它为应用程序提供了实时企业和行业(例如电信、资本市场和国防)所需的即时响应性和非常高的吞吐量。Oracle TimesTen可作为高速缓存或嵌入式数据库被部署在应用程序层中,它利用标准的 SQL 接口对完全位于物理内存中的数据存储区进行操作。
SolidDB:Solid Information Technology 成立于 1992 年,全球总部位于加州Cupertino,
Solid数据管理平台将基于内存和磁盘的全事务处理数据库引擎、载体级高可用性及强大的数据复制功能紧密地融为一体。
Altibase:ALTIBASE公司从1999年就一直致力于内存数据库软件和其应用的开发,提供高性能和高可用性的软件解决方案。特别适合通信、网上银行、证券交易、实时应用和嵌入式系统领域。目前占据80%以上内存数据库市场,可以说是当今数据库软件技术的领导者。目前Altibase在国内成功案例也比较多,尤其是在电信行业,已经得到了广泛认可。
- 大小: 71.8 KB
分享到:
相关推荐
内存数据库是一种将整个数据库存储在计算机的主存中,以提高数据库的性能和响应速度的技术。传统的数据库管理系统将所有数据存储在磁盘上,称为磁盘数据库(DRDB:Disk-Resident Database)。磁盘数据库需要频繁地...
下面,我们将深入探讨几种常用的内存数据库,包括它们的特点、应用场景以及为何它们能够在现代数据处理环境中占据一席之地。 ### 1. **Redis** Redis(Remote Dictionary Server)是最受欢迎的内存数据库之一,它...
常用内存数据库的比较 内存数据库是一种新型的数据库管理系统,它将整个数据库放入内存中,以提高数据库的性能和响应速度。与传统的磁盘数据库相比,内存数据库具有很多优势,如快速的数据访问速度、低延迟、低成本...
常用内存数据库介绍.pdf
内存数据库是一种将数据存储在内存中的数据库系统,其主要特点是高速读写性能,适用于需要快速响应和处理大量数据的应用场景。在JAVA开发中,有很多开源的内存数据库可以选择,本篇文章将对比分析这些数据库的特点、...
实现词法分析和语法分析的内存小容量数据库,主要用于学习编译原理
内存数据库是现代信息技术领域中的一个重要概念,特别是在实时交易系统中,它扮演着催化剂的角色,显著提高了数据处理的速度和效率。本文将深入探讨内存数据库的基本原理、优势、应用场景以及与实时交易系统的结合。...
哈希表是内存数据库中常用的一种数据结构,它在Linux环境下扮演着关键角色。 哈希表,又称散列表,是通过哈希函数将数据映射到一个固定大小的数组中。这个函数能够将任意长度的输入(如字符串)转化为固定长度的...
此外,对于源码和工具部分,文章可能还涵盖了开源内存数据库如Redis、Memcached等的简要分析,或者介绍了如何构建一个简单的内存数据库系统,包括数据结构的选择(如哈希表、B树等)和API设计等。 在本科班课程项目...
描述提到的“排序的列表的基类一种实时内存数据库组织与管理方法”,意味着文件内容可能涉及一种特定的数据结构——排序列表,这是内存数据库中常用的数据组织方式,用于快速查找、插入和删除数据。排序列表通常基于...
1. 数据映射:内存数据库会将常用数据表全部映射到主机共享内存中,同时为关键字段建立内存索引,以加速查询。 2. API接口:应用程序通过调用特定的内存数据库API,直接访问内存中的数据,而不是直接操作物理数据库...
本文将围绕“Oracle常用的数据库脚本”这一主题,详细讲解Oracle数据库管理中的一些关键脚本和命令,帮助你更好地理解和操作Oracle数据库。 首先,Oracle数据库脚本通常是指SQL(Structured Query Language)脚本,...
Hash索引是数据库系统中一种常用的索引技术,尤其适合于内存数据库。它利用哈希函数将数据的键(key)转化为内存地址,使得数据的查找、插入和删除操作能在常数时间内完成,极大地提高了数据访问效率。Hash索引的...
同时,我们还将介绍一个名为CSqlite的实用操作类,该类简化了与SQLite的交互,包括读取返回内容和获取返回头等信息。 首先,让我们了解SQLite的基本概念。SQLite是一个开源的、自包含的、完全事务性的SQL数据库引擎...
作为一个内存数据库,它的主要特点是数据存取速度快,支持多种数据结构,且提供了丰富的持久化策略。在Java开发中,Redis的使用非常常见,能够显著提升应用程序的响应速度和整体性能。 1. 数据结构: Redis支持...
IT资料 常用软件 内存数据库 jar包
下面我们将介绍一些常用的数据库维护 SQL 语句。 一、查询 SQL 的资源消耗情况 在数据库中,SQL 语句的执行会消耗一定的资源,包括 CPU、内存、I/O 等。为了了解 SQL 语句的资源消耗情况,我们可以使用以下 SQL ...
因此,内存数据库作为一种高性能解决方案,被引入到互联网余票查询业务中。 内存数据库与传统的磁盘数据库有着显著的区别。磁盘数据库依赖于磁盘存储,数据存取速度受到磁盘物理限制,处理大量并发请求时性能下降...
【高性能模糊检索的内存数据库EMS】是一个专注于提供高效模糊查询能力的内存数据库系统。它针对大规模数据集,尤其是在需要快速响应复杂查询需求的场景下,展现出优越的性能。内存数据库因其将数据存储在内存中,...