zoukankan      html  css  js  c++  java
  • 内存数据库和关系数据库之间的数据同步原理

    关系数据库到内存数据库同步
    这部分数据同步采用增量表的方式,系统新增或更新的数据将生成到关系数据库的增量表中,程序先到这些增量表中查询数据。如果能在这些增量表中查到数据就把这些数据更新到内存数据库对应表中,如果查不到,就直接从内存数据库中直接查询,从而保证了数据的完整性和实时性。由于增量表的数据量一般会很小,所以这部分操作不会影响系统的性能。
    内存数据库到关系数据库同步
    由于关系数据库的数据几乎都加载到了内存数据库中,所以关系数据库对应的数据表将主要用于对内存数据库的数据备份。
    用户最新的信息都保存在内存数据库中,实时查询将直接连接到内存数据库中查询,保证用户得到最新的信息。因此对关系数据库中的这部分数据已经没有实时性的要求。这时内存数据库到关系数据库的同步可以由应用程序生成文件,定时地往关系数据库中同步备份,或者采用关系数据库的存储过程在系统相对空闲时间段进行数据导入就可以了。
     
    传统的数据库系统是关系型数据库,开发这种数据库的目的,是处理永久、稳定的数据。关系数据库强调维护数据的完整性、一致性,但很难顾及有关数据及其处理的定时限制,不能满足工业生产管理实时应用的需要,因为实时事务要求系统能较准确地预报事务的运行时间。
     
    对磁盘数据库而言,由于磁盘存取、内外存的数据传递、缓冲区管理、排队等待及锁的延迟等使得事务实际平均执行时间与估算的最坏情况执行时间相差很大,如果将整个数据库或其主要的“工作”部分放入内存,使每个事务在执行过程中没有I/O,则为系统较准确估算和安排事务的运行时间,使之具有较好的动态可预报性提供了有力的支持,同时也为实现事务的定时限制打下了基础。这就是内存数据库出现的主要原因。
     
    内存数据库所处理的数据通常是“短暂”的,即有一定的有效时间,过时则有新的数据产生,而当前的决策推导变成无效。所以,实际应用中采用内存数据库来处理实时性强的业务逻辑处理数据。而传统数据库旨在处理永久、稳定的数据,其性能目标是高的系统吞吐量和低的代价,处理数据的实时性就要考虑的相对少一些。实际应用中利用传统数据库这一特性存放相对实时性要求不高的数据。
    在实际应用中这两种数据库常常结合使用,而不是以内存数据库替代传统数据库。
     
    而内存数据库也分全内存计算和热内存计算。全内存计算,即数据需要全部装载到内存中进行计算,对硬件要求高,譬如QlikView等产品。热内存计算,部分数据加载到内存中即可以进行计算,硬盘和内存会有数据交换来计算未加载的数据,譬如Yonghong Z-Suite。
  • 相关阅读:
    腾讯加入QQ群,代码生成地址
    jsTree 是一个基于Javascript,支持多浏览器的Tree view jQuery插件。
    PHP Ajax 跨域问题最佳解决方案
    【转载】目前主流过滤XSS的三种技术
    nginx中location、rewrite用法总结
    Tomcat请求头过大
    ssh秘钥分发错误“/usr/bin/ssh-copy-id: ERROR: No identities found”
    ssh分发秘钥时出现错误“Permission denied (publickey,gssapi-keyex,gssapi-with-mic)”
    修改Jenkins用户的密码
    注销/etc/passwd带来的系统登陆不上
  • 原文地址:https://www.cnblogs.com/hnxxcxg/p/4266836.html
Copyright © 2011-2022 走看看