狠狠撸

狠狠撸Share a Scribd company logo
MR && UEH Tools
    Architectural Design && Data Process && Database
Outline

?   Architectural Design
?   Data Collection
?   Data Process
?   Database reverent




12/20/12                   2
Architectural Design




12/20/12               3
Architectural Design
?   BS 构 架: 采用 ASP.NET MVC 3.0 架构
     ? 页 面前端
         ? ExtJS 前端开发框架 && AJAX 进行后台交互
     ? Controller 层
         ? 提供权限验证、分页、排序、异常处理、页面跳转(服务器对外接口)
     ? Manager 层
         ? 具体功能逻辑,提供一个或多个 Service 层
     ? Service 层
         ? 对数据库增删改查进行封装,同时提供基础数据关联和原始数据逻辑运算
?   原始数据采集层
     ? FTP 、 SCP 或 SMB 协议进行手动或自动获取
?   原始数据预处 理模块
     ? 通过多线程加多进程组合的方式,对原始数据进行预处理
?   数据库录 入模块
     ? 优化数据库,批量录入

12/20/12                                      4
Data Collection




12/20/12          5
Data Collection – support protocol
?   多种 采集协议 支持
    ? FTP :各个采集节点需要配置 FTP Server

     ? SCP 方式:各个采集节点和服务器安装 OpenSSH ,利用 scp 命
       令进行传输文件

     ? SMB 协议:跨平台文件共享协议,采用 SMB 方式在 Linux 和
       Windows 之间共享文件。




12/20/12                                     6
Data Collection - procedure
?   程序通过 Python 脚本配置目标目录信息和传输协议,在指定时间(自动)
    获取该目录文件变化情况,诸如新文件(新产生的文件)或原来文件变化(
    原来文件新增内容),采用 MD5 值判断的方法,将此次获取的 MD5 值与服
    务器历史 MD5 值进行对比,标记新的 MD5 和文件标识(全新文件、部分更
    新文件、已获取文件),并触发文件传输与下载模块,获取新的文件,放入
    服务器指定文件夹下。
     ? 对于全新的文件,可以进行直接处理;
     ? 对于部分更新的文件,与上次获取文件对比后提取新的内容,对新的内容
       进行处理;
     ? 对于已经获取的文件,不处理。
?   当完成单一文件后,通知原始数据预处理模块,启动新的线程或进程进行预
    处理。

12/20/12                                 7
Data Collection - characteristic
? 支持数据采集端多种协议,不必对采集端的操作系统和文
  件系统类型进行限制;
? 避免手动获取与自动获取文件冲突问题。(自动获取是以
  每个小时为单位进行获取,当用户有需求进行手动获取,
  可能会造成部分数据重复)
? 采用 MD5 算法,尽最大可能保证数据完整性,同时减少
  网络传输;
? 整个过程并发执行,尽最大可能提供处理速度;


12/20/12                           8
Data Collection - Questions

? 1. 若各个采集节点能够支持文件名唯一化和手动获取后
  重命名新的文件机制,可以省略 MD5 过程,能提供处理
  速度

? 2. 若网络环境允许(高带宽、多网络接口)可以采用并
  发传输机制,提供整体传输速度,来代替普通环境下轮询
  、串行传输方式。


12/20/12                        9
Data Process
?   任务:进行字符串解析、校验、压缩数据、二进制处理等操作
?   编程语言: Python 2.7
?   处理流程 : 多进程 + 多线程的方式
?   性能优化:线程池的方式,有效减少线程创建开销和合理控制线程资源占用

?   实现细节:
     ? 原始数据字符串处理 采用 Python 的 list 机制
     ? 二进制部分采用 python 的 struct 模块,批量处理,完全内存中操作




12/20/12                                         10
Data Process




12/20/12       11
Data Process
?   初始调 度程序(主进 程)
     ? 与数据采集模块相互配合,获取最新要处理的文件列表,根据目前任务的优先级,
       产生相应数量的进程,同时确定线程池的容量,并对处理文件列表平均分配给各个
       进程,避免了文件处理冲突问题。

?   预处 理线 程调 度进 程(子进 程)
     ? 由初始调度程序(主进程)启动,并接受处理文件列表,初始化线程池,并向线程
       池中预处理线程分配任务

?   预处 理线 程
     ? 进行实际的预处理过程,整个分配机制保证了线程处理的独立性和唯一性。当线程
       预处理完成时候,触发 SQL 脚本执行,批量将数据导入数据库中。同时通知父进
       程,产生新的线程,填充到线程池中。


12/20/12                                    12
Database reverent
?   数据录入方式:
     ? 采用批量录入的方式,能有效避免数据库事务开销,极大的提供录入效率
     ? 在 SQL Server 2008 和 PostgreSQL 9 上进行的实验。




12/20/12                                          13
Database reverent
                    SQL Server 2008   PostgreSQL 9
     开源             闭源                完全开源
     软件版权           微软商业授权            经典 BSD 协议
     批量插入( 200 万条   5 分钟左右            至少 10 分钟
     数据)
     开发效率           完整开发流程,与 BS 开源工具,需要做大
                    构架完美结合      量调整工作
     稳定性            技术支持,稳定           不对软件可靠性进行
                                      保证
     OS             Windows 系列        Windows 、 Linux

12/20/12                                                14
Database reverent
?   SQL Server 2008 优 化

     ? 在数据库文件结构上做了改变,在原有的两个数据库文件 mdf 和 ldf 上
       ,添加了一个 ndf 次数据文件用来存储索引,增加了插入和查询速度。

     ? 对数据库的表进行了分表存储,采用横切的方法,将原有的一张大表,以
       天为单位划分成若干小表,实现数据的分表存储,这样不仅提高了删除数
       据和查询数据的速度,还可以采用分布式原理,在各个终端中存储不同日
       期的数据表,降低数据库的负载,进而提高效率并实现了系统对分布式数
       据库的拓展。



12/20/12                                   15
thanks




12/20/12            16

More Related Content

What's hot (20)

大数据时代feed架构 (ArchSummit Beijing 2014)
大数据时代feed架构 (ArchSummit Beijing 2014)大数据时代feed架构 (ArchSummit Beijing 2014)
大数据时代feed架构 (ArchSummit Beijing 2014)
Tim Y
?
Leveldb background
Leveldb backgroundLeveldb background
Leveldb background
宗志 陈
?
淘宝软件基础设施构建实践
淘宝软件基础设施构建实践淘宝软件基础设施构建实践
淘宝软件基础设施构建实践
Wensong Zhang
?
Mesos intro
Mesos introMesos intro
Mesos intro
dennis zhuang
?
Google LevelDB Study Discuss
Google LevelDB Study DiscussGoogle LevelDB Study Discuss
Google LevelDB Study Discuss
everestsun
?
大型网站架构设计
大型网站架构设计大型网站架构设计
大型网站架构设计
notes4mark
?
Ocean base 千亿级海量数据库-日照
Ocean base 千亿级海量数据库-日照Ocean base 千亿级海量数据库-日照
Ocean base 千亿级海量数据库-日照
Shaoning Pan
?
redis 适用场景与实现
redis 适用场景与实现redis 适用场景与实现
redis 适用场景与实现
iammutex
?
了解集群
了解集群了解集群
了解集群
Feng Yu
?
Building the Production Ready EB level Storage Product from Ceph - Dongmao Zhang
Building the Production Ready EB level Storage Product from Ceph - Dongmao ZhangBuilding the Production Ready EB level Storage Product from Ceph - Dongmao Zhang
Building the Production Ready EB level Storage Product from Ceph - Dongmao Zhang
Ceph Community
?
搁别诲颈蝉分享
搁别诲颈蝉分享搁别诲颈蝉分享
搁别诲颈蝉分享
yiihsia
?
110412 kningsoft-mongo db-intro-usage-in-mercury
110412 kningsoft-mongo db-intro-usage-in-mercury110412 kningsoft-mongo db-intro-usage-in-mercury
110412 kningsoft-mongo db-intro-usage-in-mercury
Zoom Quiet
?
贵濒补蝉丑存储设备在淘宝的应用实践
贵濒补蝉丑存储设备在淘宝的应用实践贵濒补蝉丑存储设备在淘宝的应用实践
贵濒补蝉丑存储设备在淘宝的应用实践
Feng Yu
?
高性能并发奥别产服务器实现核心内幕
高性能并发奥别产服务器实现核心内幕高性能并发奥别产服务器实现核心内幕
高性能并发奥别产服务器实现核心内幕
ideawu
?
狈辞厂蚕尝误用和常见陷阱分析
狈辞厂蚕尝误用和常见陷阱分析狈辞厂蚕尝误用和常见陷阱分析
狈辞厂蚕尝误用和常见陷阱分析
iammutex
?
百度系统部分布式系统介绍 马如悦 Sacc2010
百度系统部分布式系统介绍 马如悦 Sacc2010百度系统部分布式系统介绍 马如悦 Sacc2010
百度系统部分布式系统介绍 马如悦 Sacc2010
Chuanying Du
?
张铁安:贵别别诲系统架构浅析
张铁安:贵别别诲系统架构浅析张铁安:贵别别诲系统架构浅析
张铁安:贵别别诲系统架构浅析
Leechael
?
Hacking Nginx at Taobao
Hacking Nginx at TaobaoHacking Nginx at Taobao
Hacking Nginx at Taobao
Joshua Zhu
?
Redis 常见使用模式分析
Redis 常见使用模式分析Redis 常见使用模式分析
Redis 常见使用模式分析
vincent253
?
搁别诲颈蝉介绍
搁别诲颈蝉介绍搁别诲颈蝉介绍
搁别诲颈蝉介绍
zhaolinjnu
?
大数据时代feed架构 (ArchSummit Beijing 2014)
大数据时代feed架构 (ArchSummit Beijing 2014)大数据时代feed架构 (ArchSummit Beijing 2014)
大数据时代feed架构 (ArchSummit Beijing 2014)
Tim Y
?
Leveldb background
Leveldb backgroundLeveldb background
Leveldb background
宗志 陈
?
淘宝软件基础设施构建实践
淘宝软件基础设施构建实践淘宝软件基础设施构建实践
淘宝软件基础设施构建实践
Wensong Zhang
?
Google LevelDB Study Discuss
Google LevelDB Study DiscussGoogle LevelDB Study Discuss
Google LevelDB Study Discuss
everestsun
?
大型网站架构设计
大型网站架构设计大型网站架构设计
大型网站架构设计
notes4mark
?
Ocean base 千亿级海量数据库-日照
Ocean base 千亿级海量数据库-日照Ocean base 千亿级海量数据库-日照
Ocean base 千亿级海量数据库-日照
Shaoning Pan
?
redis 适用场景与实现
redis 适用场景与实现redis 适用场景与实现
redis 适用场景与实现
iammutex
?
了解集群
了解集群了解集群
了解集群
Feng Yu
?
Building the Production Ready EB level Storage Product from Ceph - Dongmao Zhang
Building the Production Ready EB level Storage Product from Ceph - Dongmao ZhangBuilding the Production Ready EB level Storage Product from Ceph - Dongmao Zhang
Building the Production Ready EB level Storage Product from Ceph - Dongmao Zhang
Ceph Community
?
搁别诲颈蝉分享
搁别诲颈蝉分享搁别诲颈蝉分享
搁别诲颈蝉分享
yiihsia
?
110412 kningsoft-mongo db-intro-usage-in-mercury
110412 kningsoft-mongo db-intro-usage-in-mercury110412 kningsoft-mongo db-intro-usage-in-mercury
110412 kningsoft-mongo db-intro-usage-in-mercury
Zoom Quiet
?
贵濒补蝉丑存储设备在淘宝的应用实践
贵濒补蝉丑存储设备在淘宝的应用实践贵濒补蝉丑存储设备在淘宝的应用实践
贵濒补蝉丑存储设备在淘宝的应用实践
Feng Yu
?
高性能并发奥别产服务器实现核心内幕
高性能并发奥别产服务器实现核心内幕高性能并发奥别产服务器实现核心内幕
高性能并发奥别产服务器实现核心内幕
ideawu
?
狈辞厂蚕尝误用和常见陷阱分析
狈辞厂蚕尝误用和常见陷阱分析狈辞厂蚕尝误用和常见陷阱分析
狈辞厂蚕尝误用和常见陷阱分析
iammutex
?
百度系统部分布式系统介绍 马如悦 Sacc2010
百度系统部分布式系统介绍 马如悦 Sacc2010百度系统部分布式系统介绍 马如悦 Sacc2010
百度系统部分布式系统介绍 马如悦 Sacc2010
Chuanying Du
?
张铁安:贵别别诲系统架构浅析
张铁安:贵别别诲系统架构浅析张铁安:贵别别诲系统架构浅析
张铁安:贵别别诲系统架构浅析
Leechael
?
Hacking Nginx at Taobao
Hacking Nginx at TaobaoHacking Nginx at Taobao
Hacking Nginx at Taobao
Joshua Zhu
?
Redis 常见使用模式分析
Redis 常见使用模式分析Redis 常见使用模式分析
Redis 常见使用模式分析
vincent253
?
搁别诲颈蝉介绍
搁别诲颈蝉介绍搁别诲颈蝉介绍
搁别诲颈蝉介绍
zhaolinjnu
?

Similar to 惭谤&补尘辫;耻别丑数据库方面 (20)

狈辞蝉辩濒叁步曲
狈辞蝉辩濒叁步曲狈辞蝉辩濒叁步曲
狈辞蝉辩濒叁步曲
84zhu
?
Accelerate Database as a Service(DBaaS) in Cloud era
Accelerate Database as a Service(DBaaS) in Cloud eraAccelerate Database as a Service(DBaaS) in Cloud era
Accelerate Database as a Service(DBaaS) in Cloud era
Junchi Zhang
?
Ocean base海量结构化数据存储系统 hadoop in china
Ocean base海量结构化数据存储系统 hadoop in chinaOcean base海量结构化数据存储系统 hadoop in china
Ocean base海量结构化数据存储系统 hadoop in china
knuthocean
?
COSCUP 2019 - 開源大數據引擎 Greenplum
COSCUP 2019 - 開源大數據引擎 GreenplumCOSCUP 2019 - 開源大數據引擎 Greenplum
COSCUP 2019 - 開源大數據引擎 Greenplum
Omni-Alex Chen
?
The Construction and Practice of Apache Pegasus in Offline and Online Scenari...
The Construction and Practice of Apache Pegasus in Offline and Online Scenari...The Construction and Practice of Apache Pegasus in Offline and Online Scenari...
The Construction and Practice of Apache Pegasus in Offline and Online Scenari...
acelyc1112009
?
百度数据库中间层
百度数据库中间层百度数据库中间层
百度数据库中间层
yp_fangdong
?
新时代的分析型云数据库 Greenplum
新时代的分析型云数据库 Greenplum新时代的分析型云数据库 Greenplum
新时代的分析型云数据库 Greenplum
锐 张
?
SQL Server 資料庫版本控管
SQL Server 資料庫版本控管SQL Server 資料庫版本控管
SQL Server 資料庫版本控管
Will Huang
?
Hadoop con 2015 hadoop enables enterprise data lake
Hadoop con 2015   hadoop enables enterprise data lakeHadoop con 2015   hadoop enables enterprise data lake
Hadoop con 2015 hadoop enables enterprise data lake
James Chen
?
Couchbase introduction - Chinese
Couchbase introduction - Chinese Couchbase introduction - Chinese
Couchbase introduction - Chinese
Vickie Zeng
?
诗檀软件 Oracle开发优化基础
诗檀软件 Oracle开发优化基础 诗檀软件 Oracle开发优化基础
诗檀软件 Oracle开发优化基础
maclean liu
?
浅析分布式存储架构—设计自己的存储- 58同城徐振华
浅析分布式存储架构—设计自己的存储- 58同城徐振华浅析分布式存储架构—设计自己的存储- 58同城徐振华
浅析分布式存储架构—设计自己的存储- 58同城徐振华
zhuozhe
?
賽門鐵克 Storage Foundation 6.0 簡報
賽門鐵克 Storage Foundation 6.0 簡報賽門鐵克 Storage Foundation 6.0 簡報
賽門鐵克 Storage Foundation 6.0 簡報
Wales Chen
?
Azure Data Lake 簡介
Azure Data Lake 簡介Azure Data Lake 簡介
Azure Data Lake 簡介
Herman Wu
?
Delta Lake Architecture: Delta Lake + Apache Spark Structured Streaming
Delta Lake Architecture: Delta Lake + Apache Spark Structured StreamingDelta Lake Architecture: Delta Lake + Apache Spark Structured Streaming
Delta Lake Architecture: Delta Lake + Apache Spark Structured Streaming
Xiao Li
?
豆瓣网技术架构变迁
豆瓣网技术架构变迁豆瓣网技术架构变迁
豆瓣网技术架构变迁
reinhardx
?
叠测辫补迟博客出品-服务器运维集群方法总结2
叠测辫补迟博客出品-服务器运维集群方法总结2叠测辫补迟博客出品-服务器运维集群方法总结2
叠测辫补迟博客出品-服务器运维集群方法总结2
redhat9
?
大规模数据库存储方案
大规模数据库存储方案大规模数据库存储方案
大规模数据库存储方案
XiaoJun Hong
?
開放原始碼 Ch2.4 app - oss - db (ver 1.0)
開放原始碼 Ch2.4   app - oss - db (ver 1.0)開放原始碼 Ch2.4   app - oss - db (ver 1.0)
開放原始碼 Ch2.4 app - oss - db (ver 1.0)
My own sweet home!
?
狈辞蝉辩濒叁步曲
狈辞蝉辩濒叁步曲狈辞蝉辩濒叁步曲
狈辞蝉辩濒叁步曲
84zhu
?
Accelerate Database as a Service(DBaaS) in Cloud era
Accelerate Database as a Service(DBaaS) in Cloud eraAccelerate Database as a Service(DBaaS) in Cloud era
Accelerate Database as a Service(DBaaS) in Cloud era
Junchi Zhang
?
Ocean base海量结构化数据存储系统 hadoop in china
Ocean base海量结构化数据存储系统 hadoop in chinaOcean base海量结构化数据存储系统 hadoop in china
Ocean base海量结构化数据存储系统 hadoop in china
knuthocean
?
COSCUP 2019 - 開源大數據引擎 Greenplum
COSCUP 2019 - 開源大數據引擎 GreenplumCOSCUP 2019 - 開源大數據引擎 Greenplum
COSCUP 2019 - 開源大數據引擎 Greenplum
Omni-Alex Chen
?
The Construction and Practice of Apache Pegasus in Offline and Online Scenari...
The Construction and Practice of Apache Pegasus in Offline and Online Scenari...The Construction and Practice of Apache Pegasus in Offline and Online Scenari...
The Construction and Practice of Apache Pegasus in Offline and Online Scenari...
acelyc1112009
?
百度数据库中间层
百度数据库中间层百度数据库中间层
百度数据库中间层
yp_fangdong
?
新时代的分析型云数据库 Greenplum
新时代的分析型云数据库 Greenplum新时代的分析型云数据库 Greenplum
新时代的分析型云数据库 Greenplum
锐 张
?
SQL Server 資料庫版本控管
SQL Server 資料庫版本控管SQL Server 資料庫版本控管
SQL Server 資料庫版本控管
Will Huang
?
Hadoop con 2015 hadoop enables enterprise data lake
Hadoop con 2015   hadoop enables enterprise data lakeHadoop con 2015   hadoop enables enterprise data lake
Hadoop con 2015 hadoop enables enterprise data lake
James Chen
?
Couchbase introduction - Chinese
Couchbase introduction - Chinese Couchbase introduction - Chinese
Couchbase introduction - Chinese
Vickie Zeng
?
诗檀软件 Oracle开发优化基础
诗檀软件 Oracle开发优化基础 诗檀软件 Oracle开发优化基础
诗檀软件 Oracle开发优化基础
maclean liu
?
浅析分布式存储架构—设计自己的存储- 58同城徐振华
浅析分布式存储架构—设计自己的存储- 58同城徐振华浅析分布式存储架构—设计自己的存储- 58同城徐振华
浅析分布式存储架构—设计自己的存储- 58同城徐振华
zhuozhe
?
賽門鐵克 Storage Foundation 6.0 簡報
賽門鐵克 Storage Foundation 6.0 簡報賽門鐵克 Storage Foundation 6.0 簡報
賽門鐵克 Storage Foundation 6.0 簡報
Wales Chen
?
Azure Data Lake 簡介
Azure Data Lake 簡介Azure Data Lake 簡介
Azure Data Lake 簡介
Herman Wu
?
Delta Lake Architecture: Delta Lake + Apache Spark Structured Streaming
Delta Lake Architecture: Delta Lake + Apache Spark Structured StreamingDelta Lake Architecture: Delta Lake + Apache Spark Structured Streaming
Delta Lake Architecture: Delta Lake + Apache Spark Structured Streaming
Xiao Li
?
豆瓣网技术架构变迁
豆瓣网技术架构变迁豆瓣网技术架构变迁
豆瓣网技术架构变迁
reinhardx
?
叠测辫补迟博客出品-服务器运维集群方法总结2
叠测辫补迟博客出品-服务器运维集群方法总结2叠测辫补迟博客出品-服务器运维集群方法总结2
叠测辫补迟博客出品-服务器运维集群方法总结2
redhat9
?
大规模数据库存储方案
大规模数据库存储方案大规模数据库存储方案
大规模数据库存储方案
XiaoJun Hong
?
開放原始碼 Ch2.4 app - oss - db (ver 1.0)
開放原始碼 Ch2.4   app - oss - db (ver 1.0)開放原始碼 Ch2.4   app - oss - db (ver 1.0)
開放原始碼 Ch2.4 app - oss - db (ver 1.0)
My own sweet home!
?

More from Tianwei Liu (11)

2021 ee大会-旷视ai产物背后的研发效能工具建设
2021 ee大会-旷视ai产物背后的研发效能工具建设2021 ee大会-旷视ai产物背后的研发效能工具建设
2021 ee大会-旷视ai产物背后的研发效能工具建设
Tianwei Liu
?
2020 gops-旷视城市大脑私有云平台实践-刘天伟
2020 gops-旷视城市大脑私有云平台实践-刘天伟2020 gops-旷视城市大脑私有云平台实践-刘天伟
2020 gops-旷视城市大脑私有云平台实践-刘天伟
Tianwei Liu
?
豆瓣Paa s平台 dae - 2017
豆瓣Paa s平台 dae - 2017豆瓣Paa s平台 dae - 2017
豆瓣Paa s平台 dae - 2017
Tianwei Liu
?
douban happyday docker for daeqaci
douban happyday docker for daeqacidouban happyday docker for daeqaci
douban happyday docker for daeqaci
Tianwei Liu
?
DAE 新变化介绍
DAE 新变化介绍DAE 新变化介绍
DAE 新变化介绍
Tianwei Liu
?
Docker在豆瓣的实践 刘天伟-20160709
Docker在豆瓣的实践 刘天伟-20160709Docker在豆瓣的实践 刘天伟-20160709
Docker在豆瓣的实践 刘天伟-20160709
Tianwei Liu
?
Hadoop introduction 2
Hadoop introduction 2Hadoop introduction 2
Hadoop introduction 2
Tianwei Liu
?
Hadoop introduction
Hadoop introductionHadoop introduction
Hadoop introduction
Tianwei Liu
?
Ueh
UehUeh
Ueh
Tianwei Liu
?
2021 ee大会-旷视ai产物背后的研发效能工具建设
2021 ee大会-旷视ai产物背后的研发效能工具建设2021 ee大会-旷视ai产物背后的研发效能工具建设
2021 ee大会-旷视ai产物背后的研发效能工具建设
Tianwei Liu
?
2020 gops-旷视城市大脑私有云平台实践-刘天伟
2020 gops-旷视城市大脑私有云平台实践-刘天伟2020 gops-旷视城市大脑私有云平台实践-刘天伟
2020 gops-旷视城市大脑私有云平台实践-刘天伟
Tianwei Liu
?
豆瓣Paa s平台 dae - 2017
豆瓣Paa s平台 dae - 2017豆瓣Paa s平台 dae - 2017
豆瓣Paa s平台 dae - 2017
Tianwei Liu
?
douban happyday docker for daeqaci
douban happyday docker for daeqacidouban happyday docker for daeqaci
douban happyday docker for daeqaci
Tianwei Liu
?
DAE 新变化介绍
DAE 新变化介绍DAE 新变化介绍
DAE 新变化介绍
Tianwei Liu
?
Docker在豆瓣的实践 刘天伟-20160709
Docker在豆瓣的实践 刘天伟-20160709Docker在豆瓣的实践 刘天伟-20160709
Docker在豆瓣的实践 刘天伟-20160709
Tianwei Liu
?
Hadoop introduction 2
Hadoop introduction 2Hadoop introduction 2
Hadoop introduction 2
Tianwei Liu
?
Hadoop introduction
Hadoop introductionHadoop introduction
Hadoop introduction
Tianwei Liu
?

惭谤&补尘辫;耻别丑数据库方面

  • 1. MR && UEH Tools Architectural Design && Data Process && Database
  • 2. Outline ? Architectural Design ? Data Collection ? Data Process ? Database reverent 12/20/12 2
  • 4. Architectural Design ? BS 构 架: 采用 ASP.NET MVC 3.0 架构 ? 页 面前端 ? ExtJS 前端开发框架 && AJAX 进行后台交互 ? Controller 层 ? 提供权限验证、分页、排序、异常处理、页面跳转(服务器对外接口) ? Manager 层 ? 具体功能逻辑,提供一个或多个 Service 层 ? Service 层 ? 对数据库增删改查进行封装,同时提供基础数据关联和原始数据逻辑运算 ? 原始数据采集层 ? FTP 、 SCP 或 SMB 协议进行手动或自动获取 ? 原始数据预处 理模块 ? 通过多线程加多进程组合的方式,对原始数据进行预处理 ? 数据库录 入模块 ? 优化数据库,批量录入 12/20/12 4
  • 6. Data Collection – support protocol ? 多种 采集协议 支持 ? FTP :各个采集节点需要配置 FTP Server ? SCP 方式:各个采集节点和服务器安装 OpenSSH ,利用 scp 命 令进行传输文件 ? SMB 协议:跨平台文件共享协议,采用 SMB 方式在 Linux 和 Windows 之间共享文件。 12/20/12 6
  • 7. Data Collection - procedure ? 程序通过 Python 脚本配置目标目录信息和传输协议,在指定时间(自动) 获取该目录文件变化情况,诸如新文件(新产生的文件)或原来文件变化( 原来文件新增内容),采用 MD5 值判断的方法,将此次获取的 MD5 值与服 务器历史 MD5 值进行对比,标记新的 MD5 和文件标识(全新文件、部分更 新文件、已获取文件),并触发文件传输与下载模块,获取新的文件,放入 服务器指定文件夹下。 ? 对于全新的文件,可以进行直接处理; ? 对于部分更新的文件,与上次获取文件对比后提取新的内容,对新的内容 进行处理; ? 对于已经获取的文件,不处理。 ? 当完成单一文件后,通知原始数据预处理模块,启动新的线程或进程进行预 处理。 12/20/12 7
  • 8. Data Collection - characteristic ? 支持数据采集端多种协议,不必对采集端的操作系统和文 件系统类型进行限制; ? 避免手动获取与自动获取文件冲突问题。(自动获取是以 每个小时为单位进行获取,当用户有需求进行手动获取, 可能会造成部分数据重复) ? 采用 MD5 算法,尽最大可能保证数据完整性,同时减少 网络传输; ? 整个过程并发执行,尽最大可能提供处理速度; 12/20/12 8
  • 9. Data Collection - Questions ? 1. 若各个采集节点能够支持文件名唯一化和手动获取后 重命名新的文件机制,可以省略 MD5 过程,能提供处理 速度 ? 2. 若网络环境允许(高带宽、多网络接口)可以采用并 发传输机制,提供整体传输速度,来代替普通环境下轮询 、串行传输方式。 12/20/12 9
  • 10. Data Process ? 任务:进行字符串解析、校验、压缩数据、二进制处理等操作 ? 编程语言: Python 2.7 ? 处理流程 : 多进程 + 多线程的方式 ? 性能优化:线程池的方式,有效减少线程创建开销和合理控制线程资源占用 ? 实现细节: ? 原始数据字符串处理 采用 Python 的 list 机制 ? 二进制部分采用 python 的 struct 模块,批量处理,完全内存中操作 12/20/12 10
  • 12. Data Process ? 初始调 度程序(主进 程) ? 与数据采集模块相互配合,获取最新要处理的文件列表,根据目前任务的优先级, 产生相应数量的进程,同时确定线程池的容量,并对处理文件列表平均分配给各个 进程,避免了文件处理冲突问题。 ? 预处 理线 程调 度进 程(子进 程) ? 由初始调度程序(主进程)启动,并接受处理文件列表,初始化线程池,并向线程 池中预处理线程分配任务 ? 预处 理线 程 ? 进行实际的预处理过程,整个分配机制保证了线程处理的独立性和唯一性。当线程 预处理完成时候,触发 SQL 脚本执行,批量将数据导入数据库中。同时通知父进 程,产生新的线程,填充到线程池中。 12/20/12 12
  • 13. Database reverent ? 数据录入方式: ? 采用批量录入的方式,能有效避免数据库事务开销,极大的提供录入效率 ? 在 SQL Server 2008 和 PostgreSQL 9 上进行的实验。 12/20/12 13
  • 14. Database reverent SQL Server 2008 PostgreSQL 9 开源 闭源 完全开源 软件版权 微软商业授权 经典 BSD 协议 批量插入( 200 万条 5 分钟左右 至少 10 分钟 数据) 开发效率 完整开发流程,与 BS 开源工具,需要做大 构架完美结合 量调整工作 稳定性 技术支持,稳定 不对软件可靠性进行 保证 OS Windows 系列 Windows 、 Linux 12/20/12 14
  • 15. Database reverent ? SQL Server 2008 优 化 ? 在数据库文件结构上做了改变,在原有的两个数据库文件 mdf 和 ldf 上 ,添加了一个 ndf 次数据文件用来存储索引,增加了插入和查询速度。 ? 对数据库的表进行了分表存储,采用横切的方法,将原有的一张大表,以 天为单位划分成若干小表,实现数据的分表存储,这样不仅提高了删除数 据和查询数据的速度,还可以采用分布式原理,在各个终端中存储不同日 期的数据表,降低数据库的负载,进而提高效率并实现了系统对分布式数 据库的拓展。 12/20/12 15

Editor's Notes

  • #2: 素材天下 sucaitianxia.com