Orip:基于内存数据库的海量数据实时处理解决方案

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

Orip:基于内存数据库的海量数据实时处理解决方案李朝铭(北京开拓天际信息技术有限公司首席架构师)2010.4.3目录内存数据库简介orip内存数据库架构orip内存数据库应用开发框架orip内存数据库应用案例orip内存数据库开发什么是海量数据处理?当数据量不断突破TB、PB、EB级时,当企业关键应用开始数据大集中、应用管理大集中时,当企业数据库中心向多城市扩张时,当前的数据库体系开始面临各种发展瓶颈:如何将单一数据库通过Cluster集群方式扩展?如何利用Cache机制提高数据库访问速度、如何性能调优?如何保证数据库的备份、容灾安全、同步性、一致性?--摘自本次大会网站主页当在线用户数达到数万甚至是数百万时,当每分钟有数十万甚至数千万SQL需要处理时,当用户请求要求在秒级甚至在毫秒级得到响应时,而满足这些需求我们的money却非常有限时……应选用何种数据库?数据库如何设计?其安全可靠性如何保障?--这是本演讲的主题什么是内存数据库·什么是内存数据库?数据主要存储于内存中,具备数据库的基本功能·为什么要使用内存数据库?一些应用要求极高的数据处理性能,而内存数据库性能远远高于基于磁盘的关系数据库;内存价格已下降·常见的内存数据库有哪些?(Altibase、Timesten、SolidDB、BerkeleyDB、eXtremeDB…..)什么是ORIP?ORIP是OnDemandRealTimeInformationProcessPlatform的缩写,中文名称为“实时信息随需处理平台”。内存数据库消息中间件SOA服务平台内置了消息引擎、内存数据库引擎、SOA服务引擎、企业信息服务总线和高可用管理模块等广泛适用于电信、金融、电力、税务、保险、证券等数据量大、实时性和可靠性要求高的行业应用运行平台动态Web服务器HA管理软件更高的综合性能·相对传统关系数据库方式,总体性能有10倍以上的提高·DELL2950(2*42.5GHzCPU,16GB内存)上并发处理平均处理能力接近每秒20万个SQL·在千兆网络下,ORIP单事例每秒可同时处理5万个以上的并发HTTP请求(含内存数据库访问)高可靠性·Orip提供了redo日志,保证了主机或ORIP进程在意外down掉的情况下,数据能够可靠地恢复·checkPoint机制兼顾了性能和故障恢复时间·支持事务和非事务模式·支持一个服务内多个事务穿插进行更高的可用性·ORIP内置高可用(HA)软件特性,可支持双机热备、双机热并行、N+1备份、多机并行等·可在无磁盘阵列柜的情况下,实现双机数据(内存数据库)的准实时同步·在不启用ORIP内置HA特性的情况下,可安装oripMon守护进程,将自动重启意外down掉的orip事例内存数据库简介orip内存数据库架构orip内存数据库应用开发框架orip内存数据库应用案例orip内存数据库开发ORIP体系结构Orip事例SGAMAOripConsole字典缓冲区消息缓冲区系统内核组件系统标准组件oripmgroripsql事务缓冲区数据存储区Redo日志缓冲区共享索引区用户服务组件用户服务组件用户服务组件用户服务组件网络管理字典管理缓冲区管理事务管理锁管理组件库管理客户端接口库任务管理消息管理服务管理备份管理恢复管理日志管理应用用户进程应用用户进程参数配置文件控制文件数据文件备份重做日志文件服务动态库锁文件Profile文件Orip客户端许可文件Orip脱机存储区Orip内存数据库管理工具····oripmgroripsqloripexp/oripimporipconsoleORIPHA主备示意1/3√服务地址:192.168.1.3启动地址:192.168.1.1心跳地址:10.16.1.1orip主节点Redolog启动地址:192.168.1.2心跳地址:10.16.1.2orip备节点ORIPHA主备示意2/3X服务地址:192.168.1.3启动地址:192.168.1.1心跳地址:10.16.1.1orip主节点启动地址:192.168.1.2心跳地址:10.16.1.2orip备节点ORIPHA主备示意3/3服务地址:192.168.1.3启动地址:192.168.1.1心跳地址:10.16.1.1orip主节点√Redolog√服务地址:192.168.1.4启动地址:192.168.1.2心跳地址:10.16.1.2orip备节点内存数据库简介orip内存数据库架构orip内存数据库应用开发框架orip内存数据库应用案例orip内存数据库开发内存数据库应用开发架构应用OripServer应用内存数据库内存数据库用户服务组件用户服务组件常规嵌入式内存数据库应用开发模式ORIP嵌入式内存数据库应用开发模式内存数据库简介orip内存数据库架构orip内存数据库应用开发框架orip内存数据库应用案例orip内存数据库开发支持一亿用户的电信用户帐单/余额查询系统内存表:1.用户身份认证表用户1用户2用户n2、用户余额表3、用户帐单表(每月一个)服务器配置:IBM38502台(每台64GB内存,4CPU),双机并行互为备份操作系统:Linux64位支持百万用户同时在线的IM设计1/2--IM用户信息表createtableimUser(userNamevarchar(16)primarykey,uidunsignedint,petNamevarchar(16),passwordvarchar(16),registerTimeunsignedint);--IM用户朋友表createtableimUserFriend(uidunsignedintprimarykey,friendIdunsignedintprimarykey,groupIdunsignedint);--IMUid与用户对应表createtableimUserUid(uidunsignedintprimarykey,userNamevarchar(16),socketIdint,ipunsignedint,portunsignedshortint,offlineMsgchar,statuschar,lastLoginTimeunsignedint);支持百万用户同时在线的IM设计2/2用户2用户1X.X.1.1城市1X.X.1.2用户3RedologX.X.2.1城市2X.X.2.2X.X.3.1城市3X.X.3.2用户5用户4内存数据库简介orip内存数据库架构orip内存数据库应用开发框架orip内存数据库应用案例orip内存数据库开发Orip内存数据库开发示例1/2#includeorip_server.h/*insertdemo*/IntserviceInsertDemo(char*inPara,char**outPara,int*retLen){chardbMsisdn[12];chardbName[32];intdbAge=0;LDATETIMEdbDt;CLI_PTR*cliPtr=NULL;……cliPtr=(CLI_PTR*)mallocCli(100);cliPtr=addInsertHead(cliPtr,dbMsisdn,mdb_demo,&trans1,&flag);cliPtr=addField(cliPtr,msisdn,dbMsisdn,strlen(dbMsisdn),DT_CHAR,&flag);cliPtr=addField(cliPtr,name,dbName,strlen(dbName),DT_CHAR,&flag);cliPtr=addField(cliPtr,age,(char*)&dbAge,4,DT_INT,&flag);cliPtr=addField(cliPtr,dt,(char*)&dbDt,8,DT_LDATETIME,&flag);callInsert(cliPtr,&ret);……}Orip内存数据库开发示例2/2#includeorip_server.h/*selectdemo*/intserviceSelectDemo(char*inPara,char**outPara,int*retLen){chardbMsisdn[12];chardbName[32];intdbAge=0;LDATETIMEdbDt;SELECT_PARApara[4];CLI_PTR*cliPtr=NULL;char*ptr=NULL;char*freePtr=NULL;......strncpy(dbMsisdn,inPara,11);dbMsisdn[11]=0;para[0].val=(char*)&dbMsisdn;para[1].val=(char*)&dbName;para[2].val=(char*)&dbAge;para[3].val=(char*)&dbDt;cliPtr=(CLI_PTR*)mallocCli(100);cliPtr=addSelectHead(cliPtr,dbMsisdn,mdb_demo,&flag);cliPtr=addFieldEmpty(cliPtr,msisdn,DT_CHAR,&flag);cliPtr=addFieldEmpty(cliPtr,name,DT_CHAR,&flag);cliPtr=addFieldEmpty(cliPtr,age,DT_INT,&flag);cliPtr=addFieldEmpty(cliPtr,dt,DT_LDATETIME,&flag);cliPtr=addWhereSign(cliPtr);ptr=callSelect(cliPtr,&ret);freePtr=ptr;if(ret=0){/*获取首条记录*/ret=getSelectFirstResult(&ptr,¶[0],¶[1],¶[2],¶[3],NULL);char*dt=NULL;dt=l_dttoc1(dbDt);printf(\ndbMsisdn=%s,dbName=%s,dbAge=%d,dt=%s\n,dbMsisdn,dbName,dbAge,dt);free(dt);}elseif(ret0){printf(\nselecterror:%d\n,ret);returnret;}if(freePtr)free(freePtr);return0;}演示谢谢!orip.kaitone@gmail.com

1 / 25
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功