精华内容
下载资源
问答
  • 内存数据库

    千次阅读 2014-05-07 08:19:25
    同时,内存数据库抛弃了磁盘数据管理的传统方式,基于全部数据都在内存中重新设计了体系结构,并且在数据缓存、快速算法、并行操作方面也进行了相应的改进,所以数据处理速度比传统数据库的数据处理速度要快很多,...

            内存数据库,顾名思义就是将数据放在内存中直接操作的数据库。相对于磁盘,内存的数据读写速度要高出几个数量级,将数据保存在内存中相比从磁盘上访问能够极大地提高应用的性能。同时,内存数据库抛弃了磁盘数据管理的传统方式,基于全部数据都在内存中重新设计了体系结构,并且在数据缓存、快速算法、并行操作方面也进行了相应的改进,所以数据处理速度比传统数据库的数据处理速度要快很多,一般都在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/ 

    展开全文
  • 内存数据库与磁盘数据库

    千次阅读 2018-09-02 10:26:34
    1、磁盘数据库需要频繁地访问磁盘来进行数据的操作,由于对磁盘读写数据的操作一方面要进行磁头的机械移动,另一方面受到系统调用(通常通过CPU中断完成,受到CPU时钟周期的制约)... 内存数据库数据处理速度比传统...

    参考网址:https://blog.csdn.net/dh2442897094/article/details/64440130

    1、磁盘数据库需要频繁地访问磁盘来进行数据的操作,由于对磁盘读写数据的操作一方面要进行磁头的机械移动,另一方面受到系统调用(通常通过CPU中断完成,受到CPU时钟周期的制约)时间的影响,当数据量很大,操作频繁且复杂时,就会暴露出很多问题。 内存数据库数据处理速度比传统数据库的数据处理速度要快很多,一般都在10倍以上。

    2、在数据库技术中,目前主要有两种方法来使用大量的内存。一种是在传统的数据库中,增大缓冲池,将一个事务所涉及的数据都放在缓冲池中,组织成相应的数据结构来进行查询和更新处理,也就是常说的共享内存技术,这种方法优化的主要目标是最小化磁盘访问。另一种就是内存数据库(MMDB:Main Memory Database,也叫主存数据库)技术,就是干脆重新设计一种数据库管理系统,对查询处理、并发控制与恢复的算法和数据结构进行重新设计,以更有效地使用CPU周期和内存,这种技术近乎把整个数据库放进内存中,因而会产生一些根本性的变化。

    3、常用内存数据库

    Redis

    SQLite

    Altibase

    Oracle Berkeley DB

    eXtremeDB(商业)

    参考网址:https://www.jianshu.com/p/4eeed6f227ab

    典型的磁盘数据库就是最常用的 Oracle,Mysql,Mongodb、postgresql等。典型的内存数据库如 Redis。

    数据库选型:https://www.cnblogs.com/foohack/p/5283855.html

    4、Redis和SQLite的比较

    SQLite比起Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度比他们都快。

    参考网址:https://blog.csdn.net/lijinqi1987/article/details/51957545

    SQLite并不应该用来直接和MySQL、Oracle、PostgreSQL、SQL Server这些client/server数据库比较,因为SQLite是用来解决其他的问题的。client/server数据库力图实现企业数据的共享库,他们强调可伸缩性、并发、集中和控制。SQLite试图为单独的应用程序和设备提供本地的数据存储

    选型依据:

    数据和应用程序被网络隔开? →选择 client/server数据库

    大量并发的写操作? →选择 client/server数据库

    大量并发的写操作? →选择 client/server数据库

    否则,选择SQLite

    参考网址:https://blog.csdn.net/guoqingcun/article/details/67634633

    1:客户端/服务端应用 如果有许多客户端通过网络发送SQL到服务端,SQLITE不适用此场景

    2: 大数据集 SQLITE限制大小为140T

    3:高并发 SQLITE适合单线程/进程写

    本机存储,低并发,低数据量,零配置,零管理

     

    Redis是一款开源的、高性能的键-值存储 (key-value store)。它常被称作是一款数据结构服务器(data structure server)。Redis的键值可以包括字符串(strings)、哈希(hashes)、列表(lists)、集合(sets)和 有序集合(sorted sets)等数据类型。 对于这些数据类型,你可以执行原子操作。例如:对字符串进行附加操作(append);递增哈希中的值;向列表中增加元素;计算集合的交集、并集与差集等。Redis是NoSQL数据库。

    参考网址:https://blog.csdn.net/u011277123/article/details/78692603/

    Redis适用场景:

    1. 数据高并发的读写

    2. 海量数据的读写

    3. 对扩展性要求高的数据

    Redis不适用的场景:

    1. 需要事务支持(非关系型数据库)

    2. 基于sql结构化查询储存,关系复杂

     

    展开全文
  • 网址: ... 内存数据库,顾名思义就是将数据放在内存中直接操作的数据库。相对于磁盘,内存的数据读写速度要高出几个数量...同时,内存数据库抛弃了磁盘数据管理的传统方式,基于全部数据都在内存中重新设计了体系结构
    网址: 
    
    内存数据库,顾名思义就是将数据放在内存中直接操作的数据库。相对于磁盘,内存的数据读写速度要高出几个数量级,将数据保存在内存中相比从磁盘上访问能够极大地提高应用的性能。同时,内存数据库抛弃了磁盘数据管理的传统方式,基于全部数据都在内存中重新设计了体系结构,并且在数据缓存、快速算法、并行操作方面也进行了相应的改进,所以数据处理速度比传统数据库的数据处理速度要快很多,一般都在10倍以上。内存数据库的最大特点是其"主拷贝"或"工作版本"常驻内存,即活动事务只与实时内存数据库的内存拷贝打交道。显然,它要求较大的内存量,但并非任何时刻整个数据库都存放在内存,即内存数据库系统还是要处理I/O。

    内存数据库是以牺牲内存资源为代价换取数据处理实时性的,内存数据库和磁盘数据库都是当今信息社会里每个企业所必须的关系型数据库产品,磁盘数据库解决的是大容量存储和数据分析问题,而内存数据库解决的是实时处理和高并发问题。两者的存在是相辅相成的,内存数据库的事务实时处理性能要远强于磁盘数据库。但是相对的,他的数据安全方面还没有达到磁盘数据库比肩的地步。
    内存数据库将物理内存作为数据的第一存储介质,而将磁盘作为备份。随着电信业务的发展,系统对实时性的要求和对业务灵活修改的要求非常高,在此种情况下对于内存数据库的需求也越来越高。磁盘数据库的做法是将数据存入内存中进行处理,这种方式的可管理性及数据安全可靠性都没有保障。而内存数据库正是针对这一弱点进行了改进。

    实际上,内存数据库并不是一项时髦技术,其出现于上世纪60年代末,但由于市场的需求原因在90年代后期才开始发展。作为新一代数据库,Altibase产品已经走向混合型数据库,其版本Altibase 4.0已经有一套自带的磁盘数据库,用户一旦购买了Altibase的内存数据库,就无须再购买磁盘数据库。它把热数据(经常被使用的、访问比较高的、经常要运算的数据)放在内存数据库里,而把历史性数据放在磁盘数据库里,可为用户进一步减少投资。
    对于内存数据库而言,可以将同样数据库的部分内容存放于磁盘上,而另一部分存放于内存中。用户可以选择将数据存储在内存表中以提供即时的数据访问。若访问时间不紧急或数据存于内存中所占空间过大时,用户可将这些数据存入磁盘表中。

    比如,在手机用户开始拔打电话时,如果应用基于内存数据库技术的混合数据管理引擎,就通过内存表检索其服务选项并立即验证用户身份,而将通话清单和计费清单归档到磁盘表中。从而,达到了速度与资源使用的平衡。

    内存数据库的技术,一个很重要的特点,是可以对内存中的数据实现全事务处理,这是仅仅把数据以数组等形式放在内存中完全不同的。并且,内存数据库是与应用无关的,显然这种体系结构具有其合理性。内存引擎可以实现查询与存档功能使用的是完全相同的数据库,同时内存表与磁盘表也使用的是完全相同的存取方法。存储的选择,对于应用开发者而言是完全透明的。

    对于内存数据库而言,实现了数据在内存中的管理,而不仅仅是作为数据库的缓存。不像其它将磁盘数据块缓存到主存中的数据库,内存数据库的内存引擎使用了为随机访问内存而特别设计的数据结构和算法,这种设计使其避免了因使用排序命令而经常破坏缓存数据库性能的问题。通过内存数据库,减少了磁盘I/O,能够达到了以磁盘I/O 为主的传统数据库无法与其相比拟的处理速度。

    因此,内存数据库技术的应用,可以大大提高数据库的速度,这对于需要高速反应的数据库应用,如电信、金融等提供了有力支撑。
    (以上引自 http://hi.baidu.com/bluesky0205/blog/item/2dde5d08df57fe9f0b7b8258.html

    由于把大多数数据都放在内存中进行操作,使得内存数据库有着比磁盘数据库高得多的性能表现,这一特点非常契合电信企业运营支撑系统对实时性的要求。

    电信业的竞争正在全方位地展开,这种竞争必然带来新的价值链模式以及新的计费方式,这些变化对目前的电信运营支撑系统是一个挑战。比如,多种业务的计费环节将不再是单一的按照时长或通信距离收取费用,而可能是根据时长、内容、使用量等多种参数的组合计费。为了应对这些挑战,电信企业先后引入了内存数据库,以提高后台数据管理的实时性、精确性和灵活性。

    尽管内存数据库已不是传统磁盘数据库的概念,但是内存数据库本质上还是数据库,它也具有一般数据库的基本功能:

    ■ 永久数据的管理,包括数据库的定义、存储、维护等;

    ■ 完成各种数据操作,如查询处理、存取、完整性检查;

    ■ 事务管理,包括调度与并发控制等;

    ■ 对存取的控制和安全性检验;

    ■ 具有数据库的可靠性恢复机制。

    相对于利用程序开发手段调用内存处理来说,内存数据库自有其优势。首先,内存数据库是产品化的数据库管理软件,极大缩短了开发周期; 其次,内存数据库有着开放的平台和接口,程序开发和移植更加灵活便捷,也便于维护和二次开发; 第三,可以通过使用统一的SQL语言方便地查询内存中的数据; 最后,能在数据库中保障数据的安全性和完整性。这些优势,对于快速部署和简化维护都是有利的。

    内存数据库也有其不可避免的缺点,比如: 不容易恢复,内存数据库中的数据不总是永久的,为了保证实时,也不一定是一致和绝对正确的,有的是短暂的,有的是暂时不一致或非绝对正确的

    电信企业一直是内存数据库的主要用户,近几年来,随着计算机硬件技术的飞速发展、内存容量的提高、价格下跌以及计算机进入64位时代操作系统后可以支持更大的地址,为内存数据库的实现提供了可能。目前内存数据库在电信行业的应用也日趋成熟,已有超过90G的电信系统案例,能自动扩展内存空间,不需要重启数据库,提供ESOL自定义存储过程,支持多线程,开发效率高,程序移植容易等等。

    下面以两个例子来介绍内存数据库的应用
    1. 电信计费数据的加载
    电信的二次批价和实时累账是计费系统中的两个必备功能。
    所谓二次批价是相对于一次批价来说的。
    一次批价是按照国家标准资费来进行价格计算,比如: 全球通每分钟本地通话为0.4元,在一次批价完成后,会根据这个用户的套餐进行再一次的计算。以北京全球通用户接听4分钟的电话为例,一次批价完成后,这条话单的价格是1.6元,如果这个用户参加了10元包月接听套餐,那么在二次批价后,这次通话的费用就为0元。
    一次批价是用于各大运营商之间结算的,而二次批价是针对用户个人的。

    实时累账是将用户从每月1号到目前为止的所有费用累加起来,也就是用户目前可以通过10086查到截止到前一天的实时话费。累账值可以帮助用户控制高额话费或是供用户即时查询消费信息。

    二次批价和实时累账过程涉及用户资料、用户套餐等与用户相关的信息,电信支撑系统在开始批价时必须加载这些数据。稍大一点的省级运营商的这些数据就会超过1000万条,计费处理模型也由于套餐的组合、产品的组合以及不同的优惠规则变得相当复杂,加载这部分数据对系统而言是一笔不小的开销,这就使得现在的计费处理速度比较慢,而且很难做到对数据的实时更新。内存数据库的引入在一定程度上解决了这个问题。

    在计费二次批价过程中数据量最大的是详单数据,这部分数据不用放在内存数据库中,每处理完一个话单文件或达到设定的提交记录数时直接操作磁盘数据库,不会影响系统性能。最急切的是将用户资料、套餐、营业套餐和计费套餐对应关系数据、计费套餐模型数据及用户累计数据放到内存数据库中,这部分数据查询操作远比数据新增和更新操作要频繁。除了这些数据外,当然还有应用需要的其他数据也都可以加载到内存数据库。

    在采用内存数据库后,用户通过营业部或客户查询实时话费的时候完全可以做到实时,比目前只能提供查询到前一天的实时话费在业务上有了质的飞跃。因为系统在处理这部分数据时查询流程和以前的完全一样,但系统省去了以往内存中的数据和磁盘数据库数据同步的环节,所以就能做到了实时查询。对于信控来说也同样,以往系统在累完账后要按照一定周期刷新信控数据,这就存在一个时间差,不能够完全做到实时。

    而采用内存数据库后,信控可以直接取得内存数据库中的实时话费累计表中的数据,完全实现实时预警、停机。二次批价和累账中采用内存数据库后,对防欺诈、收入保障系统也有相当大的好处,这样能够充分保证运营商的切身利益。

    另外,在采用内存数据库后,整体提高了系统批价、累账的处理速度,大大缓解访问磁盘数据库的压力,提高数据查询、修改、删除的效率,也为后付费和预付费的融合提供了可能。

    电信计费数据的同步
    电信营业数据和计费系统中的数据总是在不断的变化中,这就涉及内存数据库中的数据和磁盘数据库数据的同步问题(为了描述清楚,这里的磁盘数据库以Oracle DB为例来说明)。数据同步包括两部分: 从内存数据库到Oracle DB数据同步和从Oracle DB到内存数据库的同步。

    1. Oracle DB到内存数据库同步

    这部分数据同步采用增量表的方式,营业系统或CRM新增或更新的数据将生成到Oracle的增量表中,计费后台程序先到这些增量表中查询数据。如果能在这些增量表中查到数据就把这些数据更新到内存数据库对应表中,如果查不到,就直接从内存数据库中直接查询,从而保证了数据的完整性和实时性。由于增量表的数据量一般会很小,所以这部分操作不会影响系统的性能。

    2. 内存数据库到Oracle DB同步

    由于Oracle的计费后台批价、累账数据几乎都加载到了内存数据库中,所以Oracle数据库对应的数据表将主要用于对内存数据库的数据备份。

    用户最新的实时话费等信息都保存在内存数据库中,实时话费查询将直接连接到内存数据库中查询,保证用户得到最新的费用信息。信控也直接从内存数据库查询数据,因此对Oracle中的这部分数据已经没有实时性的要求。这时内存数据库到Oracle的同步可以由应用程序生成文件,定时地往Oracle数据库中同步备份,或者采用Oracle 存储过程在系统相对空闲时间段进行数据导入就可以了。

    总体而言,由于市场与技术的快速发展,电信业务在不断扩充,其运营和管理不断优化,传统的一些支撑系统的架构已经逐渐不能满足日益增长的业务要求和客户需求,引入一些新的技术来解决我们生产中遇到的问题是必然的。比如采用内存数据库来代替以前的共享内存技术,使得原来在内存中不标准的东西,包括接口、格式和管理都标准化了。

    内存数据库只是多种新技术中有代表性的一种而已,只要解放思想、选用得当,完全可以在投入不大的情况下克服系统中的瓶颈,以最小的代价获得最大回报。

    (以上内容引子: http://www2.ccw.com.cn/07/0712/b/0712b06_3.html ) 


    通用数据库大家见的多了,Oracle、Db2、Sqlserver、Sybase、Informix 还有最近比较火的Mysql、和Pqllite,当然还不能忘记开源的PostgreSQL。通常情况下这些数据库可以承担重要业务,但是在要求高性能方面还是略有不足。在计费系统中如果用户信息常常改变的话延迟方面就会产生比较大的影响,甚至能影响到计费系统的正常运行。


    我接触到唯一的内存数据库就是亚信在中移动计费中心稽核系统中使用的由于稽核系统需要实施同步用户状态信息和订购信息,然后对产生的话单进行稽核,如果响应速度 较慢的话就会产生错误的结果。最初没有稽核系统的时候,计费的标准基本是sp发过来的,然而用户方面却经常发现自己没有实际使用或者已经取消这项业务的时 候,自己的帐单中仍然收取了费用,因此中移动决心要对sp的话单进行稽核,以自己的数据为标准,彻底剪断sp乱收费的手段


    如果要取到用户状态信息和订购信息的话就要从多个系统中同步过来,同时对话单进行稽核,中间的处理时间要求比较严格(用户可能会在短时间内检查自己的话费信息),对系统响应时间就要尽量短。


    通用数据库在这方面处于劣势。亚信就以三台rx8420作为数据库主机,将31个省用户的信息按照数量的多少分担到三台主机,每个省至少有一个入库进程,对于用户比较多的就采用多个进程进行入库。数据的采集来源主要是通过BOSS和计费的一级系统。


    由于数据是存储在内存中,所以存储的数据结构和通用数据库有所差异,同时为了保证数据的安全,在磁盘上有一个内存数据的镜像,每隔一定时间将内存中的数据同步到磁盘上,当主机故障时可以通过磁盘恢复数据。当主机故障时,会有备用主机通过HA接管。但是对于数据操作的日志和回滚就没有Oracle做的好了,只提供了简单的恢复机制。


    在计费系统中首先要对sp发来的话单进行稽核,主要标准是用户状态和订购信息。例如用户最近7天一直处于关机状态,如果sp的话单中出现新的订购信息就将此条话单作为错单处理。移动通过这种方式在和sp的博弈中取得主动。稽核系统上线后用户对于sp的投诉问题明显减少。

    (以上内容引子: http://flying-madman.blogspot.com/2007/10/blog-post.html

    链接一:内存数据库与传统数据库的异同

    传统的数据库系统是关系型数据库,开发这种数据库的目的,是处理永久、稳定的数据。关系数据库强调维护数据的完整性、一致性,但很难顾及有关数据及其处理的定时限制,不能满足工业生产管理实时应用的需要,因为实时事务要求系统能较准确地预报事务的运行时间。

    对磁盘数据库而言,由于磁盘存取、内外存的数据传递、缓冲区管理、排队等待及锁的延迟等使得事务实际平均执行时间 与估算的最坏情况执行时间相差很大,如果将整个数据库或其主要的"工作"部分放入内存,使每个事务在执行过程中没有I/O,则为系统较准确估算和安排事务 的运行时间,使之具有较好的动态可预报性提供了有力的支持,同时也为实现事务的定时限制打下了基础。这就是内存数据库出现的主要原因。

    内存数据库所处理的数据通常是"短暂"的,即有一定的有效时间,过时则有新的数据产生,而当前的决策推导变成无 效。所以,实际应用中采用内存数据库来处理实时性强的业务逻辑处理数据。而传统数据库旨在处理永久、稳定的数据,其性能目标是高的系统吞吐量和低的代价, 处理数据的实时性就要考虑的相对少一些。实际应用中利用传统数据库这一特性存放相对实时性要求不高的数据。

    在实际应用中这两种数据库常常结合使用,而不是以内存数据库替代传统数据库。


    链接二:几款内存数据库产品

    ■ Oracle TimesTen 

    Oracle  TimesTen是Oracle从TimesTen公司收购的一个内存优化的关系数据库,它为应用程序提供了实时企业和行业(例如电信、资本市场和国防) 所需的即时响应性和非常高的吞吐量。Oracle TimesTen可作为高速缓存或嵌入式数据库被部署在应用程序层中,它利用标准的 SQL 接口对完全位于物理内存中的数据存储区进行操作。

    ■ Altibase

    Altibase是一个在事务优先的环境中提供高性能和高可用性的软件解决方案。它提供高性能、容错能力和事务管 理能力,特别适合通信、网上银行、证券交易、实时应用和嵌入式系统领域。Altibase能够最大限度地发挥数据库服务系统的潜力,增强数据服务器的处理 能力。Altibase支持客户端/服务器架构或嵌入式架构。其中客户端/服务器架构非常适合一般的应用。而嵌入式架构将应用程序嵌入到数据库服务器,适 合于有高时效要求的实时系统。

    ■ eXtremeDB 

    eXtremeDB实时数据库是McObject公司的一款特别为实时与嵌入式系统数据管理而设计的数据库,只有50K到130K的开销,速度达到微秒级。eXtremeDB完全驻留在主内存中,不使用文件系统(包括内存盘)。eXtremeDB采用了新的磁盘融合 技术,将内存拓展到磁盘,将磁盘当做虚拟内存来用,实时性能保持微秒级的同时,数据管理量在32BIT下能达到20G。

    展开全文
  • 内存数据库 传统的数据库管理系统把所有数据都放在磁盘上进行管理,所以称作磁盘数据库(DRDB: Disk-Resident Database).磁盘数据库因为磁头机械运动及系统调用因素导致速度降低,后来逐渐增加内存作用,有两种技术:...
    • 内存数据库

      传统的数据库管理系统把所有数据都放在磁盘上进行管理,所以称作磁盘数据库(DRDB: Disk-Resident Database).磁盘数据库因为磁头机械运动及系统调用因素导致速度降低,后来逐渐增加内存作用,有两种技术:共享内存技术、内存数据库。

      内存数据库(Main Memory Database),又称为主存数据库,按历史发展分成三个阶段1

      1. 雏形期(20世纪60年代末-80年代初)

        1969年,IBM开发出最早的数据库管理系统:基于层次模型的数据库管理系统IMS。同时,基于内存的数据管理,退出了IMS/VS Fast Path,同时支持内存驻留和磁盘驻留数据。

        与此同时,网状数据库、关系数据库等各种数据库技术逐渐成型。

      2. 技术理论成熟期(1984)

        1984年,D.J.DeWitt发表《主存数据库系统的实现技术》一文,首次提出主存数据库(Main Memory Database)概念,提出AVL树、哈希算法、主存数据库恢复机制等主存数据库技术的关键理论,为主存数据库的发展指出了明确的方向。

        1985年,IBM退出在IBM370上运行的OBE主存数据库;

        1986年,RB.Hagman提出使用检查点技术实现主存数据库的恢复机制,威斯康星大学提出了按区双向锁定模式解决主存数据库中的并发控制问题。并设计出MM-DBMS主存数据库。贝尔实验室退出DALI主存数据库模型。

        1987年,ACM SIGMOD会议中提出了以堆文件(HE AP FILE)作为主存数据库的数据存储结构。Southern Methodist大学设计出MARS主存数据库模型。

        1988年,普林斯顿大学设计出TPK主存数据库;

        1990年普林斯顿大学设计出System M主存数据库。

      3. 产品发展期和市场成长期

        随着互联网发展、内存硬件、半导体技术发展,使得主存数据库的技术可行性逐渐成熟。

        1994年,美国OSE公司推出第一个商业化的、可时机使用的主存数据库产品Polyhedra;

        1998年,德国Software AG推出Tamino Database;

        1999年,日本UBIT会社开发出XDB主存数据库;韩国Altibase推出Altibase;

        2000年,奥地利的Quilogic公司推出SQL-IMDB;

        2001年,美国的McObject推出eXtremeDB;加拿大Empress公司推出Express DB;

    • 常见的内存数据库类型2

      1. 关系型内存数据库
      2. 键值对内存数据库
      3. 传统数据库的内存数据库引擎
    • 常见的内存数据库

      1. eXtremeDB

        eXtremeDB是McObject公司的一款特别为实时与嵌入式系统数据管理而设计的数据库,只有50k到130k的开销,速度为微秒级。

        eXtreme DB完全驻留在主内存中,不使用文件系统,讲内存扩展到磁盘,把磁盘当作虚拟内存来用,数据管理量在32位下能达到20G。

      2. Oracle TimesTen

        Oracle TimesTen是Oracle从TimesTen公司收购的一个内存优化的关系数据库。

        Oracle还有一款Oracle Berkeley DB

      3. SolidDB

        Solid数据管理平台将基于内存和磁盘的全事务处理数据库引擎、载体级高可用性及强大的数据复制功能为一体。

      4. Altibase

        适用于通信、网上银行、证券交易、实时应用、嵌入式系统领域。

        目前占据80%以上内存数据库市场。

      5. SQLite

        SQLite是一个小型的C程序库,实现了独立的、可嵌入的、零配置的SQL数据库引擎。

    • 磁盘上的数据库

      磁盘数据库与内存数据库对应,是一种将数据存储在磁盘上的数据管理系统。核心知识在于数据的物理读写过程34

    • 分布式文件系统上的数据库

    • 分布式数据库(Distributed Data Base)5

      分布式数据库系统通常使用较小的计算机系统,每台计算机可单独放在一个地方,每台计算机中都可能有DBMS的一份完整拷贝副本,或者部分拷贝副本,并且具有自己局部的数据库,位于不同地点的许多计算机通过网络互相连接,共同组成一个完整的、全局的逻辑上集中、物理上分布的大型数据库。

    • 分布式数据库简史

      始于20世纪70年代中期;

      1979年,美国CCA在DEC计算机上实现第一个分布式数据库系统SDD-1;

      20世纪90年代,分布式数据库系统普遍进入商品化应用阶段。

    • 分布式数据库系统(Distributed Database System)6

      分布式数据库系统(DDBS)包含:分布式数据库管理系统(DDBMS)和分布式数据库(DDB)。

    • 分布式数据库系统的分类7

      1. 同构同质型DDBS

        各个场地都采用同一类型的数据模型(譬如都是关系型),并且是同一型号的DBMS

      2. 同构异质型DDBS

        各个场地采用同一类型的数据模型,但是DBMS的型号不同,譬如DB2、Oracle、Sybase、SQL Server

      3. 异构型DDBS

        各个场地的数据模型的型号不同,甚至类型也不同。

    • References


    1. 常用内存数据库介绍 ↩︎

    2. 内存数据库技术选型 ↩︎

    3. 0. 磁盘读写与数据库的关系 ↩︎

    4. 深入理解数据库磁盘存储(Disk Storage) ↩︎

    5. 百度百科:分布式数据库 ↩︎

    6. 百度百科:分布式数据库系统 ↩︎

    7. 分布式数据库概述 ↩︎

    展开全文
  • 典型的内存数据库如 Redis。这俩种数据库的比较如下:传统磁盘数据库的优点 – 传统数据库的ACID机制成熟、可靠;– 提供强大的数据定义语言(DDL)及数据操作语言(DML),提供 SQL 支持; – 提供一定的主动机制...
  • 传统数据库性能瓶颈主要出现在一个是内存不够,一个IO读写效率太低。oracle 体系结构中,数据库实例的系统全局区SGA(System global area) 是核心的组成部分,它是一组共享的内存结构,里面存储了oracle数据库实例...
  • 常用内存数据库介绍

    万次阅读 2016-10-09 19:52:47
    1. 内存数据库简介 1.1 概念 一、什么是内存数据库  传统的数据库管理系统把所有数据都放在磁盘上进行管理,所以称做磁盘数据库(DRDB:Disk-Resident Database)。磁盘数据库需要频繁地访问磁盘来进行数据的操作
  • 关系型数据库和Nosql区别 也许有人迷惑关系型数据库和非关系型数据库区别,其实非关系...1. 本质:非关系型数据库的实质:非关系型数据库产品是传统关系型数据库的功能阉割版本,通过减少用不到或很少用的功能,来...
  • 内存数据库比磁盘数据库要快,即使在传统数据库中,你将整个表缓存到内存。 这次培训,Sam老师又温习了一下,并给出一个例子: 左边是磁盘数据库,例如Oracle,右边是内存数据库,例如TimesTen。 在磁盘数据库...
  • Oracle的内存数据库战略

    万次阅读 2016-05-19 10:03:27
    此文简介了Oracle内存数据库的两大分支,TimesTen和Database In-Memory,非常值得一读,两种技术的重要特性完全涵盖,可以让读者很快的对Oracle内存数据库技术的关键点有一个全面的认识,建议看完此文后可以对参考中...
  • 内存数据库产品是把数据放在内存中,实现高效读写,目前是传统的关系型数据库的有效补充。在此我以产品演化的视角简单总结一下我所理解的内存数据库发展历史,目的是理解内存数据库产品的发展趋势,不恰当的地方请...
  • ”的调查结果中, “内存数据库”成为仅次于“分布式存储计算”的最受关注的新技术。内存数据库之所以受到越来越多的关注,与其性能上的飞跃和性价比的不断提升有着密不可分的关系。 内存数据库,顾名思义就是将...
  • MySQL原来也有内存数据库

    万次阅读 2016-07-22 22:45:12
    以前只知道MySQL可以做分库分表,支持多种数据库引擎。...Ivan形象的将内存数据库比喻成浅浅的盘子,而传统的MySQL磁盘存储方式比喻成深深的瓶子。另外,也探讨了MySQL作为开源数据库,和Oracle数据库的关系。MySQL并
  • 【摘要】 本文提出了一种通过引入内存数据库层,建立两层多分区分布式数据库架构。此方案用于解决海量高并发系统的数据存储和访问问题,尤其适用于电子商务等数据模型复杂且业务复杂的互联网站。 这些年互联网站...
  • 内存数据库比较

    2014-10-30 20:40:01
    这里介绍一些大型的市场占有率比较高的内存数据库,也是业界响当当的—SAP HANA、Oracle Exalytics、Orale TimesTen、IBM SolidDB,可以说他们之间没有说是哪个最好,主要还是看使用的场景和具体的需求,各自特点...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 163,927
精华内容 65,570
关键字:

内存数据库与传统数据库