转载自微信公众号:天堂的鸟窝
3、局域网C/S时代
SystemR是蓝色巨人IBM组织来自世界各地的专家在圣约瑟实验室开展的一个关系型数据库研发项目。基于SystemR,IBM推出运行在其大、中型计算机VMS操作系统上的DB2,随即被世界各地的各类机构广泛采用。
Oracle、Sybase、Infomix也随后成立,在计算机硬件技术飞速发展的年代,基于UNIX操作系统的关系型数据库管理系统得到迅猛发展。在微软的Windows平台发展到NT之后,Oralce、Sybase陆续被移植到NT平台上,微软在获得Sybase 4.2的版权后,开始研发自己的SQL Server,为此NT还专门为SQL Server进行针对性的优化。
Novell基于IPX/SPX的共享网络文件系统,已经难以满足以关系型数据库为核心的高密度计算的需要,即使支撑大型营业部柜面交易系统的发展也难以为续,由此证券营业部进入了局域网C/S时代。
在上一轮竞争中存活下来软件开发商,随即进入一场基于C/S的柜面交易系统的研发竞赛。不同的软件开发商采取了不同的策略,有选择Unix/NT+Oracle组合的,也有选择NT+Sybase/SQL Server组合的。
无论是Oracle还是Sybase/SQL Server,所提供的基于SQL的解释型程序设计语言均是运行在服务器端的,而非客户端,他们均提供了一组API来实现客户端与服务器端的通讯。
基于客户机的应用软件,将在Windows平台上基于Delphi/MFC实现,而服务器端则多采用存储过程实现。
这与基于Btrive完全不同,由于业务的实现被分割成服务器端和客户端,服务器端的存储过程相对于dBASE/FoxPro是功能巨大提升,升级、维护并没有太大的障碍,但客户端基于Delphi/MFC却面临升级和维护的巨大问题,好在那个时代,核心业务规则是由交易所、监管机构联合制定的,证券营业部并无太多的个性化空间,因此客户端升级、维护的潜在问题暂时被忽略了。
Oracle、Sybase/SQL Server是一个完备的关系性数据库系统,且没有太多的限制,那数据库表格的设计是不是该得到规范?数据库的设计是不是应该遵循3NF?
证券属于金融行业,金融行业的对数据存储年限以法律、法规形式进行了明确的规定,业务规则以及与之相配套数据向前兼容成为一种强制性的要求,因此数据库的设计并没有本质上的提升,而只是做了局部的优化。
SQL基于关系代数,是完备的,但违反范式的表格设计将导致用SQL书写业务逻辑非常别扭,因此在存储过程中,包含大量的游标。
其实游标是层次型数据库系统的产物,也是因为上个世纪70年代大量的金融机构使用COBOL程序设计语言+层次型数据库实现以银行业务为核心的金融类应用系统,因业务处理逻辑向前兼容的需要而保留在关系型数据库系统之中。
这是行业的第一次真正的硬实力升级,技术实力不济的公司陆续倒下,也有些公司认识在自身的能力的局限,需要与其他公司抱团相互取长补短。1995年杭州恒生电子股份有限公司成立,1998年金证科技股份有限公司成立。
早期的Oracle、Sybase/SQL Server并不包含自动优化能力,因此使用索引、书写高效率的SQL语句对软件编程人员有着较高的要求,Delphi/MFC的开发也与dBASE/FoxPro不可同日而语,一些软件开发商被淘汰出局。
也有使用PowerBuilder来实现客户端的,由于PowerBuilder过于臃肿,对运行它的PC计算机性能要求过高,而早早被淘汰出去。
这个时代,软件开发商的主要利润依旧来自营业部的网络集成,但柜面交易软件带来的利润在迅速提升。
在2001年5月16日之前,并没有所谓的三方存管。股民要炒股,需要从银行取出现金,再到证券营业部办理资金存入,股民的炒股的钱是存到证券公司名下的。
在证券交易持续火爆后,银行眼睁睁看到巨额的资金取出,流入证券公司,为了确保不流失优质客户,银行纷纷主动与证券营业部开展银证合作。初期是银行派人在证券营业部设立专柜,现场办理股民的资金提取、存入业务。后来通过专用通信线路实现了证券柜面交易系统与银行储蓄系统之间的转账业务。银证通的开通,促进了证券交易的持续火爆。
当互联网席卷世界的时候,中国自然不能幸免。经过多年的积累,基于互联网的桌面行情分析系统逐渐普及,与证券营业部的「钱龙」相比,除资讯信息更加丰富以外,技术分析指标可以自定义参数,甚至根据需要创设新的指标,这其中的佼佼者包括「通达信」和「核新」,尤其是「核新」,与证券营业部合作,极力拓展安全的网络自助交易系统,柜面交易系统开发商则为证券营业部提供一个简易的网关来应对这个日益增长的需求。
证券营业部为股民提供的交易通道包括,营业部交易大厅、中户室、大户室的自助交易终端、电话自助交易系统、网上自助交易系统、以及银证转账系统,相对于柜面交易系统,它们被称为外围系统。柜面交易系统开发商提供的简易网关同时扮演两个角色,对外围系统,它是服务器;对柜面交易系统,它是客户机。
在中国有史以来的第一个全民炒股疯癫时期,技术分析似乎成为炒股的无往不胜的宝剑,软件开发商深度挖掘仅有的行情数据和从各种渠道收集的各种信息,「创新」了很多指标,比如「内盘」、「外盘」,并据此加上成交量,演化出「主力资金流入」、「主力资金流出」,这些指标甚至出现在央视的财经频道中,还有令人眩目的「筹码分布图」。各种与技术分析有关的图书也层出不穷。
交易所发布的行情大约是每分钟更新6-9次。行情数据就是过去几秒钟内数次成交的累加。所谓的「外盘」、「内盘」就是比较最新的成交与前一次行情的最高委托买入价、最低委托卖出价的关系,用简单逻辑判断计算而来,这种计算最多只能称作估算,所谓的「大单」,「主力」则是根据成交量来判断的,就更不靠谱了。
那个时代发明的玩艺,直到今天依旧还有人深信不疑,有需求就有供应,所以依旧保留在现今的行情及技术分析软件中。
为了满足股民深度研习指标系统,一个叫「分析家」的桌面应用红遍大江南北,它最大的特色就是允许使用者自定义指标,并用行情历史数据进行检验,得出最佳的买入点和卖出点。如果耦合度高,这个指标就可以拿到网上去叫卖。
其实指标这东西咋说呢,如果央行宣布收紧流动性或者证监会宣布增加交易印花税,这些指标管啥用?!
今天许多吹得神乎其神的智能投顾的核心还是这个玩艺,只不过用AI这个时髦的科技新瓶包装了疯癫时代的旧酒而已。
在证券公司由共享网络时代转移到局域网C/S期间,证券营业部几乎将当时最好的CompaQ、HP工作组级服务器、最好的UPS以及最好的Cisco网络交换机统统搬进了证券营业部(那个时代妥妥的剁手党),还煞有其事为这些办公、家庭级别的计算机配备了堪比中、小型计算机才能享用的机房。
有钱确实任性,不得不服。那时候证券营业部一个普通柜员的年终奖,就可以让这些小姑娘轻松出国旅行了。
同一时期,我先后在两家美资软件外企做高级工程师,收入比不上一个证券营业部的普通柜员。,男怕入错行啊。
证券营业部的交易网络全部替换成TCP/IP网络后,行情依旧采用基于IPX/SPX的Novell网。
这一轮升级,Cisco成为一个大赢家,它在中国的成功很大程度归功于其在证券行业的成功,Cisco网络交换机几乎成为证券营业部的标配。
现在大家知道了,我们真的是养肥了一条白眼狼。还记得同一个时代摩托罗拉各种颜色的塑料翻盖手机吗?和今天的牌机比都是个渣,可它的广告语却是「其完美程度非笔墨可以形容」,是不是比今天的互联网能忽悠多了。嗯,美国佬真的很坏的。
进入新世纪后,在证券营业部进行证券交易的股民人数已经大幅度减少,但依旧不时人头攒动,因为只有在证券营业部里才有交头接耳交换各种所谓「内幕消息」的氛围。
4、广域网的C/M/S时代
2001年2月19日B股市场正式对国内个人开放,与A股的一个营业部至少有一个交易席位不同,B股一个证券公司只有1-2个交易席位。
经过近10年的发展(因为地方保护政策,异地开设营业部也是一部证券公司的血泪史,因为IT无关,就不细述了),大的证券公司已经有几十家证券营业部了,选哪家营业部呢,这个问题讨论下去显然永远没有最佳答案。唯一可行的解决方案就是将证券营业部的B股业务集中起来,共享这个宝贵的B股交易席位。
由此证券行业开始试水广域网。每个开展B股业务的营业部都通过DDN连接到一个指定证券营业部,再由这个营业部连接到交易所,这个事其实并不难。
异地DDN在当时也是一笔不小的开支,只处理B股业务显然有些浪费。区域集中柜面交易系统出现了,但其最终没有成为一个支持异地营业部集中管理的主要系统,反而更适合集中管理同一个城市的多个营业部,必竞同城DDN费用还是低了许多,建设高大上的独立营业部让一些地方性中、小券商也吃不消了。
另一个方面,由于当时证券行业大量存在不同程度的挪用股民证券交易保证金,以及证券营业部柜台销售企业债的烂事,东窗事发导致证券行业开始一次力度空前的清理整顿,证券公司为啥会挪用股民的证券交易保证金,看看今天的共享单车为啥会提取押金困难的相关分析报道,就知晓了。
这个整顿持续到2004年才基本结束,历史上颇有名气的大券商南方证券、华夏证券(我第一次开户就是在华夏证券)消失了。
国家为处理证券行业捅的这个大娄子,付出了高昂的代价,我因为工作关系在意外翻阅一叠报表时,看到这个以亿为单位的确切数字,我不知道这个算不算国家秘密,因为还没有过去25年就不说了。
2001年5月16日是证券业的黑暗之日,中国证监会发布了《客户交易结算资金管理办法》,明确了证券、期货投资者的资金必须有第三方存管机构存管,以保障客户的资金安全。
这此整顿对证券行业最深的伤害就是推行三方存管制度,这令多少证券从业人员心碎,因为它导致国外非常成熟的账户管理无法在中国落地,没有这个,财富管理就永远无法对标国际先进水平了。而且最悲催的是,这还是由证监会的相关人员主动提出的,妥妥的投降啊,自然乐坏了银行业。
意识到已有的以证券营业部为主的分散经营模式风险实在太大,且持续发展成本过高(想想一个证券营业部的建设成本),于是将证券业务集中到证券公司总部进行集中管理的思路就被提了出来。
采用星型结构,将总部和各个营业部连接在一起,使用广域DDN,不可靠?那就两条。带宽?总比卫星强,这不是问题。
关键是数据库服务器,这个事不好办。有银行背景的券商,偏向于中、小型计算机,其他证券公司呢,工作组级别的服务器显然无法满足要求,咋办?一台不行就多台组合,组合的方法就是群集。
那时候,券商和软件开发商估计一门心思就是集中才好控制风险,控制风险成为首要目标,至于为以后业务开展预留架构上的发展空间,早就抛到了太平洋里。
与此同时,性能他们却始终念念不忘,这个是关键的技术指标。
那毕竟是2001年,没有人是神仙,无论券商,还是软件开发商,在构建基于广域网的集中式证券交易系统上都是小白。
两种实现思路,一种就是将局域网简单放大成广域网,一种是采用当时国际流行的中间件技术。
于是软件开发商又开始进行新一轮的研发竞赛,这次竞赛对技术的要求比上一次更高。
如果A与B之间关系过于复杂,那就在A之间引入一个C,使得A与C的之间的复杂度以及B与C之间的复杂度远小于A与B之间的复杂度。这就是多种设计模式的核心思想,比如适配器、中介者以及门面等设计模式。
在C/S架构中,中间件位于客户机和服务器之间,为构建大规模、高性能、分布式C/S应用程序提供了通信,事物、安全、容错等基础服务,屏蔽了底层应用细节,应用程序不必从底层开发,以自身的复杂性换取应用程序开发的简单。
基于局域网的中间件只要是事物处理中间件(TPM),而基于广域网的中间件则包含消息中间件(MOM)和事务处理中间件。
当时,知名的事务处理中间件有IBM的CICS和BEA公司的Tuexdo,而消息中间件则是IBM的MQ。那时开源才开始启蒙,因此无法获取CICS和Tuexdo以及MQ的源代码。
根据用户手册,金证的研发工程师用近2年的时间主要参考CICS开发了KCBP,参考MQ开发了KCXP,而恒生电子的研发工程师则开发了具有类似功能的AS和AR,金仕达也开发了类似的组件,至于顶点的内部产品叫什么,我就不知晓了。
金证、恒生、金仕达内部研发的产品/组件,尽管名字不同,部署方式存在差异,功能也不尽相同,但它们所起的作用则是非常类似的——「以自身的复杂性换取应用程序开发的简单」,尤其是恒生和金证,它们由此共同塑造了今天证券IT的主要格局。
在各自的产品/组件之上,恒生的支持广域网的证券集中交易系统叫「证券交易企业版」,金证叫「新一代集中交易」,顶点叫「A.BOSS」,而金仕达好像没有具体的名字,如果有我也不知道,因为我没有太关心过这个事,如同顶点的A.BOSS的实现思路。
相比较而言,恒生产品的命名及本版号管理更加规范,金证比较有意思,新产品喜欢冠以「新一代」,现在是新几代?
集中式证券交易系统的招标无一例外都来自大券商,这些大券商心甘情愿成为小白鼠,为推动中国证券业迈入广域网集中式证券交易时代作出了伟大的贡献。
软件开发商则忙于带着自己的原型系统参与一轮又一轮的测试、评估、改进、再测试、再评估。最终恒生、金证、金仕达均得了大券商的认同,找到合作券商研发集中式证券交易系统。
没有找到合作伙伴的软件开发商则惨遭淘汰逐步退出市场竞争,而坚持下来的就只剩下顶点了,它的策略是暂避锋芒,选择为中、小券商提供服务。
2001年到2002年间,恒生、金证先后正式发布集中式证券交易系统,随后集中式证券交易系统陆续在各自的合作伙伴券商那里成功上线,由此进入了基于广域网的集中交易时代。国泰君安的集中交易上线后,还给上海证监局专门打过一个报告,陈述大集中的必要性、合理性以及可行性。
无论是金证的KCBP、KCXP还是恒生的AS、AR,其实都谈不上是成熟的商业软件,它们的设计目标就是自用(金仕达更彻底,就是内部组件级别),因此无论是功能的完备性还是可靠性都难以与国际上的商业软件相匹敌,自然构建在其基础之上的集中式证券交易系统都无一例外或多、或少造成了大大小小的各种级别的事故,通过处理事故,修改BUG,它们逐渐稳定下来,在2015年的天量行情中经受住了考验。
中国的芯片由于没有适合的生态,所以成长不起来,而恒生和金证是幸运的。
恒生、金证、金仕达的系统还是多少有差别的,讨论它们,比较优劣如同当年我在Sybase比较Sybase与Oralce的优劣,其实是一件很无聊的事情(其实都是基于市场需要做的宣传),因为站在不同的角度、在不同时间,即使是同一件事情,得出截然相反的结论,实属正常。今天我已经退休了,就更不会去比较了。
恒生的系统基于Unix/NT+Oralce,Unix运行在中、小型计算机上,与台式机相比,当年的中、小计算机的内存带宽与I/O吞吐能力是台式机无法比拟的,尽管主频并不高,运行数据库这类软件还是有相当优势的。
NT运行在工作组级别的服务器上,早年,单台其还是无法与中、小机抗衡,因此需要多台进行群集,OracleRAC自带的群集能力还是非常卓越的。
金证的系统就五花八门了,有AS/400+DB2,也有Unix+Oralce,Unix+DB2,还有NT+SQL Server,群集则是通过KCBP实现的,功能自然没有OracleRAC完备,但够用。
金仕达相对比较单一,Unix+Oracle。
早期的集中式证券交易系统主要解决广域网环境下的业务集中处理问题,性能是核心要素,因为大家都没有底,主要精力也在这上面。所谓的数据库设计主要是根据同一套系统管理多个营业部的需要,做了扩展。
基于中国证券IT发展简史(上)中的描述的原由,基础数据库并没有太大的变化,继续兼容以前的业务处理逻辑以及与之配套的历史数据。
到2006年,证券行业陆续完成了集中式证券交易系统的升级,恒生、金证成为最大的赢家——拥有最多的客户,并先后在2003、2004年上市。它们最终杀出重围,脱颖而出,技术在其中究竟起什么作用,才是我写这个简史的主要原因。
「(中间件)以自身的复杂性换取应用程序开发的简单」,我个人的总结就是如此,其实何止是换取应用程序开发的简单,更是换取了工程实施,维护以及满足不同证券公司个性化需要所带来二次开发的简单,更是换取了在证券行业高速发展过程中,快速响应不断推出新业务的能力。那些被淘汰的软件开发商,都没有自己的TPM/MOM,你以为是偶然吗?我认为是必然。
简单当然是相对的,但成本下降却是绝对的。
在激烈竞争中,维持低成本不是核心要素又是啥?如果采用商业化的CICS或者Tuxedo呢?可当年它们的售价是难以想象的。当然如果当年它们的售价就是今天的售价,我想无论是恒生还是金证,或许也不会选择这条路,但没有如果。
回想当年,行业通常认为金仕达的技术最好,为何其客户数始终停留在五个,而且也在逐渐被恒生和金证的产品所替换?
如果集中式证券交易系统全部用C++写成,无论是采用对象继承派生,还是基于接口的组合,20年(尤其是最近10年,新增了多少业务?),能支撑的下去吗?或许你说可以,现实的参考对象互联网企业好多呢,可这些成功的互联网企业所开发的系统是自用,恒生、金证可是面对不同需求的客户,你打算维护多少个版本?金仕达就是现实中的例子。
抽象,封装?2001年,你能预测今天中国证券的业务以及生态?没有对需求的全面了解,所谓的抽象真的只是抽筋。
自研的中间件还有另一个好处,通过隔离,避免小白的致命错误导致系统崩溃。所以谈平台,必然是容器+插件,而且插件的执行错误一定要被隔离。
因为「赖格宝」项目,在最牛逼的互联网公司,讨论一个小概率的业务风险处理方法时,一个职级相当高的架构师说,忽略,真的发生了,赔偿损失就是了。
妈的,当初我内心就嘀咕,真他娘的羡慕你,我在监管下必须严格遵守ACID,因为错了一分钱或者股民先看到成交回报、再看到委托,股民可以砸了证券公司营业部柜台上的玻璃,你丫的倒是绝对的自由,可以开心玩BASE,还有大数原理让你可以任性。
恒生、金证基于自己的中间件,积累了大量的软件资产,并构建了相对完整的研发、测试、工程、服务体系,并陆续通过CIMM5认证,这个其实还不重要。
如果你将证券发展在其时间维度上作一个切片,以今天的技术实现一个集中式证券交易系统并不难,但要向前保持业务处理以及相关数据的兼容,就难了,而且恒生、金证20年积累下来的数据又不那么规范、标准,你要翻译都难上加难,所以进入这个行业门槛其实非常之高,你同意我这个观点吗?,当然恒生、金证之间相互换来换去,还不算个事,因为双方都太了解彼此了。
至于集中交易系统的自身存在的问题以及解决的历史,如何迈向移动互联网时代,未来大致会如何,下次再写吧。
评论前必须登录!
注册