2022年内存数据库介绍 .pdf
《2022年内存数据库介绍 .pdf》由会员分享,可在线阅读,更多相关《2022年内存数据库介绍 .pdf(22页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、常用内存数据库介绍(一)博客分类:内存数据库数据结构 Oracle 企业应用网络应用设计模式(注:部分资料直接来源于Internet)1.内存数据库简介1.1概念一、什么是内存数据库传统的数据库管理系统把所有数据都放在磁盘上进行管理,所以称做磁盘数据库(DRDB:Disk-ResidentDatabase)。磁盘数据库需要频繁地访问磁盘来进行数据的操作, 由于对磁盘读写数据的操作一方面要进行磁头的机械移动,另一方面受到系统调用(通常通过CPU 中断完成,受到 CPU 时钟周期的制约)时间的影响,当数据量很大,操作频繁且复杂时,就会暴露出很多问题。近年来,内存容量不断提高,价格不断下跌,操作系统
2、已经可以支持更大的地址空间(计算机进入了64位时代),同时对数据库系统实时响应能力要求日益提高,充分利用内存技术提升数据库性能成为一个热点。在数据库技术中,目前主要有两种方法来使用大量的内存。一种是在传统的数据库中, 增大缓冲池,将一个事务所涉及的数据都放在缓冲池中,组织成相应的数据结构来进行查询和更新处理,也就是常说的共享内存技术,这种方法优化的主要目标是最小化磁盘访问。另一种就是内存数据库(MMDB:MainMemoryDatabase,也叫主存数据库 )技术,就是干脆重新设计一种数据库管理系统,对查询处理、并发控制与恢复的算法和数据结构进行重新设计,以更有效地使用CPU 周期和内存,这种
3、技术近乎把整个数据库放进内存中,因而会产生一些根本性的变化。两种技术的区别如下表:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 22 页 - - - - - - - - - 内存数据库系统带来的优越性能不仅仅在于对内存读写比对磁盘读写快上,更重要的是, 从根本上抛弃了磁盘数据管理的许多传统方式,基于全部数据都在内存中管理进行了新的体系结构的设计,并且在数据缓存、 快速算法、并行操作方面也进行了相应的改进, 从而使数据处理速度一般比传统数据库的数据处理速度快很多,一般都在
4、10 倍以上,理想情况甚至可以达到1000 倍。而使用共享内存技术的实时系统和使用内存数据库相比有很多不足,由于优化的目标仍然集中在最小化磁盘访问上,很难满足完整的数据库管理的要求,设计的非标准化和软件的专用性造成可伸缩性、可用性和系统的效率都非常低, 对于快速部署和简化维护都是不利的。2.内存数据库历史和发展一、雏形期从上个世纪60年代末到80年代初。在这个时期中,出现了主存数据库的雏形。1969年IBM公司研制了世界上最早的数据库管理系统-基于层次模型的数据库管理系统IMS,并作为商品化软件投入市场。在设计IMS时,IBM考虑到基于内存的数据管理方法,相应推出了IMS/VS Fast Pa
5、th。Fast Path是一个支持内存驻留名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 22 页 - - - - - - - - - 数据的商业化数据库, 但它同时也可以很好地支持磁盘驻留数据。在这个产品中体现了主存数据库的主要设计思想,也就是将需要频繁访问, 要求高响应速度的数据直接存放在物理内存中访问和管理。在这个阶段中, 包括网状数据库、 关系数据库等其他各种数据库技术也都逐渐成型。二、技术理论成熟期1984年,D J DeWitt等人发表了主存数据库系统的实现技
6、术一文。第一次提出了Main Memory Database(主存数据库)的概念。预言当时异常昂贵的计算机主存价格一定会下降,用户有可能将大容量的数据库全部保存在主存中,提出了AVL树、哈希算法、主存数据库恢复机制等主存数据库技术的关键理论,为主存数据库的发展指出了明确的方向。1984年,D J DeWitt等人提出使用非易逝内存或预提交和成组提交技术作为主存数据库的提交处理方案,使用指针实现主存数据库的存取访问。1985年,IBM推出了IBM 370上运行的OBE主存数据库1986年,RBHagman提出了使用检查点技术实现主存数据库的恢复机制。威斯康星大学提出了按区双向锁定模式解决主存数据
7、库中的并发控制问题。并设计出MM-DBMS主存数据库。贝尔实验室推出了DALI主存数据库模型。1987年,ACMSIGMOD会议中提出了以堆文件(HEAPFILE)作为主存数据库的数据存储结构。SouthernMethodist大学设计出MARS主存数据库模型。1988年普林斯顿大学设计出TPK主存数据库。1990年普林斯顿大学又设计出System M主存数据库。三、产品发展期和市场成长期随着互联网的发展,越来越多的网络应用系统需要能够支持大用户量并发访问、高响应速度的的数据库系统,主存数据库市场成熟半导体技术快速发展,半导体内存大规模生产,动态随机存取存储器(DRAM)的容量越来越大, 而价
8、格越来越低, 这无疑为计算机内存的不断扩大提供了硬件基础,使得主存数据库的技术可行性逐步成熟1994年美国OSE公司推出了第一个商业化的,开始实际应用的主存数据库产品Polyhedra1998年德国SoftwareAG推出了Tamino Database。1999年日本UBIT会社开发出XDB主存数据库产品。韩国Altibase推出Altibase2000年奥地利的QuiLogic公司推出了SQL-IMDB2001年美国McObject推出eXtremeDB。加拿大Empress公司推出EmpressDB四、几种主存技术应用的比较第一代:用户定制的主存数据库。通过应用程序来管理内存和数据;不支
9、持SQL语句,不提供本地存储,没有数据库恢复技术;性能好但很难维护和在别的应用中不能使用;应用在实时领域比如工厂自动化生产。第二代:简单功能的内存数据库。能够快速处理简单的查询;支持部分的SQL语句和简单的恢复技术; 主要目的是能够快速处理大量事务;针对简单事务处理领域,尤其是交换机,移动通信等。第三代:通用的主存数据库。 针对传统的商业关系型数据库领域,能够提供更高的性能、通用性以及稳定性;提供不同的接口来处理复杂的SQL语句和满足不同的应用领域;可以应用在计费、电子商务、在线安全领域,几乎包括磁盘数据库的所有应用领域。五、目前几种常见的通用内存数据库名师资料总结 - - -精品资料欢迎下载
10、 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 22 页 - - - - - - - - - eXtremeDB:eXtremeDB实时数据库是McObject公司的一款特别为实时与嵌入式系统数据管理而设计的数据库,只有50K到130K的开销,速度达到微秒级。eXtremeDB完全驻留在主内存中,不使用文件系统(包括内存盘)。eXtremeDB采用了新的磁盘融合技术, 将内存拓展到磁盘, 将磁盘当做虚拟内存来用, 实时性能保持微秒级的同时,数据管理量在32BIT下能达到20G。OracleTimesTen:Or
11、acleTimesTen是Oracle从TimesTen公司收购的一个内存优化的关系数据库,它为应用程序提供了实时企业和行业(例如电信、资本市场和国防)所需的即时响应性和非常高的吞吐量。OracleTimesTen可作为高速缓存或嵌入式数据库被部署在应用程序层中, 它利用标准的SQL接口对完全位于物理内存中的数据存储区进行操作。SolidDB:SolidInformationTechnology成立于1992年, 全球总部位于加州Cupertino,Solid数据管理平台将基于内存和磁盘的全事务处理数据库引擎、载体级高可用性及强大的数据复制功能紧密地融为一体。Altibase:ALTIBASE
12、公司从1999年就一直致力于内存数据库软件和其应用的开发,提供高性能和高可用性的软件解决方案。特别适合通信、网上银行、证券交易、实时应用和嵌入式系统领域。目前占据80%以上内存数据库市场,可以说是当今数据库软件技术的领导者。目前Altibase在国内成功案例也比较多,尤其是在电信行业,已经得到了广泛认可。常用内存数据库介绍(二)博客分类:内存数据库SQLite 企业应用 PythonSQL 嵌入式(部分资料直接来源于Internet)4.常用内存数据库4.1SQLiteSQLite 是一个小型的C 程序库,实现了独立的,可嵌入的,零配置的SQL 数据库引擎。特性包括:事务操作是原子,一致,孤立
13、,并且持久的(ACID) ,即使在系统崩溃和电源故障之后。零配置不需要安装和管理。实现了绝大多数 SQL92标准。整个数据库存储在一个单一的文件中。数据库文件可以在不同字节序的机器之间自由地共享。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 22 页 - - - - - - - - - 支持最大可达 2T 的数据库。(241字节)字符串和 BLOB 类型的大小最大可达2G 字节 (231字节)。小的代码:完整配置的少于250KB ,忽略一些可选特性的少于150KB 。在
14、大多数常见操作上比流行的客户/ 服务器数据库引擎 更快。简单,易于使用的API。内建 TCL绑定。 另外提供 可用于许多其他语言的绑定。具有良好注释的源代码,95% 经过测试。独立:没有外部依赖。源代码位于 公共域 。 可用于任何用途。SQLite 发行版包含一个独立的命令行访问程序(sqlite) ,可用于管理SQLite 数据库, 并适合作为一个如何使用SQLite 库的例子。License:SQLite 使用 Public domain 授权 (注), 对于个人使用和商业使用都是免费的。技术上的优点和特性SQLite 是一个轻量级、跨平台的关系型数据库。轻量级先说它的第一个特色:轻量级。
15、想必SQLite 的作者很看重这个特性,连它的Logo 都是用的 “ 羽毛 ” ,来显摆它的轻飘飘。SQLite 和 C/S 模式的数据库软件不同,它是进程内的数据库引擎,因此不存在数据库的客户端和服务器。使用SQLite 一般只需要带上它的一个动态库,就可以享受它的全部功能。而且那个动态库的尺寸也挺小,以版本3.6.11 为例,Windows 下 487KB 、Linux 下 347KB 。绿色软件SQLite 的另外一个特点是绿色:它的核心引擎本身不依赖第三方的软件,使用它也不需要“ 安装 ” 。所以在部署的时候能够省去不少麻烦。单一文件所谓的 “ 单一文件 ” ,就是数据库中所有的信息(
16、比如表、视图、触发器、等)都包含在一个文件内。这个文件可以copy 到其它目录或其它机器上,也照用不误。技术上的缺点和不足并发访问的锁机制SQLite 在并发(包括多进程和多线程)读写方面的性能一直不太理想。数据库可能会被写操作独占,从而导致其它读写操作阻塞或出错。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 22 页 - - - - - - - - - SQL 标准支持不全在它的 官方网站 上,具体列举了不支持哪些SQL92 标准。我个人感觉比较不爽的是不支持外键约束
17、。网络文件系统(以下简称NFS )有时候需要访问其它机器上的SQLite 数据库文件, 就会把数据库文件放置到网络共享目录上。这时候你就要小心了。当SQLite 文件放置于NFS 时,在并发读写的情况下可能会出问题(比如数据损坏) 。原因据说是由于某些NFS 的文件锁实现上有Bug。编程语言接口SQLite 支持很多种语言的编程接口。这对于我这种喜欢混用多种编程语言的人来说,是很爽的。下面我大概介绍一下。C/C+由于 SQLite 本身是 C 写的,它 自带的 API 也是 C 接口的。所以C/C+ 用起来最直接了。假如你不喜欢面向过程的C API 风格,可以另外找个C+ 的包装库。想重新发明
18、轮子的同学,也可以自己包装一个。Java如果要用Java 访问 SQLite ,可以通过SQLite 的 JDBC 驱动,或者通过专门的SQLite 包装库。我个人建议走JDBC 方式,万一将来要换数据库,代码就不用大改。Pythonpysqlite 是 Python 操作 SQLite 的首选。从Python 2.5 开始,它已经被整合到Python 的标准库中。看来Python 社区还是蛮喜欢SQLite 嘛。.Net对于喜欢 .Net 的同学,可以通过SQLite 的 ADO.NET驱动来访问。RubyRuby 可以通过 SQLite-Ruby操作 SQLite 数据库,不过我没用过。P
19、erl在 CPAN 上有 DBD:SQLite,不过我也没用过。一些非技术的参考因素需要根据 “ 如何选择开源项目” 里面提到的几个参考因素,再评估一下。授权协议( License )SQLite 使用的是 Public Domain 协议,这是最爽一种,可以放心大胆地用。用户的普及程度最近这几年,使用SQLite 的人越来越多。包括一些大公司也开始把它整合到产品中(比如Google 的 Gears 、Apple 的 Safari 、Adobe 的 AIR ) 。开发的活跃程度如果到 SQLite 的 Change Log 上大致了解一下,可以看出最近5 年基本上每1-2 个月都会有更新。说明
20、开发的活跃度还是非常高的。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 22 页 - - - - - - - - - SQLite 不同于其他大部分的SQL数据库引擎 , 因为它的首要设计目标就是简单化:易于管理易于使用易于嵌入其他大型程序易于维护和配置许多人喜欢SQLite 因为它的小巧和快速.但是这些特性只是它的部分优点,使用者还会发现 SQLite 是非常稳定的.出色的稳定性源于它的简单,越简单就越不容易出错.除了上述的简单、小巧和稳定性外,最重要的在于SQLit
21、e 力争做到简单化.简单化在一个数据库引擎中可以说是一个优点,但也可能是个缺点,主要决定于你想要做什么. 为了达到简单化,SQLite 省略了一些人们认为比较有用的特性,例如高并发性、严格的存取控制、丰富的内置功能、存储过程、复杂的SQL语言特性、XML以及 Java 的扩展, 超大的万亿级别的数据测量等等.如果你需要使用上述的这些特性并且不介意它们的复杂性,那么 SQLite 也许就不适合你了.SQLite 没有打算作为一个企业级的数据库引擎,也并不打算和Oracle 或者 PostgreSQL 竞争.仅凭经验来说SQLite 适用于以下场合:当你更看中简单的管理、使用和维护数据库,而不是那
22、些企业级数据库提供的不计其数的复杂功能的时候,使用SQLite 是一个比较明智的选择. 事实也证明,人们在许多情况下已经清楚的认识到简单就是最好的选择.4.1.1SQLite 最佳试用场合网站作为数据库引擎SQLite 适用于中小规模流量的网站( 也就是说,99.9%的网站 ).SQLite 可以处理多少网站流量在于网站的数据库有多大的压力.通常来说,如果一个网站的点击率少于100000 次/ 天的话,SQLite 是可以正常运行的.100000 次/天是一个保守的估计,不是一个准确的上限.事实证明,即使是 10 倍的上述流量的情况下SQLite 依然可以正常运行.嵌入式设备和应用软件因为 S
23、QLite 数据库几乎不需要管理,因此对于那些无人值守运行或无人工技术支持的设备或服务,SQLite 是一个很好的选择.SQLite 能很好的适用于手机,PDA,机顶盒,以及其他仪器.作为一个嵌入式数据库它也能够很好的应用于客户端程序.应用程序文件格式名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 22 页 - - - - - - - - - SQLite 作为桌面应用程序的本地磁盘文件格式取得了巨大成功. 例如金融分析工具、CAD包、档案管理程序等等.一般的数据库打开操
24、作需要调用sqlite3_open()函数,并且标记一个显式本地事务的起始点(BEGINTRANSACTION)来保证以独占的方式得到文件的内容.文件保存将执行一个提交(COMMIT)同时标记另一个显式本地事务起始点.这种事务处理的作用就是保证对于应用程序数据文件的更新是原子的、持久的、独立的和一致的.数据库里可以加入一些临时的触发器, 用来把所有的改变记录在一张临时的取消/重做日志表中.当用户按下取消 / 重做按钮的时候这些改变将可以被回滚.应用这项技术实现一个无限级的取消/ 重做功能只需要编写很少的代码.替代某些特别的文件格式许多程序使用fopen(),fread(),或 fwrite()
25、函数创建和管理一些自定义的文件用来保存数据.使用 SQLite 替代这些自定义的文件格式将是一种很好的选择.内部的或临时的数据库对于那些有大量的数据需要用不同的方式筛选分类的程序,相对于编写同样功能的代码,如果你把数据读入一个内存中的SQLite 数据库,然后使用连接查询和ORDER BY子句按一定的顺序和排列提取需要的数据,通常会更简单和快速.按照上述的方法使用内嵌的SQLite 数据库将会使程序更富有灵活性,因为添加新的列或索引不用重写任何查询语句.命令行数据集分析工具有经验的SQL用户可以使用SQLite 命令行程序去分析各种混杂的数据集.原是数据可以从CSV (逗号分隔值文件)文件中导
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年内存数据库介绍 2022 年内 数据库 介绍
限制150内