大家好,又见面了,我是全栈君。
内存数据库。顾名思义就是将数据放在内存中直接操作的数据库。
相对于磁盘,内存的数据读写速度要高出几个数量级,将数据保存在内存中相比从磁盘上訪问可以极大地提高应用的性能。同一时候。内存数据库抛弃了磁盘数据管理的传统方式,基于所有数据都在内存中又一次设计了体系结构,而且在数据缓存、高速算法、并行操作方面也进行了对应的改进。所以数据处理速度比传统数据库的数据处理速度要快非常多,一般都在10倍以上。内存数据库的最大特点是其“主拷贝”或“工作版本号”常驻内存,即活动事务仅仅与实时内存数据库的内存拷贝打交道。
内存数据库与传统数据库的异同
传统的数据库系统是关系型数据库,开发这样的数据库的目的,是处理永久、稳定的数据。
关系数据库强调维护数据的完整性、一致性。但非常难顾及有关数据及其处理的定时限制,不能满足工业生产管理实时应用的须要。由于实时事务要求系统能较准确地预报事务的执行时间。
对磁盘数据库而言,因为磁盘存取、内外存的数据传递、缓冲区管理、排队等待及锁的延迟等使得事务实际平均运行时间与估算的最坏情况运行时间相差非常大。假设将整个数据库或其基本的“工作”部分放入内存,使每一个事务在运行过程中没有I/O。则为系统较准确估算和安排事务的运行时间。使之具有较好的动态可预报性提供了有力的支持。同一时候也为实现事务的定时限制打下了基础。这就是内存数据库出现的主要原因。
内存数据库所处理的数据一般是“短暂”的,即有一定的有效时间,过时则有新的数据产生,而当前的决策推导变成无效。
所以,实际应用中採用内存数据库来处理实时性强的业务逻辑处理数据。
而传统数据库旨在处理永久、稳定的数据,其性能目标是高的系统吞吐量和低的代价,处理数据的实时性就要考虑的相对少一些。实际应用中利用传统数据库这一特性存放相对实时性要求不高的数据。
在实际应用中这两种数据库经常结合使用,而不是以内存数据库替代传统数据库。
常见内存数据库
SQLite
SQLite是一个开源内存数据库,实现了独立的,可嵌入的。零配置的SQL数据库引擎。
http://www.sqlite.com.cn/
Oracle TimesTen内存数据库
Oracle TimesTen是一个全新设计的内存数据库。
它使用基于行的关系模型(表、列、数据类型、索引等)实现数据存储。并使用SQL作为訪问语言。
它提供了很多API,而且支持Oracle PL/SQL。应用程序的訪问方式与其它关系数据库全然同样。
http://download.csdn.net/detail/xunzaosiyecao/7307121l
IBM SolidDB
IBM solidDB 能够提供每秒数万至数十万事务的吞吐率,而且始终能够获得微秒级的响应时间(或延时)。
http://www-01.ibm.com/software/data/soliddb/
SAP-HANA
http://help.sap.com/hana/
Sqlserver 2014 Hekaton内存数据库引擎
http://www.cnblogs.com/CareySon/p/3155753.html
其它參考资料:
http://www.searchdatabase.com.cn/guide/imdb.htm http://hemeicun.blog.163.com/blog/static/11157304820113645525209/
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/115404.html原文链接:https://javaforall.cn