基于关系式数据库的金融大数据模型框架设计开题报告
2020-04-12 08:48:52
1. 研究目的与意义(文献综述)
1.1 设计的目的和意义
伴随着互联网的发展与移动应用的普及,互联网金融得到了长足的发展,伴随而来的是规模巨大的数据。据中国计算机学会(ccf)公布的一项调查显示,金融业在使用大数据方面排在了第二位。当前金融领域中商业银行、证券公司、保险公司以及其他的日常运作对实时交易的数量庞大有着推波助澜的作用,每一个金融机构都需要辅以大量的历史数据来支持决策。同时,大数据的潜在价值对金融领域而言是显著的,大数据改变了当前信息结构,允许金融机构收集和分析客户数据[1]。因而,金融从业者要通过数据挖掘、大数据分析获取有价值的信息,完成精准营销,进而降低营销成本,提高业绩。这时,一项重要的工作就是进行数据采集、处理和分析。
2. 研究的基本内容与方案
2.1 研究(设计)的基本内容
随着金融行业的快速发展,对金融大数据的采集、处理和分析的研究越重视,Python在金融行业的应用也越来越广泛。本研究的基本内容为研究Python在金融行业的应用,并基于Python和关系式数据库建立一个统一灵活的框架,用于金融大数据的采集、处理和分析。
2.2 研究(设计)的目标
本研究以Python和关系式数据库(SQL Server或MySQL)为基础,旨在建立一个标准、通用、灵活的模型框架,使得Python编写的金融模型可以作为可拔插的组件在一个统一的框架下发挥作用,并且享有与数据库交互的便利机制。
通过建立统一的框架,使得金融大数据的采集、处理和分析变得简单,加上python本身的特点,可以使金融从业人员快速掌握框架的使用、完善和更新。
2.3 研究(设计)的主要模块
本研究中包括Python、关系式数据库和Python模型框架三个主要模块。Python是整个研究的核心部分,关系式数据库是金融大数据的主要载体,Python模型框架是本研究的主要目标及成果。
2.3.1 Python介绍
Python是一种面向对象的解释性的计算机程序设计语言,也是一种成熟、稳定、完善的通用性语言,具有丰富的类库。Python也是一种高级语言,相比低级语言来说,编写Python程序耗时更少、程序更短,因此更容易阅读,也更容易保证程序的正确性。作为高级语言,Python是可移植的,同样的程序可以在不同类型的系统上运行[4]。
Python是一种脚本语言,因此也具有脚本语言的所有特点:解释的、面向对象的、内建的高级数据结构、支持模块和包、支持多种平台、可扩展。下面是Python自身的几个主要特性[5]:
1)解释性
Python编写的程序可以直接从源代码执行。Python在执行时,首先会将.py文件中的源代码编译成Python的字节码,然后再有Python虚拟机来执行这些编译好的字节码。基于C的Python编译出的字节码文件,通常是.pyc格式。
由于这个特性,你只需要把你的Python程序拷贝到另外一台计算机上,它就可以工作了,从而使Python程序更加易于移植。
2)面向对象
Python即支持面向过程的编程,也支持面向对象的编程。相比于C 和Java,Python的面向对象编程的方式更加简单。
3)可扩展性
Python能够和其它语言制作的各种模块(尤其是C/C )轻松地联结在一起。因此,如果你想要一些关键代码运行得更快,你可以将那部分代码用C或者C 实现,然后在Python程序中使用它们。
4)可嵌入性
开发者可以将Python嵌入到C/C 程序中,从而向程序用户提供脚本功能。
5)丰富的库
Python具有强大而丰富的库,可以帮助开发者处理很多工作。
2.3.2 关系式数据库介绍
关系型数据库,是指采用了关系模型来组织数据的数据库。简单来说,关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织。常见的关系型数据库有Oracle、MySQL、SQL Server等等[6]。
对于程序开发人员而言,目前使用最流行的两种后台数据库即为MySQL和SQL Server。这两者最基本的相似之处在于数据存储和属于查询系统。你可以使用SQL来访问这两种数据库的数据,因为它们都支持ANSI-SQL。另外这两种数据库系统都支持二进制关键词和关键索引,这就大大地加快了查询速度。同时,二者也都提供支持XML的各种格式。
对比二者特点以及本次研究项目,本研究暂定选择SQL Server作为数据库。SQL Server 是一个关系数据库管理系统。主要具有可信任的、高效的、智能的特点,使得它成为至今为止的最强大和最全面的SQL Server版本[7]。其中SQL Server提供了丰富的安全特性,提供了许多旨在改善数据库环境的总体安全性的增强功能和新功能。它增加了密钥加密和身份验证功能,并引入了新的审核系统,以帮助您报告用户行为并满足法规要求。并且,它的安全机制可以分为5个层级:客户机安全机制、网络传输的安全机制、实例级别安全机制、数据库级别安全机制、对象级别安全机制。使其在安全方面表现的更加突出。而新的审核系统和 SQL Server 基于策略的管理则为您提供新工具来监控安全合规性的状态。
2.3.3 Python框架
为提高网页开发的效率和易用性,在开发的过程中往往会使用框架,框架把一些 Web 开发中需要解决的共有性问题强制地使用公共的方法,如页面渲染、应用配置等,这样减少了开发难度,也节省了时间[8]。框架直接把每种性能都做成模板,放在平台里,使用时调用, 能减免开发者自己定义大量的模块来实现一些基础的性能,也让扩展变得更容易。基于Python 语言的框架有很多,在众多的框架里,我们主要介绍市场占用率比较高的 5 种。
(1)Django
Django是一个开源的框架,采用 MVC 设计模式,有很多实用的库来帮助 Web 开发。它拥有最完善的官方文档和全套的解决方案,Web 开发里所有需要的工具都能提供,admin interface 可以让开发者简单几句代码就可构建一个完整的后台管理界面。相对来说 Django 整个系统相对封闭,系统属于紧耦合,想要用第三方库来代替某项功能比较困难[9]。
(2)Pylons
Pylons只有两千行左右代码,数量较少。只提供一个架子和可选方案,用户可根据需求选择 Template、ORM、form、auth 等组件。它有很多功能由第三方库提供,用户在学习 Pylons 时还得学习库的使用方法,学习量增大,此框架不适用于初学者。
(3)Web.py
Web.py一直遵从 keep it simple and powerful 的设计理念,代码数量少,功能实现也不依靠第三方模块,仅提供给用户一些框架必备的功能,这样让开发者可以更加关注业务逻辑,而不必去担心受到框架的限制,但另一方面也加大了开发者的工作量。
(4)Bottle
微型Python Web框架,Bottle是一个简单高效的遵循WSGI的微型python Web框架。说微型,是因为它只有一个文件,除Python标准库外,它不依赖于任何第三方模块。
(5)Flask
Flask是一个使用Python编写的轻量级Web应用框架。基于Werkzeug WSGI工具箱和Jinja2 模板引擎。Flask也被称为“microframework”,因为它使用简单的核心,用extension增加其他功能。Flask没有默认使用的数据库、窗体验证工具。然而,Flask保留了扩增的弹性,可以用Flask-extension加入这些功能:ORM、窗体验证工具、文件上传、各种开放式身份验证技术[10]。
综合各框架特点、性能,本次研究中采用Flask作为Python框架。Flask有以下特点:
(1)Flask是Micro Framework,属于轻量级Web应用框架。
(2)Flask自由、灵活,可扩展性强,第三方库的选择面广,开发时可以结合自己最喜欢用的轮子,也能结合最流行最强大的Python库。
(3)入门简单,即便没有多少Web开发经验,也能很快作出网站。
(4)非常适用于小型网站。
(5)非常适用于开发Web服务的API。
(6)开发大型网站无压力,但是代码架构需要自己设计,开发成本取决于开发者的能力和经验。
(7)各方面性能均等于或优于Django。
(8)扩展库多,Django自带的或第三方的好评如潮的功能,Flask上总会找到与之类似的第三方库。
(9)Flask与关系型数据库的配合较好。
2.4 拟采用的技术方案及措施
本研究通过搭建Python中的Flask框架,利用Python编写设计金融模型,作为可以在Flask框架下运行的插件,以完成特定的数据采集、处理和分析,并且可以利用Flask中相应的库,让Flask框架和SQL Server进行交互。
|
系统框图如下所示:
图2.1系统框图
在技术上的关键点主要是要确定一个能够满足金融大数据的Python框架以及安全可靠的关系式数据库。
在金融框架选择方面,Python拥有很多开源框架,例如:Django、Pylons、Web.py、Flask等等,通过一系列比较,最终拟选定Flask为主要框架,Flask是MicroFramework,属于轻量级Web应用框架。Flask自由、灵活,可扩展性强,第三方库的选择面广,开发时可以结合自己最喜欢用的轮子,也能结合最流行最强大的Python库。入门简单,即便没有多少Web开发经验,也能很快作出网站。非常适用于小型网站。非常适用于开发Web服务的API。开发大型网站无压力,但是代码架构需要自己设计,开发成本取决于开发者的能力和经验。各方面性能均等于或优于Django[11]。扩展库多,Django自带的或第三方的好评如潮的功能,Flask上总会找到与之类似的第三方库。Flask与关系型数据库的配合较好。
在关系式数据库选择方面,目前金融行业主要采用SQL Server或者MySQL作为金融大数据的主要载体。二者各有各的特点,综合考虑,本次选择了微软公司出品的SQL Server,SQL Serser相对MySQL来说,拥有友好的图形操作界面,而且提供了很多比较优秀的服务。对于从业人员来说降低了学习成本,提高了工作效率。对于金融行业,数据的安全性是十分重要的,SQL Server作为商业数据库软件,很好的满足了安全标准,而且在备份方面,SQLServer提供了热备份和冷备份两种模式,保证了在服务器宕机时数据的安全性[12]。
本研究在技术上的难点主要是实现Flask框架的搭建,以及利用相关库以实现其和SQL Server的交互。为了保证数据采集、处理和分析的稳定性、正确性和高效性,必须要确定和掌握Python框架和SQL Server交互方式,保证交互数据的准确定。
2.5 对客观世界和社会的影响分析
互联网金融发展迅速,规模大,对金融数据分析的需求也越来越大。在中国,已有3.9亿人注册使用移动银行,根据埃森哲的数据,这一用户数已超过了美国的总人口,达到全球移动银行用户数的40%[13]。来自中国的这些在线支付服务甚至吸引了更多用户。支付宝公布的数据显示,7月份该服务在全球范围内拥有4亿桌面和移动用户。在截至2014年6月的这一年中,支付宝处理的支付总额达到7780亿美元[14]。根据速途研究院的最新统计显示,今年一季度国内互联网金融市场整体规模中,支付市场规模为9.22万亿元,占据主导地位,这主要得益于中国电商的高速发展。而基金销售规模超过6000亿元,财富管理规模100亿元,未来随着用户收入水平的提高,可用资金规模扩大,以及用户理财理念的增强,这两个领域的未来空间非常巨大。此外,网络小贷规模5000亿元,网贷(P2P)市场1000亿元,众筹规模100亿元,其中国内的众筹和P2P市场仍处于初步发展阶段。金融机构创新市场2000亿元,主要依赖于互联网金融平台的支持,随着传统金融行业在互联网方面的投注加大,未来规模将会显著扩大[15]。在这个过程中,金融大数据对数据采集、处理和分析的需求也越来越大,通过创建统一的金融模型框架,可以很好的满足金融大数据的需求,更加方便金融从业人员。
3. 研究计划与安排
第1-3周:查阅相关文献资料,明确研究内容,了解研究所需理论知识,对系统要求进行分析,确定方案,完成外文文献翻译和开题报告。
第4-7周:前期方案验证,学习相关基础知识、语法、框架。
第8-10周:实现框架的搭建
4. 参考文献(12篇以上)
[1] fa aslam, hn mohammed, ps lokhande. efficient way of web developmentusing python and flask. 2015.6
[2] 王蕾, 安英博, 刘佳杰. 基于 python 的互联网金融数据采集. 2017,03
[3] 黄传禄. 基于 python 的 mysql 数据库访问技术. 2017,10