内存数据库「建议收藏」

内存数据库

大家好,又见面了,我是全栈君。

        内存数据库。顾名思义就是将数据放在内存中直接操作的数据库。

相对于磁盘,内存的数据读写速度要高出几个数量级,将数据保存在内存中相比从磁盘上訪问可以极大地提高应用的性能。同一时候。内存数据库抛弃了磁盘数据管理的传统方式,基于所有数据都在内存中又一次设计了体系结构,而且在数据缓存、高速算法、并行操作方面也进行了对应的改进。所以数据处理速度比传统数据库的数据处理速度要快非常多,一般都在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.net/115404.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 使用 Java8的 stream对list数据去重,使用filter()过滤列表,list转map「建议收藏」

    使用 Java8的 stream对list数据去重,使用filter()过滤列表,list转map「建议收藏」list去重,根据对象某个属性、某几个属性去重去除List中重复的StringListunique=list.stream().distinct().collect(Collectors.toList());去除List中重复的对象//Person对象publicclassPerson{privateStringid;…

    2022年5月9日
  • java log4j 配置文件_[Java教程]log4j配置文件详解

    java log4j 配置文件_[Java教程]log4j配置文件详解[Java教程]log4j配置文件详解02016-07-2523:00:18在开发中经常会碰到日志,网上关于日志的框架也很多,像log4j、self4j、common-logging等,下面对log4j进行介绍。log4j是java开发的日志框架,具有低侵入的特点,其重点使用的部分是log4j的配置文件,有两格式的配置文件,一种###setloglevels###log…

    2022年9月30日
  • RTP协议简介

    RTP协议简介以下转自:nkmnkm的专栏http://blog.csdn.net/niu_gao/article/details/69467812017/07/21RTP协议分析(转自:http://blog.csdn.net/bripengandre/article/details/2238818)分类: NetworkSecurity2008-04-0116

    2022年6月28日
  • vue中通过路由跳转的三种方式

    vue中通过路由跳转的三种方式router-view实现路由内容的地方,引入组件时写到需要引入的地方需要注意的是,使用vue-router控制路由则必须router-view作为容器。通过路由跳转的三种方式1、router-link【实现跳转最简单的方法】<router-linkto=’需要跳转到的页面的路径>浏览器在解析时,将它解析成一个类似于<a>的

    2022年7月27日
  • DSSM & Multi-view DSSM TensorFlow实现

    DSSM & Multi-view DSSM TensorFlow实现LearningDeepStructuredSemanticModelsforWebSearchusingClickthroughData以及其后续文章AMulti-ViewDeepLearningApproachforCrossDomainUserModelinginRecommendationSystems的实现Demo。1.数据D

    2022年10月22日
  • C语言结构体用法_c语言中的struct用法

    C语言结构体用法_c语言中的struct用法结构体(struct)结构体是由基本数据类型构成的、并用一个标识符来命名的各种变量的组合。 结构体中可以使用不同的数据类型。1.结构体说明和结构体变量定义在TurboC中,结构体

    2022年8月2日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号