`

内存数据库的定义

阅读更多
 内存数据库,顾名思义就是将数据放在内存中直接操作的数据库。相对于磁盘,内存的数据读写速度要高出几个数量级,将数据保存在内存中相比从磁盘上访问能够极大地提高应用的性能。同时,内存数据库抛弃了磁盘数据管理的传统方式,基于全部数据都在内存中重新设计了体系结构,并且在数据缓存、快速算法、并行操作方面也进行了相应的改进,所以数据处理速度比传统数据库的数据处理速度要快很多,一般都在10倍以上。内存数据库的最大特点是其“主拷贝”或“工作版本”常驻内存,即活动事务只与实时内存数据库的内存拷贝打交道。   定义:设有数据库系统DBS,DB为DBS中的数据库,DBM(t)为在时刻t,DB在内存的数据集,DBM(t)属于DB。TS为DBS中所有可能的事务构成的集合。AT(t)为在时刻t处于活动状态的事务集,AT(t)属于TS。Dt(T)为事务T在时刻t所操作的数据集,   Dt(T)属于DB。若在任意时刻t,均有:   任意T属于AT(t) Dt(T)属于DBM(t)   成立,则称DBS为一个内存数据库系统,简称为MMDBS;DB为一个内存数据库,简称为MMDB。
编辑本段数据的加载
  电信的二次批价和实时累账是计费系统中的两个必备功能。所谓二次批价是相对于一次批价来说的。一次批价是按照国家标准资费来进行价格计算,比如: 全球通每分钟本地通话为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 存储过程在系统相对空闲时间段进行数据导入就可以了。
编辑本段内存数据库与传统数据库的异同
  传统的数据库系统是关系型数据库,开发这种数据库的目的,是处理永久、稳定的数据。关系数据库强调维护数据的完整性、一致性,但很难顾及有关数据及其处理的定时限制,不能满足工业生产管理实时应用的需要,因为实时事务要求系统能较准确地预报事务的运行时间。   对磁盘数据库而言,由于磁盘存取、内外存的数据传递、缓冲区管理、排队等待及锁的延迟等使得事务实际平均执行时间与估算的最坏情况执行时间相差很大,如果将整个数据库或其主要的“工作”部分放入内存,使每个事务在执行过程中没有I/O,则为系统较准确估算和安排事务的运行时间,使之具有较好的动态可预报性提供了有力的支持,同时也为实现事务的定时限制打下了基础。这就是内存数据库出现的主要原因。   内存数据库所处理的数据通常是“短暂”的,即有一定的有效时间,过时则有新的数据产生,而当前的决策推导变成无效。所以,实际应用中采用内存数据库来处理实时性强的业务逻辑处理数据。而传统数据库旨在处理永久、稳定的数据,其性能目标是高的系统吞吐量和低的代价,处理数据的实时性就要考虑的相对少一些。实际应用中利用传统数据库这一特性存放相对实时性要求不高的数据。   在实际应用中这两种数据库常常结合使用,而不是以内存数据库替代传统数据库。
0
0
分享到:
评论

相关推荐

    一种内存数据库到文件数据库的数据同步方法及系统

    B、定义内存数据库和文件数据库数据表的对应关系;C、根据事务日志刷新进程,异步地将所述日志缓存区中的所述事务日志中信息,按照所述内存数据库和文件数据库数据表的对应关系,同步到文件数据库中。本发明提供一种...

    wince内存数据库资料

    "一种内存数据库定义及相关技术探讨.pdf"深入讨论了内存数据库的定义,它与传统磁盘数据库的区别,以及其在实时性、性能和内存优化等方面的优势。文章可能还分析了不同类型的内存数据库技术,如哈希表、B树以及各种...

    内存数据库性能研究.pptx

    **1.1 内存数据库定义和基本概念** 内存数据库是一种将数据完全加载至内存中的数据库管理系统(DBMS),以此来提高数据访问速度。相较于传统的磁盘数据库,内存数据库通过避免磁盘I/O操作,实现了微秒级别的数据...

    内存数据库介绍资料.ppt

    内存数据库是一种特殊的数据库管理系统,它的主要特点是将所有数据存储在内存中,而非传统的磁盘上。这使得内存数据库能够提供极高的数据处理速度和近乎实时的响应能力,尤其适合那些需要快速读写和低延迟的应用场景...

    内存数据库及其技术浅论

    本文研究了内存数据库的基本定义和大致的理论,并在此基础上对内存数据库的并发机制、MMDB的逻辑优化规则以及动态降低锁粒度和动态提高锁粒度技术进行了较为系统的分析和研究。希望通过文中的研究能够为解决内存...

    内存数据库(h2多种数据库)

    内存数据库,如H2,是一种将数据存储在内存中的数据库管理系统。相较于传统的磁盘存储数据库,内存数据库在处理速度上有着显著优势,因为它们避免了磁盘I/O操作的延迟。H2是一款开源、轻量级、高性能的数据库,常...

    基于嵌入式内存数据库引擎的研究与设计

    内存数据库定义的核心在于数据库的主副本始终存在于内存中,事务处理仅在内存内部完成。这并不意味着内存数据库不需要处理I/O,而是要求数据管理和恢复策略适应内存环境。内存数据库并不是简单地扩大缓冲区来容纳...

    MySql内存数据库.pdf

    内存数据库(Memory Database)指的是把数据存放在内存中,以便快速读取和处理。本文档将探讨MySQL中内存数据库的创建、数据表的创建、数据查询以及数据操作的相关知识点。 1. 数据库操作命令 在MySQL中,可以使用...

    共享内存数据库资料 Linux 数据库 共享内存1

    - **定义**:共享内存数据库是一种将数据存储在内存中的数据库管理系统。与传统磁盘数据库相比,它减少了对磁盘的依赖,从而显著提高了数据读写效率。 - **特点**: - 高效的数据读写:内存读写速度远高于磁盘,...

    内存数据库mdb维护手册

    内存数据库mdb,是一种高效、快速的数据存储解决方案,尤其适合对数据实时性要求高的应用场景。MDB全称为Memory-Database System,它将数据存储在内存中,从而实现极快的读写速度,减少了磁盘I/O的等待时间。由于...

    内存数据库 TimesTen 安装手册【pdf】

    内存数据库Oracle TimesTen是Oracle公司推出的一款高性能、全内存的关系型数据库管理系统,专门设计用于处理实时的在线事务处理(OLTP)和分析工作负载。它将数据存储在内存中,从而实现了极快的数据读取速度和低...

    实时嵌入式系统的高速内存数据库设计

    为了实现管理数据库与内存数据库之间的通信,需要定义一系列的消息类型,包括但不限于请求消息、应答消息、错误消息等。这些消息类型定义了双方通信的具体格式和内容,确保了数据传输的一致性和完整性。 #### 六、...

    Altibase 内存数据库

    ### Altibase内存数据库知识点 #### 一、内存数据库概述与发展历程 内存数据库(In-Memory Database System, IMDS)是一种将所有数据驻留在主内存中的数据库管理系统,这使得它能够比传统的磁盘基础数据库系统提供...

    内存数据库的实现参照.pdf

    根据不同的定义,内存数据库可以有不同的工作模式,包括全内存、按需加载、事务前加载以及利用大缓冲区减少I/O。 内存数据库的特点明显区别于磁盘数据库: 1. 存取速度:内存数据可以直接与CPU交互,无须I/O过程,...

    浅谈分布式内存数据库系统设计.pdf

    分布式内存数据库的定义及其特点如下: 1. 定义:分布式内存数据库是在分布式系统架构的基础上,利用内存作为主要存储介质的数据库系统。它将数据分散存储在多个内存节点中,并通过网络实现数据的共享与访问。 2. ...

Global site tag (gtag.js) - Google Analytics