上海涛德顾问学院

查看: 4324|回复: 0

Nosql在银行领域的应用(涛德Nosql开发培训课程案例)

[复制链接]

88

主题

0

好友

451

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2014-4-28 22:29:09 |显示全部楼层
Nosql在银行领域的应用(同时也是涛德Nosql开发培训课程案例环境)


后续代码为:涛德顾问学院NoSQL案例。


过去几年中,随着个人消费的飞速发展催生了各种支付服务提供商,为百姓生活提供便利和实惠。据央行数据显示: 2011 年,全国各支付系统共处理支付业务155.23亿笔,金额1991.90万亿元。 全国使用非现金支付工具办理支付业务338.30亿笔,金额1104.35万亿元。 截至2011年末,全国共开立银行结算账户41.10亿户。其中,个人银行结算账户40.82亿户,单位银行结算账户2824万户。银行业金融机构通过联 网核查公民身份信息系统核查客户居民身份证28.58亿次,日均达783万次。


有分析机构预测,移动支付有着巨大的潜在市场和完善的支付基础设施,发展空间十分广阔。


在确保支付服务安全的前提下,要提升支付服务的用户体验和质量,我认为其中一个很重要的因素就是确保每笔支付都能在固定时间内完成(支付成功或者支付失败)。根据国外信用卡机构(万事达、Visa等)的反馈,好的支付服务商几乎可以在1秒内完成信用卡支付。要在短短一秒内完成这笔交易,中间 涉及到: 安全保障、风险审计、欺诈检测、事务交易等许多操作,其中有些操作可能是夸机构的(比如在人民银行和普通商业银行间)。 同时,这期间还涉及到海量的数据处理、大批量的并行支付请求、各种复杂的支付应用和网络等等。 看来要做到“秒支付”还是有很大挑战的。


对数据库的需求通过搜索、电子商务和社交网站的用户使用感受来看,通常要求数据库系统的每笔请求响应时间在100毫秒以下级别,最少有每 秒处理几十万次的读取操作和上万次写操作的能力。 注意,绝大部分高端的关系型数据库或者一体机或许能做到90%的情况下,每笔请求能在100毫秒内完成;但是,往往那10%的极端情况,有可能会需要很 久,甚至无法成功结束。常见的例子就是发生数据库死锁,或者数据冲突情况下。这是由关系型数据库本身的体系结构决定的,无法从根本上根除。


而且关系型数据除了成本昂贵外,其系统的扩展性和伸缩性有可能是另外一个短板。从实践来看,将MySQL集群从一个节点扩展到几十个节点是可行的,操作的 技术难度、时间和费用或许是可以接受的。但是如果面对夸区域的很多数据中心、几千上万台的机器,试想技术难度和成本将是很可观的。


目前,从国外的实践来看,越来越多地金融行业的系统开始向NoSQL系统看齐。 NoSQL系统因为其设计的初衷 (简单的数据模型、大规模分布式的扩展性和伸缩性、简化的管理等),逐渐崭露头角。 而商业化运作NoSQL数据库的公司,面前来看好像只有Oracle一家 (截止到2013/5月,数据可能有出入)。


Oracle NoSQL 数据库的优势
Oracle NoSQL数据库 (简称NoSQL)是一款面向企业大数据方向新推出的利器,能够提供近乎实时的数据请求服务,可用来集中管理PB级别以上的数据量 (1 PB = 1000 TB)。 并且,由于NoSQL良好的扩展性和伸缩性,它的运算能力在理论上可以被无限扩展到跨地域的很多数据中心。


NoSQL独创的简单主键 (major key) + 子键 (sub key)和值 (value)的数据模型和较为宽松的ACID事务提供了水平扩展环境中针对大型数据集操作的极大灵活性。 为了简单起见,我们可以把主键看成是操作系统的Home目录 (如 /home/chao) ,而子键看成是Home目录下各个文件路径(如 Desktop, Music, Video, Mail等),而具体的文件内容则保存在Value域中。 在具体操作上, NoSQL提供在单个分区(即单个Home目录)下的事务保护,针对读写操作提供可动态指定的写持久性和读一致性事务策略:全局策略/单次操作策略。

针对信用卡系统的数据建模
根据之前介绍,基于Oracle NoSQL数据库的一个简单的信用卡系统模型可能会像这样:
       主键 - 次键      --        值
/ACCOUNTNUM/-/card -- {cardNum, holderId, balance, isValid, ...}  ## 信用卡的信息
/ACCOUNTNUM/-/holderinfo -- {name, email, sex, age, ...}   ## 持卡人的信息
/ACCOUNTNUM/trans/-/month/timestamp -- {transaction details: amount, dealer, description, ...}  ## 交易流水
/ACCOUNTNUM/trans/-/month/statement -- {monthly statement: fromDate, toDate, transactionList, sum, ...}  ## 月结账单(报表用)
根据以上模型,那么我们可以具体提供的操作有(部分):
openAccount();   // 开户
cancelAccount(); // 销户
grantTrans();    // 授权该笔交易
rejectTrans();   // 拒绝该笔交易
charge();        // 收费清算
queryBalance();  // 查询余额
processMonthlyStmt();  // 产生月结账单
涛德顾问学院
Oracle OCM 11g认证培训Oracle 12c OCP 全国独家推出
大数据,BI商业智能,数据库,ADF,中间件,EBS,ODI,ETL全产业链培训服务提供商
回复

使用道具 举报

上海涛德顾问学院 ( 沪ICP备14006824号 )  

GMT+8, 2018-6-18 16:05 , Processed in 0.251801 second(s), 25 queries , Gzip On.

Top Data World

回顶部