SlideShare uma empresa Scribd logo
1 de 16
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

Mais conteúdo relacionado

Mais procurados

大数据时代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 Discusseverestsun
 
大型网站架构设计
大型网站架构设计大型网站架构设计
大型网站架构设计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 ZhangCeph Community
 
Redis分享
Redis分享Redis分享
Redis分享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-mercuryZoom Quiet
 
Flash存储设备在淘宝的应用实践
Flash存储设备在淘宝的应用实践Flash存储设备在淘宝的应用实践
Flash存储设备在淘宝的应用实践Feng Yu
 
高性能并发Web服务器实现核心内幕
高性能并发Web服务器实现核心内幕高性能并发Web服务器实现核心内幕
高性能并发Web服务器实现核心内幕ideawu
 
NoSQL误用和常见陷阱分析
NoSQL误用和常见陷阱分析NoSQL误用和常见陷阱分析
NoSQL误用和常见陷阱分析iammutex
 
百度系统部分布式系统介绍 马如悦 Sacc2010
百度系统部分布式系统介绍 马如悦 Sacc2010百度系统部分布式系统介绍 马如悦 Sacc2010
百度系统部分布式系统介绍 马如悦 Sacc2010Chuanying Du
 
张铁安:Feed系统架构浅析
张铁安:Feed系统架构浅析张铁安:Feed系统架构浅析
张铁安:Feed系统架构浅析Leechael
 
Hacking Nginx at Taobao
Hacking Nginx at TaobaoHacking Nginx at Taobao
Hacking Nginx at TaobaoJoshua Zhu
 
Redis 常见使用模式分析
Redis 常见使用模式分析Redis 常见使用模式分析
Redis 常见使用模式分析vincent253
 

Mais procurados (20)

大数据时代feed架构 (ArchSummit Beijing 2014)
大数据时代feed架构 (ArchSummit Beijing 2014)大数据时代feed架构 (ArchSummit Beijing 2014)
大数据时代feed架构 (ArchSummit Beijing 2014)
 
Leveldb background
Leveldb backgroundLeveldb background
Leveldb background
 
淘宝软件基础设施构建实践
淘宝软件基础设施构建实践淘宝软件基础设施构建实践
淘宝软件基础设施构建实践
 
Mesos intro
Mesos introMesos intro
Mesos intro
 
Google LevelDB Study Discuss
Google LevelDB Study DiscussGoogle LevelDB Study Discuss
Google LevelDB Study Discuss
 
大型网站架构设计
大型网站架构设计大型网站架构设计
大型网站架构设计
 
Ocean base 千亿级海量数据库-日照
Ocean base 千亿级海量数据库-日照Ocean base 千亿级海量数据库-日照
Ocean base 千亿级海量数据库-日照
 
redis 适用场景与实现
redis 适用场景与实现redis 适用场景与实现
redis 适用场景与实现
 
了解集群
了解集群了解集群
了解集群
 
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
 
Redis分享
Redis分享Redis分享
Redis分享
 
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
 
Flash存储设备在淘宝的应用实践
Flash存储设备在淘宝的应用实践Flash存储设备在淘宝的应用实践
Flash存储设备在淘宝的应用实践
 
高性能并发Web服务器实现核心内幕
高性能并发Web服务器实现核心内幕高性能并发Web服务器实现核心内幕
高性能并发Web服务器实现核心内幕
 
NoSQL误用和常见陷阱分析
NoSQL误用和常见陷阱分析NoSQL误用和常见陷阱分析
NoSQL误用和常见陷阱分析
 
百度系统部分布式系统介绍 马如悦 Sacc2010
百度系统部分布式系统介绍 马如悦 Sacc2010百度系统部分布式系统介绍 马如悦 Sacc2010
百度系统部分布式系统介绍 马如悦 Sacc2010
 
张铁安:Feed系统架构浅析
张铁安:Feed系统架构浅析张铁安:Feed系统架构浅析
张铁安:Feed系统架构浅析
 
Hacking Nginx at Taobao
Hacking Nginx at TaobaoHacking Nginx at Taobao
Hacking Nginx at Taobao
 
Redis 常见使用模式分析
Redis 常见使用模式分析Redis 常见使用模式分析
Redis 常见使用模式分析
 
Redis介绍
Redis介绍Redis介绍
Redis介绍
 

Semelhante a Mr&ueh数据库方面

Nosql三步曲
Nosql三步曲Nosql三步曲
Nosql三步曲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 eraJunchi Zhang
 
Ocean base海量结构化数据存储系统 hadoop in china
Ocean base海量结构化数据存储系统 hadoop in chinaOcean base海量结构化数据存储系统 hadoop in china
Ocean base海量结构化数据存储系统 hadoop in chinaknuthocean
 
COSCUP 2019 - 開源大數據引擎 Greenplum
COSCUP 2019 - 開源大數據引擎 GreenplumCOSCUP 2019 - 開源大數據引擎 Greenplum
COSCUP 2019 - 開源大數據引擎 GreenplumOmni-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 lakeJames 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 StreamingXiao Li
 
豆瓣网技术架构变迁
豆瓣网技术架构变迁豆瓣网技术架构变迁
豆瓣网技术架构变迁reinhardx
 
Bypat博客出品-服务器运维集群方法总结2
Bypat博客出品-服务器运维集群方法总结2Bypat博客出品-服务器运维集群方法总结2
Bypat博客出品-服务器运维集群方法总结2redhat9
 
大规模数据库存储方案
大规模数据库存储方案大规模数据库存储方案
大规模数据库存储方案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!
 

Semelhante a Mr&ueh数据库方面 (20)

Nosql三步曲
Nosql三步曲Nosql三步曲
Nosql三步曲
 
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
 
Ocean base海量结构化数据存储系统 hadoop in china
Ocean base海量结构化数据存储系统 hadoop in chinaOcean base海量结构化数据存储系统 hadoop in china
Ocean base海量结构化数据存储系统 hadoop in china
 
COSCUP 2019 - 開源大數據引擎 Greenplum
COSCUP 2019 - 開源大數據引擎 GreenplumCOSCUP 2019 - 開源大數據引擎 Greenplum
COSCUP 2019 - 開源大數據引擎 Greenplum
 
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...
 
百度数据库中间层
百度数据库中间层百度数据库中间层
百度数据库中间层
 
新时代的分析型云数据库 Greenplum
新时代的分析型云数据库 Greenplum新时代的分析型云数据库 Greenplum
新时代的分析型云数据库 Greenplum
 
SQL Server 資料庫版本控管
SQL Server 資料庫版本控管SQL Server 資料庫版本控管
SQL Server 資料庫版本控管
 
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
 
Couchbase introduction - Chinese
Couchbase introduction - Chinese Couchbase introduction - Chinese
Couchbase introduction - Chinese
 
诗檀软件 Oracle开发优化基础
诗檀软件 Oracle开发优化基础 诗檀软件 Oracle开发优化基础
诗檀软件 Oracle开发优化基础
 
浅析分布式存储架构—设计自己的存储- 58同城徐振华
浅析分布式存储架构—设计自己的存储- 58同城徐振华浅析分布式存储架构—设计自己的存储- 58同城徐振华
浅析分布式存储架构—设计自己的存储- 58同城徐振华
 
賽門鐵克 Storage Foundation 6.0 簡報
賽門鐵克 Storage Foundation 6.0 簡報賽門鐵克 Storage Foundation 6.0 簡報
賽門鐵克 Storage Foundation 6.0 簡報
 
Azure Data Lake 簡介
Azure Data Lake 簡介Azure Data Lake 簡介
Azure Data Lake 簡介
 
Why use MySQL
Why use MySQLWhy use MySQL
Why use MySQL
 
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
 
豆瓣网技术架构变迁
豆瓣网技术架构变迁豆瓣网技术架构变迁
豆瓣网技术架构变迁
 
Bypat博客出品-服务器运维集群方法总结2
Bypat博客出品-服务器运维集群方法总结2Bypat博客出品-服务器运维集群方法总结2
Bypat博客出品-服务器运维集群方法总结2
 
大规模数据库存储方案
大规模数据库存储方案大规模数据库存储方案
大规模数据库存储方案
 
開放原始碼 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)
 

Mais de 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 - 2017Tianwei Liu
 
douban happyday docker for daeqaci
douban happyday docker for daeqacidouban happyday docker for daeqaci
douban happyday docker for daeqaciTianwei Liu
 
DAE 新变化介绍
DAE 新变化介绍DAE 新变化介绍
DAE 新变化介绍Tianwei Liu
 
Docker在豆瓣的实践 刘天伟-20160709
Docker在豆瓣的实践 刘天伟-20160709Docker在豆瓣的实践 刘天伟-20160709
Docker在豆瓣的实践 刘天伟-20160709Tianwei Liu
 
Kmeans in-hadoop
Kmeans in-hadoopKmeans in-hadoop
Kmeans in-hadoopTianwei Liu
 
Hadoop introduction 2
Hadoop introduction 2Hadoop introduction 2
Hadoop introduction 2Tianwei Liu
 
Hadoop introduction
Hadoop introductionHadoop introduction
Hadoop introductionTianwei Liu
 

Mais de Tianwei Liu (11)

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

Mr&ueh数据库方面

  • 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

Notas do Editor

  1. 素材天下 sucaitianxia.com