发掘数据库内存表的用处(2)

来源:未知 责任编辑:责任编辑 发表时间:2014-01-25 11:38 点击:
 
(四)、构建分布式系统
 
  当你的系统遇到高并发,高流量时,你需要构建分布式,可水平扩展的业务系统。而你的多个业务系统如果共享数据是一大难题.内存表可以解决这个问题,速度是建立在内存中,通信是建立高性能数据库c/s模式上,你只要专注于业务逻辑。
 
(五)、构建跨语言跨平台通信
 
  通用数据库系统,在各大流行语言中都可以访问。通过数据库表通信,以前遇到的问题是通信速度太慢,而基于内存模式,解决了通信慢的问题,好处在于使各种语言通过标准sql访问通信内容。可以基于这种方式,实现c#和java在局域网通信,解决通信协议问题。通过orm方式,完全实现对象和list<t>在不同系统的穿梭,避免重复发明轮子。对于小并发量局域网通信完全够用。对于大并发,见问答。  www.2cto.com  
 
  内存表在上面系统中,类似于设计模式中的中介者模式。中介者模式的特点是,用一个中介对象封闭一系列的对象交互,各个对象不需要相互作用,使其耦合松散,从而独立改变它们之间的交互。
 
四、内存表问答:
 
(一)、如何做到数据库的全内存操作,不要经过老牛般的硬盘?
 
  你可以把数据库安装在“内存硬盘”中,“内存硬盘”是用内存虚拟硬盘,这样数据库在读取诸如用户权限、配置信息时,也是从内存加载,有效克服最后的瓶颈。至于“内存硬盘”如果和硬盘同步,也有解决方案。
 
(二)、基于内存表通信的速度有我自行开发的socket快吗?
 
  如果两台电脑通过socket对连,内存表通信肯定没有socket快,但也慢不到那里去,因为都在内存操作。内存表只是一个中介者,有了这个中介者会带来很多好处,如访问容易,就像在不同电脑之间加入路由器一样。
 
(三)、基于内存表的缓存系统怎么在现有系统上集成?
 
  你可以把“需要缓存”、不常执行新增删除修改的表,改为内存表。把原来的数据表,改个名字,系统启动时,用程序把数据表插入内存表。这样代码和sql做到最少改动。原数据表的新增删除修改部分代码,增加"改名后的数据表"操作部分。
    
  极少更新的表,可以不修改现有任何代码,建立一个伺服程序,过段时间把数据表同步到内存表中(操作最好带事务,不然读”内存表“程序可能出现数据出错),当然时间间隔你可以根据情况自行调整。
 
(四)、大家都知道数据库连接数是有限的,如果用内存表通信支持高并发?
 
  对于高并发,内存数据库的并发量高于基于硬盘的并发量。这时任何基于传统数据库驱动的程序会感到更吃力,因为传统数据库有i/o的瓶颈。这时你只要使用传统分流数据库并发方式来操作就可以了,如物理分库, 数据库集群、负载均衡、路由选择库表散列。另外你可以使用高效率c/c++来接收通信,把收到内容放入队列,队列程序再放入内存表,使用java/c#擅长逻辑处理的程序从内存表中取出做业务逻辑处理,处理完后的结果放在内存表,队列程序从内存表中取出到发送队列,c/c++从发送队列发送给客户端。  www.2cto.com  
 
五、测试图
 
  下图为使用内存表测试结果,其中testGetEntitiesByArray(),测试了一万条数据库事务处理。不处理数据库时测试平均为2s,使用数据库为5s,内存表用了3s。
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • Request.ServerVariables 参数大全
  • 执行全文索引时出现权限不足的解决方法
  • 导入excel文件处理流程节点的解决方案
  • 查看sql修改痕迹(SQL Change Tracking on Table)
  • MongoDB安装为Windows服务方法与注意事项
  • App数据层设计及云存储使用指南
  • PostgreSQL启动过程中的那些事三:加载GUC参数
  • 写给MongoDB开发者的50条建议Tip1
  • Percolator与分布式事务思考(二)
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1