流数据管理系统(精选7篇)
流数据管理系统 篇1
一、引言
随着网络、通信和传感器应用的飞速发展, 尤其是移动通信全面进入移动互联网时代, 直接带来通信网络中的数据复杂度、信息量迅速增长, 诸多的移动设备实时收集用户各种信息, 如位置、喜爱偏好、移动轨迹、血压、体温等, 带来数据的规模、种类和关联性等急剧膨胀。“大数据”成为时下各个行业中出现频率最高的关键词之一。思科估算在2015 年仅移动网络的数据量将突破6EB/ 月, 相当于亿字节的海量数据;而IDC预计到2020 年全世界的数据存储总量将达到35 万亿GB。大数据时代的到来使得隐藏在海量数据中的信息开始深刻的影响着人们的日常生活。当顾客在网上购物时, 推荐系统会根据从海量数据中挖掘出的信息向其推荐适合的商品;当乘客出行时, 打车软件又替他们搜索周围空闲出租车并选择最优车辆来提供服务;当病人看病时, 医生又会根据该病人的日常医疗数据制定最优的治疗方案。
而随着4G时代的到来, 移动通信业务已经正式全面进入移动互联网时代, 飞速发展的移动网络带宽直接带来繁杂的应用和用户行为, 而通信网络中的数据复杂度、信息量都随之迅速增长, 通信运营商所能掌握的数据量级与日俱增, 导致数据处理的复杂度和运算量要求都随之有了更高的要求, 传统数据库体系的数据处理能力受到了极大的挑战, 面对海量数据处理需求和更低的时延性限制要求, 传统数据系统投入的CPU计算能力、内存响应和吞吐、网络带宽都有着巨大的基准, 且在高安全性, 多中心的发展趋势下面临诸多的瓶颈。
大数据时代的到来使单节点的计算模式已经不能满足数据处理的需求, 分布式数据处理与存储系统逐步成为大数据平台首选的架构, 包括Hadoop, Mongo DB等开放型的大数据技术成为了众相研究的热点。而Hadoop大数据平台主要基于静态数据文件的并行处理, 虽然在海量数据吞吐、计算、存储方面有着极高的效率, 但是实时性较差, 属于高吞吐, 高并发, 高时延的架构, 对于小文件的处理性能一直是其不可回避的问题, 故针对一些实时性较高的数据处理和使用场景下无能为力。基于这样的原因, 面对动态数据处理的需求, 实时流式数据处理技术应运而生。
随着针对数据流的研究逐渐进入学术界, 大规模动态数据集 (也称为实时数据流) 成为研究及工程人员争相探索的热点领域[12]。而实时流式数据具有海量性、实时性和动态变化性三个基本特点, 基于这些特性, 数据研究领域内发展了诸多的研究方向。如流式数据处理的数学工具研究[11], 研究如何保证在数据流处理过程中的Qo S服务质量[2], 研究利用滑动窗口来实现实时流数据处理[1,8], 基于实时性流数据查询算法的优化[3], 研究数据流的分布式处理和最后聚集[6], 流式数据的实时分类[9]。也有融合流处理技术在其他科技领域来完成复杂性的计算, 如射频标签领域的实时数据处理[4], 高速网络中的数据流模型设计[7], 数据流量变化的处理模型[10]。而在大数据应用领域, 更多的企业在开发如何利用流处理技术来构造一个企业级的实时性数据业务平台[5]
本论文所有的研究都集中在如何构造基于运营商大数据流处理系统方面, 主要围绕实时性的业务场景下, 如何从数据产生, 数据采集, 到数据流的处理, 再到实时业务规则匹配的过程中寻找最佳流式数据平台的架构展开研究。全文采用总分结构给出了实时流处理系统的构建思路:在第二节, 对实时流处理系统的整体架构进行整体性阐述;第三节主要阐述采用Flume+Kafka+Spark Streaming架构来有效解决Hadoop系统对于小数据的流式处理效率的提高;在第四节中, 通过该系统成功实现针对固定区域进行实时人流监控的业务场景, 最后, 针对整个系统对于流式处理的效率和实时监控效果进行总结, 并形成研究结论和下一步的研究计划。
二、流式大数据系统综述
流式大数据系统的总体架构如图1 所示。
整个系统的流处理框架使用了学术界内公认较为高效的开源组件, 整体系统实时数据来源于两方面:
PS域数据:基于移动网络Gn口中的全量用户移动上网数据;
CS域数据:基于信令网络中A口中的基站定位数据。
在系统底层, 利用Flume组件来实时采集汇拢2 种来源的数据, 并根据上层数据需求进行分流, 对于需要实时处理的数据实时传送至Kafka集群, 对于非实时性数据挖掘模型需要的静态数据来形成文件写入Hadoop集群的HDFS文件。
在实时数据的ETL层, 采用Kafka组件来完成所有的数据流缓存, 该架构可以保证整体数据流通讯的可靠性以及短时延的对外服务能力。一些复杂的数据挖掘和处理通过分布式的流式处理结构-Spark streaming来实施, 该架构充分的结合了Hadoop的分布式处理的思想和内存数据库的实时处理效率, 充分保证整体处理过程的高并发、低时延, 并实现了数据内容和挖掘能力的高鲁棒性。而诸多简单业务规则和数据的匹配则通过引入简单事件匹配引擎 (PME) 来完成。处理结果最终会回写到Kafka中供应用层调用。
在实时业务层, 实时数据处理结果通过Kafka来被业务触发系统调用, 结合Hadoop的静态数据挖掘结果 (非实时) , 来形成最终的业务触发, 而在部分业务场景需求中, 为了提高整个处理效率, 我们采用了Redis (内存Key-Value引擎) 来提供数据关联查询。
三、流式大数据处理效率提高
3.1 针对静态数据的小文件处理效率提升
小文件指的是那些Size比HDFS的Block Size ( 默认64M) 小很多的文件。如果在HDFS中存储许许多多这样的小文件, 我们发现HDFS根本无法很有效的处理数量庞大的小文件。任何一个文件, 目录和Block, 在HDFS中都会被表示为一个Object存储在Name Node的内存中, 每一个Object占用150Bytes的内存空间。所以, 如果有10 Million个文件, 每一个文件对应一个Block, 那么就将要消耗Name Node 3G的内存来保存这些Block的信息。如果规模再无限制的扩大下去, 那么将会超出现阶段计算机硬件所能满足的极限。
不仅如此, HDFS并不是为了有效的处理大量小文件而存在的。它主要是为了流式的访问大文件而设计的。对小文件的读取通常会造成大量从Data Node到Data Node的Seeks和Hopping来Retrieve文件, 而这样是非常的低效的一种访问方式。
针对Gn口和A口中的实时数据结构中存在小容量数据块, 如果利用传统Hadoop结构势必需要针对数量巨大的小文件进行高效处理, 虽说Hadoop开源组件对小文件提供了许多的解决方案, 但是带来的系统构造成本巨大, 而且在运营商开展的具体业务场景下并不能完全适用。
在利用实时性通讯组件Flume开始接管A口信令数据以及Gn口数据的采集时, 改善平台小文件状况的契机开始显现。我们在Flume中使用了Hadoop一个官方API使之在接收流式数据并写入HDFS时进行文件追加, 通过接收一条数据追加一条数据至当天文件内, 这种快速积聚小文件到标准大小文件的方式解决了小文件在Hadoop集群中需要较多时延来存储至HDFS文件的问题。
使用append函数需要如下两个步骤:
3.2 针对实时性的流数据挖掘结果的结果查询技术
为了保证事件处理结果的实时读取, 本文选择Redis来进行结果存储。Redis是一个开源、先进的key-value内存存储, 用于构建高性能、可扩展的Web应用程序的完美解决方案。
Redis从它的许多竞争者继承来的三个主要特点:数据库完全在内存中, 使用磁盘仅用于持久性;相比许多键值数据存储, Redis拥有一套较为丰富的数据类型;Redis可以将数据复制到任意数量的从服务器。
而对于时延要求极低的结果查询使用Redis优势包括:
异常快速:Redis的速度非常快, 每秒能执行约11万集合, 每秒约81000+ 条记录。
支持丰富的数据类型:Redis支持最大多数开发人员已经知道像列表, 集合, 有序集合, 散列数据类型。这使得它非常容易解决各种各样的问题, 因为我们知道哪些问题是可以处理通过它的数据类型更好。
操作都是原子性:所有Redis操作是原子的, 这保证了如果两个客户端同时访问的Redis服务器将获得更新后的值。
多功能实用工具:Redis是一个多实用的工具, 可以在多个用例如缓存, 消息, 队列使用 (Redis原生支持发布/ 订阅) , 任何短暂的数据, 应用程序, 如Web应用程序会话, 网页命中计数等。
整体优化前数据流程如下:
话单文件→精细化预处理→HDFS→Hive→Green Plum
整体优化后数据流程如下:
话单流→ HDFS → Hive → Green Plum
总处理所需时间较原流程缩短至1/3, 效率提高了200%。
四、…流式大数据系统实现的业务场景
在互联网界, 百度、亚马逊、阿里巴巴、京东、腾讯等大型互联网企业将大数据的应用提高到前所未有的高度, 并形成了了一系列满足各种业务需求的大数据处理平台, 通过挖掘海量数据中蕴含的信息点, 并用业务流程来关联起来, 真正形成数据生产力来提高业务感知和质量, 向日益增长的移动互联网用户提供更加优质的服务。比如:百度通过典型数学计算工具结合Hadoop框架向用户提供搜索引擎, 通过毫秒级DSP处理引擎向广告服务提供商实时提供广告点击信息;腾讯通过Storm数据流处理系统进行简单的数据处理, 如过滤、聚类等, 以及复杂数据处理, 如运行简单的机器学习算法等;阿里巴巴通过、等计算框架向用户提供商品的推荐服务;京东通过海量数据的挖掘进行电子商务的仓储备货策略和物流控制策略。在科技学术界, 《自然》杂志于年出版了大数据专刊。
2012 年10 月, 哈佛商业评论上发表了一篇里程碑式的专题文章《Data scientist: The sexist job of 21st century》, 标志着“数据科学家”已经正式在企业中收到广泛的尊重, 这类专家的主要工作是从海量非结构化数据中挖掘出有价值的信息, 而不断涌现的大数据技术使得从海量数据中获取有价值信息成为可能。
本次实时系统研究过程中, 恰逢2015 年上海外滩踩踏事故的发生, 考虑到该系统可以基于基站定位实时统计指定区域内的人流量, 因此, 在与公安系统对接后可以通过有效的技术手段来预先判断人流拥挤程度, 避免踩踏事故的再次发生。
实时人流监控架构见图2。
数据流程中主要由PME负责订阅kafka中的简单的事件并进行处理。将A口信令中Cell_id、Lac字段匹配公参表中的经纬度信息, 输出用户号码目前匹配的经纬度信息。Storm组件负责订阅复杂事件并进行处理 (如分析小区用户群) , 同时将简单事件复杂事件处理结果输出至存Redis, 以便应用页面能够快速查询结果。
实时人流监控系统能力如下 (系统界面见图3) :
客户信令触发30 秒后, 系统就会捕捉到信令事件, 通过2-3 秒的计算后即可将用户位置信息存储至Redis里。
展示页面每5 秒刷新一次。这样在页面内展示的内容都是1 分钟内人流变化情况。
通过在大数据平台引入实时性Flume+Redis的架构实现了实时性数据采集、处理、展现的大数据能力, 并利用该能力搭建了从A口信令触发开始到最终监控界面的几个热点区域实时性人流监控, 该技术方案在整个运营商业内属于首创。
五、结论
本文提出了一种基于运营商网络的实时大数据系统的构建, 并成功的利用基于基站定位的实时人流监控业务来验证了这种技术架构的合理性, 这种模式不仅仅为未来运营商的实时大数据业务开发提供了新的思路, 同时确保了该技术架构对于具体运营商对外合作业务的可实施型。本文下一步工作首先要对实时处理时效继续优化, 构建在1分钟内从事件触发, 源数据采集, 流处理, 到业务触发到用户的全流程。然后, 增强整个流式数据模型开发, 以优化数据流ETL过程, 实现多条实时流大数据业务的并发。此外, 本文未来的研究工作还将在将在完善实时流处理和运营商推荐平台融合建设等方面继续开展。
摘要:本文利用流式数据处理框架探索了一种新的基于运营商实时大数据业务系统构建模式。首先, 在充分研究了业内实时流式处理技术的发展以及运营商本身实时数据源的特点之后, 确定以Flume作为实时采集和分流组件, Kafka作为缓存和多模块通信组件, 以Spark Streaming的分布式结构作为数据ETL集群;然后, 利用该系统进行了重点区域的人流实时监控的业务, 在实施过程中为了提供毫秒级的数据结果流查询能力, 采用了Redis组件提供基于内存的Key-Value引擎;最终, 通过流式数据处理效率的对比和实时监控的人流效果, 我们验证了了这种新的技术架构针对运营商CS域和PS域数据实时处理需求的可行性, 结果表明, 新的实时业务架构能更加有效的提高从实时采集到业务触发的运行效率, 并且为公安部门在重大节假日的区域级人流监控、预警和疏导提供了技术保障。
关键词:大数据,流处理,简单事件处理引擎 (PME) ,Flume,Kafka
参考文献
[1]李俊奎;王元珍, 可重写循环滑动窗口:面向高效的在线数据流处理[J].计算机科学, 2007
[2]武珊珊, 于戈, 吕雁飞, 谷峪, 李晓静, 数据流处理中确定性Qo S的保证方法[J], 软件学报, 2008
[3]左利云, 马英杰, 基于数据流处理模型的多查询优化算法[J], 计算机工程与科学, 2009
[4]阴晓加, 鞠时光, 王英杰, 基于复杂事件处理机制的RFID数据流处理方法[J], 计算机应用, 2009
[5]杨玮, 企业级数据中心数据流处理方案设计[J], 中国科技信息2007
[6]侯燕, 王永利, 基于近似等深柱状图的数据流并行聚集算法[J], 解放军理工大学学报 (自然科学版) , 2008
[7]陈磊松, 林锦贤, 面向高速网络的数据流处理模型研究[J], 漳州师范学院学报 (自然科学版) , 2006
[8]Yishan Jiao, Maintaining stream statistics over multiscale sliding windows[J].ACM Transactions on Database Systems (TODS) , 2006 (4)
[9]徐花芬, 毛国君, 吴静, 分布式数据流分类关键技术研究[J], 华北科技学院学报, 2015
[10]秦首科, 钱卫宁, 周傲英, 基于分形技术的数据流突变检测算法[J], , 2006, (9)
[11]Sudipto Guha, Nick Koudas, Kyuseok Shim, Approximation and streaming algorithms for histogram construction problems[J], ACM Transactions on Database Systems (TODS) , 2006 (1)
[12]张鹏, 李鹏霄, 任彦, 林海伦, 杨嵘, 郑超, 面向大数据的分布式流处理技术综述, 计算机研究与发展[J], 2014
会计数据的网络流分析 篇2
1会计网络存在的问题
在互联网的会计系统, 大量的会计数据通过网络从事业单位内外部有关系统进行采集、实时转化, 会计信息系统由封闭转向开放, 一些非相关人员的侵入可能会盗取或篡改会计信息使其失去完整性和真实性。网络会计的会计信息和计算机联系在一起, 不仅仅局限于一些单据, 因此一旦计算机磁盘发生损坏或者病毒侵入, 势必就会破坏会计数据的完整性, 引起会计信息失真。事业单位应当运用信息技术加强内部控制, 建立与财务管理相适应的信息系统, 促进内部控制流程与信息系统的有机结合, 减少或消除人为操纵因素。电算化会计信息系统中权限分工的主要形式是口令授权。操作员的口令如果被人偷看或窃取, 便会带来巨大的隐患。口令的设定过于简单, 使会计信息的保密性得不到保障。随着信息时代的到来, 电子商务的迅猛发展, 使一些单位的原始凭证已经实现电子化、数字化, 在电算化环境下, 会计信息数据存储在磁盘或软盘等磁性介质上, 这种无纸凭证缺乏交易处理痕迹, 无相关工作人员签字、盖章, 很容易被篡改或者伪造。
2 网络化企业会计信息系统框架
2. 1 网络搜集系统
会计电算化是指以电子计算机为主体的信息技术在会计工作的应用, 具体而言, 就是利用会计软件, 指挥各种计算机设备替代手工完成或在手工下很难完成的会计工作过程。网络环境下, 会计信息系统不一定是集中在财务部门搜集原始凭证, 可以来自客户、供应商、企业内部业务部门、银行等。当企业的经济业务发生时, 由相关业务管理部门人员录入业务信息, 大部分业务数据都以原始的、未经处理的方式存放, 通过财务人员的加工处理, 实现了财务信息和非财务信息的同时存储, 并保证信息流、资金流、物流同步实现。
2. 2 会计核算系统
会计核算系统下设货币资金核算子系统、存货核算子系统、固定资产核算子系统、工资核算子系统、成本核算子系统、采购及应付款核算子系统、销售及应收款子系统, 这些子系统将生成的业务凭证传递给会计核算系统, 由会计核算系统进行记账、结账等数据处理, 并将有关的成本数据提供给成本核算子系统; 成本核算子系统在完成成本核算后, 将成本费用的归集与分配结果形成转账凭证再传递给会计核算系统; 会计核算系统完成期末业务处理, 进行账簿输出和报表编制。
2. 3 网上交易管理系统
互联网财务工具的Web化, 一方面使财务核算和管理职能发生了巨大的变化, 给企业财务带来了巨大生机;另一方面由于其跨平台运行特性和瘦型客户机等特性, 不会给企业带来过高的信息技术投资成本。网上订单通过数据收集系统传递给网上交易管理系统, 进入网上银行支付或第三方支付系统进行支付, 通过文件加密、认证技术等保障支付安全。此外设置全站商品搜索和留言板管理, 为在线用户提供交易的便捷服务和意见征询。
2. 4 会计数据系统的构成
遵循管理学研究路径和逻辑, 可将会计数据系统概括为以下六个方面: 其一, 数据粒度, 是指包含在数据单元中的细节级别; 其二, 确认的频度, 是指会计被确认的频率, 即在单位时间内确认的次数, 传统会计循环系统的会计确认表现为经济业务在发生后编制会计信息的全部过程, 包括会计凭证、账户系统以及会计报告等; 其三, 数据结构, 是指会计系统组织数据、存储数据的一种方式, 它可以反映数据与数据之间的各种内在联系, 充分体现了复式簿记法的中心思想, 即数据单元之间存在一个相互关联网络系统; 其四, 计量单位, 是指用于确定事项、物品之间的内在数量关系, 并将数据额对应分配到各具体事项的一种衡定量, 一般用货币作为计量单位; 其五, 时间观, 是指会计系统反映经济业务发生的历史时序, 当前的会计系统遵循过去的时间观, 即将权责发生制作为会计确认基础; 其六, 信息质量, 是指会计信息使用者对会计信息的满足程度, 会计信息以真实性、相关性、完整性、可靠性作为处理会计业务的基本原则, 用以满足不同会计信息使用者的多维目标需求。
3 会计数据的网络流
3. 1 会计数据的网络结构
会计数据系统是一个矩阵, 即一种数学结构。以某公司的会计数据为例, 将每笔经济业务的发生金额计入借、贷两个科目的交叉方格内, 其横向各行与纵向各列的合计数相等, 即说明试算平衡。该公司的每笔经济业务都可以纳入其中填写, 进而得出结论, 即只要借贷矩阵表格足够大, 就可以容纳任何会计主体任何期间的所有经济业务事项的记录。我们将除合计栏之外的数据可以用矩阵的形式进行表示, 这个矩阵较之普通矩阵相比, 具有横向各行与纵向各列合计相等的特征, 日本著名会计学家井尻雄士将该矩阵称之为复式簿记棋盘式对照表, 这充分体现了复式簿记系统实质上是一个矩阵的中心思想。这便于我们将会计、图与网络等数学概念紧密联系起来, 从而为深入分析会计数据网络流提供了理论依据。
3. 2 会计网络流
上面已经证实会计数据是一个矩阵, 其与图和网络存在一定的联系, 那么笔者将分别以会计图、会计网络和会计网络流三个层次进行分析。会计图体现了两个科目之间在金额数量上存在的关联, 如用顶点表示不同的会计科目, 用线条箭标表示各会计科目间是否存在借贷关联, 箭头指向借方科目, 箭尾连接贷方科目, 笔者将这种描述会计分录内在关系的有向图定义为会计图。如果将公司每笔会计分录的金额均看作是网络流量, 并将其标注在每条线上, 就会将有向图与流量图集合构成一个网络, 即会计网络。在会计图中, 我们可以看出每笔会计分录都存在一个数值, 即该笔会计分录的发生额, 但是这些发生额之间存在着时间差, 也就形成了“流”的概念。其描述了该公司经济业务之间运动和流动的过程, 公司运行从“期初银行存款”作为始端, 经历了一项一项业务之后, 到“期末银行存款”作为终结, 在这期间, 每一笔会计分录都是依据其实际发生的流量完成的。
4 结 论
总之, 网络化会计系统以网络为基础, 是一种数据信息来源多元化、数据处理实时性、更为灵活的会计系统, 它能够以更加科学和高效的方式为信息使用者即时提供更有价值的会计信息。网络化会计系统能够帮助企业实现财务与业务的协同, 远程查账、报账等远程处理, 支持网上交易与支付, 改变了财务信息的获取方式。随着云计算、云安全、操作系统和数据库系统技术的不断发展, 网络化会计系统的安全性不断提升, 将是未来会计信息系统发展的主流趋势。
参考文献
[1]程风波.论财务会议信息网络化与电子商务[J].现代营销, 2013.
流数据聚类研究综述 篇3
随着通信和计算机等信息技术的发展,许多应用领域如金融市场、网络监控、电信数据管理、传感器网络等产生的数据属于流数据(data stream)类型,。流数据是由Henzinger等人于1998年在论文“Computing on Data Streams”中首次提出[1]。流数据快速、连续无限和动态的特性,加上数据收集时间和分析处理速度的限制,使得传统的数据管理和分析技术无效或需要改进,流数据已经成了一个新的研究领域和热点[2,3]。
国外在流数据挖掘方面有两个比较有影响的研究小组:Stanford大学R.Motwani教授领导的研究小组以及UIUC的由C.Aggarwal和J.Han教授领导的研究小组。前者的研究侧重于流数据管理、流数据的连续查询和流数据的聚类方面,提出了不同于传统DBMS的DSMS概念,他们的研究得到了美国国家自然科学基金的资助;后者的研究侧重于流数据分析方面,对于流数据的在线分析,从聚类、分类、频繁项集挖掘以及可视化等角度做了大量研究工作,他们的研究得到了美国军方和国家自然科基金的资助。目前国内对流数据挖掘的研究还比较少。而流数据聚类研究是数据流挖掘的一个重要方向。
1 流数据和传统数据的比较
1.1 逐层优化的区域合并改进算法介绍
一个流数据是实时、连续、有序、时变、无限的元组序列。与传统的数据集相比,流数据具有以下一些鲜明的特点:
(1)有序性。流数据中的元组按时间有序生成,序号隐含于到来的时刻或直接以时间戳记录。
(2)不可再现性。流数据中的数据一旦流过处理节点就不会再次出现,除非进行特殊的保存。
(3)高速性。流数据数据高速地生成,即产生元组的速率较高。
(4)无限性。流数据数据一直连续不断地产生,往往是无限量的。
(5)高维性。流数据往往包含大量的属性,即描述数据流的维数较高。
(6)动态性。产生流数据的概率分布模型是时变的,且变化的速率无法控制。
2 统一流聚类表示模型[4]
设2条轨迹分别为:
轨迹M{M1,M2,…,Mi…,Mn},
轨迹N{N1,N2,…,Ni…,Nn}
定义1设S为轨迹集合,设M,N为集合中任意2条轨迹,定义操作Transform(M,N),其返回值为变换后轨迹对(M,N)的真实差异。
用Transform(S)表示对集合S的转换操作,返回一个n×n集合为S’,元素为对应轨迹对的最小差异,n为轨迹的数量。
定义2单流可形式化描述为:数据…Xi-1XiXi+1…分别在…Ti-1TiTi+1…时刻到达,Xt为d维数据,记为Xt=(x1,x2,…,xd),(d≥1)。
统一流模型:表示为流集合{Sj}(j=l,2,…,n)和维数为d的公共属性维集,Sj为定义2的单流。其中,n≥l,d≥1。
n=l,d=l:一维数据单流模型;
n=l,d>l:多维数据单流模型;
n>l,d=l:一维数据多流模型;
n>l,d>l:多维数据多流模型。
定义3窗口W为保存最近到达的W个数据点集合,每次更新数据块大小B;Pji表示第j(j=l,2,…,n)只数据流在时刻ti到达的数据。
定义4考虑演化数据流,定义时间衰减函数:
其中,t0为数据到达时刻;t为当前时刻。当c=l时,演化流蜕化为非演化流,即流中的各数据不论其何时到达都具有相同的权重。
统一流聚类表示模型:数据窗口W作用于集合{Sj}(j=1,2,…,n)产生数据集,生成数据个数为n(数据的维数为窗口大小W)或W(数据维数为d)的集合,每收到B(B≤W)个数据则更新一次数据集,根据n和d值进行Transform(S,n,d)操作,聚类过程中按如下公式计算权重:f(ti)·pji(j=l,2,…,n)再结合权重计算相似性。参数n,W,d,B,以及衰减参数c的不同取值组合可表示出不同的数据流模型及其聚类处理框架。
流聚类框架如下所示:
3 流数据的聚类算法研究
3.1 经典聚类算法综述
第一个以流数据为分析对象的聚类算法是由Sudipto Guha等提出的STREAM算法。这种算法根据分治原理,使用一个不断迭代的过程实现有限空间对数据流进行K-means聚类,但该算法无法处理演化的数据流。
Aggarwal在总结上述方法本质缺陷的基础上提出了一个数据流聚类框架Clustream[5],其核心思想是将聚类过程分为在线和离线两个阶段。在线部分的任务是存储数据流的汇总结果,生成一种称为微聚类的信息存储结构,并按金字塔式时间结构将中间结果进行保存。离线部分既是根据用户指定的观察时段及聚类数量,快速生成聚类结果的过程。Clu Stream不足之处在于需要用户指定聚类簇数k,要求强行输入固定的聚类簇数必然影响真实的聚类形态分布。同时,算法是以K-means算法为基础,对非凸形状聚类效果不好,无法发现任意形状的聚类,且当噪声数据增多时,聚类质量急骤下降。
近年来许多学者围绕Clustream框架进行了大量研究。Aggarwal等后续提出了专门针对高维连续属性数据流的HPStream算法,该算法引入了子空间聚类,并提出了具有遗忘特性的聚类结构,使用高维投影技术和衰减结构来处理高维数据流,HPStream算法对高维数据流具有很好的健壮性。但算法中需要用户来指定平均聚类维数,用户一般并不具备这种领域知识,成为该算法的瓶颈。Cao等人提出了基于密度的两阶段聚类方法,即Den Stream算法,该算法仍然沿用Clu Stream算法中的双层结构,创造性的引入了潜在微聚类簇和孤立点微聚类簇结构,具备对孤立点的分析能力,即随着数据流不断进化,算法可以识别在某一时间段有可能演变成聚类簇的孤立点或“潜在聚类”,从而更加准确的捕获真实的聚类形态。但由于算法中采用全局一致的绝对密度作为参数,使得聚类结果对参数十分敏感,而且它不支持指定的时间窗口内实时数据流的演化分析。
3.2 最新公布的算法
在最近的数据流聚类研究中,有将多种原有技术进行结合使用,也有很多新颖的方法不断出现,其中受到广泛关注的3类方法是基于网格的数据流聚类技术[6,7,8,9]、子空间聚类技术[7,8,9]、混合属性数据流聚类[10],代表了当前数据流聚类研究的主流方向。
(1)D-Stream算法
D-Stream是一个典型的数据流网格聚类算法[6]。该算法通过设定密度阀值将网格分为密集、稀疏以及过渡期3类,算法在线维护一个存放非空网格的哈希表grid_list,每读入一个数据点,确保其所属网格在哈希表中,同时更新该网格的特征向量,并且通过理论证明出密集网格与稀疏网格相互转变所需的最短时间,以该时间的最小值gap为周期扫描哈希表,删除表中的稀疏网格。聚类请求到来时,将相邻的密集网格合并形成聚类(内部网格必须是密集的,外部网格可以是密集或者过渡期网格)。该算法有很多优点:(1)避免了将距离作为相似性度量标准,支持任意形状、任意大小的簇;(2)计算结果与数据输入顺序无关;(3)只需进行网格映射,避免了大量的距离和权值的计算,使得算法计算量与数据流量无直接关系。该算法的不足之处是当数据流维度较高时,会产生大量的网格,算法运行效率急剧下降。
(2)GSCDS算法
最近的研究中,子空间聚类技术也被借鉴到数据流模型,最近公布的GSCDS算法[8]就是一个代表。子空间聚类算法是一类在数据空间的所有子空间搜寻聚类的方法,根据搜索策略的不同一般分为自底向上的模式和自顶向下的模式。GSCDS算法充分利用自底向上网格方法的压缩能力和自顶向下网格方法处理高维数据的能力,将它们结合起来应用于实时数据流。
该算法的优点在于:(1)计算精度高;(2)能很好地识别和恢复网格中被划分面切割的聚类;(3)能够发现隐藏在任意子空间中的聚类。但是由于高维空间的子空间数量很多,使得算法的运算量较大,且该算法不能支持数据流的演化分析。
CAStream算法[7]也是最近公布的一个子空间聚类算法,算法借鉴Lossy Counting思想近似估计网格单元,采用改进的金字塔时间框架分割数据流,算法支持高维数据流、任意聚类形状及演化分析。
(3)HClu Stream算法
真实数据流一般具有混合属性,全连续或全离散属性的数据流在现实中几乎不存在,而目前大多的算法仅局限于处理连续属性,对离散属性采取简单的舍弃办法。为了使算法有效处理真实数据流,Yang等人提出一种基于混和属性的数据流聚类算法Hclu Stream[10]。
其它最新公布的算法还有提出纳伪和拒真两种聚类特征指数直方图,来分别支持纳伪和拒真误差窗口的Clu Win算法[11]、通过图形处理器来实现高速处理实时数据流聚类的算法[12]以及采用核方法聚类的算法[13]。
4 结束语
本文从流数据特点,研究现状及聚类算法等方面进行了总结。流数据的数据挖掘和知识发现已成为目前国际数据挖掘领域的新兴研究热点。其未来的研究将会主要集中在以下几个方面:(1)基于资源约束的自适应实时数据流聚类。这一概念最早由Gaber[14]等人提出,主要针对无线传感网络等资源约束环境进行数据流聚类;(2)高维度实时数据流的聚类。大多数真实数据流都具有高维特性,高维空间中对象分布稀疏,噪声不易识别,是一个较难解决的问题;(3)分布式环境下的多数据流实时聚类。
摘要:流数据挖掘技术是数据挖掘领域的新研究方向之一,而聚类研究又是其重要的内容。本文介绍了流数据基本特点,在统一流聚类表示模型的基础上,对现有流数据聚类算法进行了总结,并进一步提出了流数据聚类技术的研究方向和前景。
流数据聚类算法的研究和改进 篇4
在当今的经济生活中,许多领域每时每刻都会产生大量的数据,其规模十分庞大。譬如通信领域中的电话记录数据流;零售业务中的交易数据流;Web上的用户点击数据流;科学数据流。这些数据形成了一种与传统数据库中静态数据不同的数据形态,我们称之为流数据。本文在分析两层流数据聚类框架的基础上,引入了动微簇、成长簇等概念和FRG思想,提出了Growstream算法,实验结果表明,新算法更能反映流数据的动态特性,对聚类质量有一定的提高。
2. 流数据聚类的特点和研究现状
流数据是一个以一定速度连续到达的数据项序列x1,…,xi,…,xn,…,这个数据项序列只能按下标i的递增顺序读取一次[1]。流数据是现象驱动的,其速度与数据项到达的次序无法被控制。流数据通常具有潜在无限的体积,而且数据可能的取值是无限的,处理流数据的系统无法保存整个数据流。而流数据的在线处理要求又使系统无法进行代价昂贵的磁盘存取。因此,流数据中的数据项在被读取第一次之后,就被丢弃,以后不可能再读到。
2.1 流数据的特点和聚类要求
由于流数据实时、连续、有序、快速到达的特点以及在线分析的应用需求,流数据对挖掘算法的典型要求如下[2]:
(1)单次线性扫描。(2)低的时间复杂度。(3)低的空间复杂度。(4)能适应动态变化的数据与流速。
2.2 流数据聚类的典型算法
流数据的聚类算法研究过程中,分别出现了基于k-means和k-medians的STREAM算法和CLUSTREAM算法[5]以及Aggarwal等人的HPStream[6]。2003年Aggarwal所提出的一个解决数据流聚类问题的框架CLUSTREAM,使用了分层的思想,并实现了两层聚类的框架。
3. Clustream算法的分析和改进思路
在数据流聚类分析算法中,K-Means与K-Median发挥着巨大的作用。但由于K-Means与K-Median所采用的是基于距离的度量方法,所以聚类结果偏好于球形。
3.1 Clustream算法的分析
Clustream算法也是以K-means算法为基础,对非凸形状聚类效果不好,无法发现任意形状的聚类,且当噪声数据增多时,聚类质量急骤下降。有人在两层算法的框架下提出了以发现不规则形状的簇为目的的基于密度的流数据挖掘方法[4]。
3.2 Clustream算法的改进
流数据按照时序到达,不断地形成不同大小的簇,具有明显的动态特性。在上面提及的算法中,虽然也有提到流数据的时间性,但关注更多的是流数据的巨大数据量,一次扫描处理等特性,而对流数据的动态特性关注得不够。对簇的某段时间的增长速度也没有进行考察。本文针对流数据的动态特性,首先对两层框架中的微簇的概念进行了改进,增加了与簇的增长速度相关的参数,提出了动微簇的概念;同时,在对数据进行聚类时候,关注簇的成长性,提出了假设最近增长最快的簇也是未来增长最快的簇的思想FRG(Fastest Recently Grow)。因此,在成熟簇集和幼簇集中间,增加一个成长簇集,该集中的簇尽管数据点数目不多,接近于幼簇,但最近的增长速度快,根据FRG的思想,我们有理由相信这些簇极有可能会成长为成熟簇,因此据此去决定簇的聚类以及衰减或者淘汰。而且,并在此基础上对原来一些基于密度的算法进行了改进,对聚类的性能和效果有了一定程度的提高。
4. Growstream算法分析与设计
本文仍采用双层数据流聚类框架,即包括两部分———快速计算层和精确分析层。为此,我们先引入一个概念:动微簇。快速计算层在线(online)维护动微簇,所用的在线算法追求更高的时间效率,从而能够适应流数据的高速性,讲求算法的精巧性与时效性;精确分析层由用户请求所触发,是离线(offline)的最终簇生成过程。所使用离线算法则更加偏重于聚类结果的质量,对时间复杂度要求不高。譬如基于密度的聚类算法DBSCAN就能够很好地识别空间中的非球状簇。
4.1 动微簇
在双层数据流聚类框架中,使用了微簇这种数据结构来保留数据的局部摘要信息。本文在此基础上引入新的参数,对微簇的概念在动态性方面进行扩展。在本章的后续部分可以看到,它的动态属性使得它更清晰地反映了簇的成长性,为数据的聚类提供了合理的依据。
定义1动微簇
设有这样一个集合,它由多维数据点1…k…,其时间戳为T1…Tk…。每个数据点i为d维,表示为i=(xi1…xid)。一个动微簇定义为一个(2×d+5)元组,其中是d维向量。它们如下定义:
对于多位数据点的每个维,其数据值的平方和保留在中。因此,含有d个值,第p个维为
对于多位数据点的每个维,其数据值的和保留在中。因此,含有d个值,第p个维就为
记录簇开始增长的时间戳T1。簇开始增长的数据点的个数为n1。记录簇中最新数据点的时间戳T2。数据点的总个数为n2。
为了表示动微簇的增长速度,可通过给出的参数计算出簇最近的增长速度V,V越大,表示该簇最近的成长性越好。
我们注意到,由于动微簇是微簇特征向量的时间性扩展,它继承了微簇特征向量的加法属性和减法属性,使它更加有效地保留数据流的摘要信息。
设在给定的时刻,有关数据流中所有占优的微簇的摘要信息都将由快速计算层算法保留下来。我们稍后还将看到,快速计算层算法的更新过程还保证提供在变化很大的数据流中的高质量的簇。
4.2 相关定义
定义2(核心对象)如果一个对象的邻域至少包含最小数目minp个对象,则称该对象为核心对象(core object)。
定义3(成熟簇)在某一时刻t到来的一组带有时间戳Ti1……Tin的邻近点pi1……pin的集合。其结构表示为(;ω;t;v)。
其中:ω———表示权值,
ω≥βminp表示该聚类属于成熟簇
t———表示最后到达簇的点的时间
v———表示该簇最近增长的速度。
有了上面的数据就可算出每个成熟簇的中心c和半径r,分别为:
定义4(成长簇)在某一时刻t到来的一组带有时间戳Ti1……Tin的邻近点pi1……pin的集合。其结构表示为
其中:和成熟簇中的定义一致,
t0———表示加入成长簇的时间,
v>v0表示该聚类属于成长簇,其中v0是设定的簇的增长下界。
定义5(幼簇)在某一时刻t到来的一组带有时间戳Ti1……Tin的邻近点pi1……pin的集合。其结构表示为(;ω;t1;v)。
其中:,ω和成熟簇中的定义一致,
t1———表示成长簇的创建时间,
ω<βminp同时v
4.3 Growstream聚类算法
Growstream聚类算法可分为两个部分:(1)在线的动微簇的维护过程;(2)离线的生成最终的簇的过程。
4.3.1 在线聚类模型
由于数据流在形成的过程中,一个新簇刚生成时总是很微弱,需要经过足够长的时间才能发展成满足成熟簇条件的簇,所以在这里我们设置三组独立的内存空间,分别保存成熟簇,成长簇和幼簇,以便于它们之间角色的变换,减少有用信息的丢失,尽量提高聚类质量。
首先,获取成长簇。算法的最初要初始化成长簇gc和幼簇oc,为了简单,我们采取k划分的方法得到初始的成长簇igc和幼簇ioc。
当有新点到来时,先计数,然后执行下面的操作:
l)先计算点p到各成熟簇的距离,试着把p加入到离它最近的成熟簇mc中,计算该簇新的半径rp,如果rp≤ε,应用成熟簇的可加性,把p加入该簇,修改相应参数。
2)否则,计算点p到各成长簇的距离,试着将p加入离它最近的成长簇gc中,计算gc的新半径rg,如果rp≤ε,把p加入到gc中,然后检查gc的新的权值ω,如果ω>βminp,说明oc簇已发展成一个成熟簇,把gc簇从成长簇中移出,加入到成熟簇mc中,并修改相应的参数。
3)否则,计算点p到各幼簇的距离,试着将p加入离它最近的幼簇oc中,计算oc的新半径ro,如果ro≤ε,把p加入到oc中,然后检查oc的新的v,如果v>v0,说明oc簇已发展成一个成长簇,把oc簇从幼簇中移出,加入到成长簇gc中,并修改相应参数。
4)否则,给点p创建一个新的幼簇,加入到幼簇存储区中。
然后,采用适当的淘汰或合并策略。随着时间的滑动,数据的进化,成熟簇、成长簇和幼簇的数目不断增加,而内存的容量是有限的,不可能存储所有的信息。为了缓解内存问题,需要进行适当的合并或者淘汰簇的策略。
对于现存的成长簇,同样可在每个滑动窗口满时,从新对簇的成长数据进行计算,当速度已经不符合要求时候,将它从成长簇中转移到幼簇中。
对于现存的幼簇,我们会给簇足够的时间发展,而不是轻易地把它作为噪声数据删除掉。但遇到噪声数据很多时,情况也会变坏。
因此,我们采用下面一种近似的方法,采用一个最低的权值限度机制,对于那些就算给它再多时间也不可能成长为参考簇的幼簇集中的幼簇,可判定为真正的噪声数据,将其从内存中删除掉。
最低权值函数为:
式中t0———表示幼簇创建的时间
tc———表示当前时间
Tp———表示衰变时间,Tp=f(λ,β)
λ———表示衰变因子
当滑动窗口数据满时,判断幼簇的权值是否低于ξ,如果低于,则表明此幼簇必是噪声数据,将其删除,释放内存空间。
算法描述如图1所示:
4.3.2 离线再处理模型
在线获取的摘要信息按元组的结构以快照的形式存储在磁盘中,用户可以根据自己的需要对某时间段内的信息进行聚类,得出聚类结果,进行进化分析。
需要对超出内存限定的时间跨度数据流进行分析时,应使用离线聚类。本文中,我们对DBSCAN算法进行扩展,当聚类请求到达时,应用到在线维护的成熟簇集上。用DB-SCAN算法再进行聚类就可得到这一时间范围内数据流聚类的结果。
5. 实验
本节对所提出的Growstream算法进行性能测试,实验平台配置如下:
Intel(R)Pentium(R)4,CPU3.2GHz,1GMB内存,Windows Xp系统,算法采用MATLAB编写。实验所用的数据集采用网络入侵检测数据集KDD-CUP-99,
聚类质量的比较如下:
实验中聚类质量定义为该数据集中数据点聚类正确的比例。图2显示了在真实数据集下与Clustream算法的质量比较,真实数据集选择了其中的34个连续值属性维,由于采用了基于密度的聚类思想及维护的策略,聚类质量比Clustream有些提高。
6. 小结
本文在两层框架基础上,结合基于密度的聚类方法,着重考虑了流数据的动态特性,提出了动微簇的概念,并提出了最近最快增长的簇可能也是未来最快增长的簇的想法,并根据这一思想提出了成长簇的概念并用于聚类的在线算法中,设计了Growstream算法,取得了一定的效果。
摘要:流数据的聚类算法是当前数据挖掘的研究热点之一。本文在分析两层流数据聚类框架的基础上,引入了动微簇、成长簇等概念和FRG思想,提出了Growstream算法,更能反映出流数据的动态特性。
关键词:流数据,数据挖掘,基于密度的聚类,动微簇,成长簇
参考文献
[1]Henzinger M R,Raghavan P,Rajagopalan S.Computing on data streams[A].SRC Technical Note[C],1998-011:125-126.Digital systems research center:Palo A Ito,California,1998.
[2]P.Domingos,G Hulten.Catching up with the Data:Research Is-sues in Mining Data Streams[A].A CMSIGMOD Workshop on Research Issues in Data Mining and Knowledge Discovery(DMKD200I)[C].Santa Barbara,USA,2001:201-202.
[3]曹锋,周傲英.数据流聚类分析算法[D].复旦大学博士学位论文,2006,04.
[4]王喆,周春光.商务数据中的关联和聚类算法研究[D].吉林大学博士学位论文,2005,04.
[5]C.Aggarwal,J.Han,J.Wang,P.S.Yu.A Framework for Clustering Evolving Data Streams[A]In Proceedings of29th International Conference on Very Large Data Bases(VLDB’03)[C],page116-117,September9-12,Berlin,Germany,2003:81-92.
流数据管理系统 篇5
随着物联网建设地不断发展,流数据逐渐成为信息化系统中一类关键数据形式。该类数据如何及时存储已成为当前物联网应用建设中的一个重点。对于实时数据存储系统而言,首先要确保数据及时存储,从而保证数据的实时性。由于数据延迟存储,造成数据处理的非正确性,做出错误的决策。
以一个物联网环境下的地铁站交通监管数据流存储任务为例,该任务需要监管以下几类数据:1)客流;2)基础设施:扶梯,售票机,防火设备,照明灯等;3)车流:地铁,公交车,出租车等。收集并将该流数据及时存储。在该背景下,设计一种实时存储方法成为必要。
2交通枢纽实时监管系统
交通监管系统通过具体设备进行数据监测,存储,处理,对交通事件做出及时具体的措施。该系统采用了分布式的并行架构。其结构如图1所示。
3DRS方法的基本思想
车辆实时监管系统分布式架构中需要存储大规模实时数据,而这些数据具有实时性,高速性,因此我们提出的存储方法首要考虑存储的实时性。DRS方法的基本思想如下:
利用Map Reduce思想设计DRS方法,其方法的设计思路: 数据接收阶段对数据做简单的划分工作,数据写入阶段则对已划分数据进行处理。以车流数据为例,当数据接收区监听到数据缓冲区有数据时,数据接收区开始接收数据。接收数据的同时,存储程序生成多个存放数据的队列,根据数据的时间标示, 将该条数据放置到对应的队列中。当队列中数据到达到窗口阈值后,数据写入区解析存储该队列中的数据。各个队列中数据对象发送给各个数据写入区,数据写入区解析各个数据对象,将其同时存储到不同数据服务器中,实现高速率数据快速存储。
窗口阈值采用时间和数量阀值,当发送的数据在规定的时间阀值到达之前已经达到数量阈值,则立即将该部分数据进行解析存储,反之亦然。
4DRS方法的实现
4.1数据划分策略
各个队列中数据对象在内存中采用链表结构存储。根据第三节对DRS方法思想的描述可知,数据接收阶段接收数据的同时要对数据进行划分操作。该方法使用数据的唯一标示划分数据,将该条数据划分到对应的数据队列中。以车流为例描述该划分策略:首先,获取该条数据的时间戳属性值,进行hash直接取余,根据hash值将该条数据放置到对应的队列中。
当某个队列数据满足某个窗口阈值时,数据接收区会给数据对象加上标示key。每个数据写入区只负责某个队列数据对象的解析存储。
4.2数据写入
数据接收区将该段时间内的数据划分后,数据写入区接收分片数据。使用一致性哈希算法将各个分片数据有组织地存储到数据服务器中。每个服务器节点可以对等均匀地分布数据。
使用一致性哈希计算时,数据写入区将数据写入到哪台数据服务器不仅仅依赖标示key本身而将数据服务器的配置(IP地址或者机器名)也参与hash运算。单个数据服务器节点只需要专注于自身存储工作,从而实现将复杂的分布式架构逻辑与单个服务节点数据处理相分离,最大限度地利用现有的数据库存储技术。
数据存储流水线可以看做一个由数据监测,数据接收,数据划分,数据写入四个部分组成的串联系统。初始化数据发送速率,队列划分个数和窗口阈值大小,运行存储程序。
4.3DRS方法实现
基于上述理论,该DRS方法的实现如下:
首先,首先给几类流数据设定标示,如给流数据设置属性值,并配置其值,然后通过属性值将数据分类,即拥有相同属性值的数据为相同类。
其次,数据处理机对某类数据处理之后,结果集也赋予相同的Attribute value值,将其一起发送到数据缓冲区,最后,存储程序对接收的数据进行存储,流程如下:
传感设备发送数据或者数据处理机发送数据时,首先将数据发往数据缓冲区;
(1) 数据接收区一直监听数据缓冲区的数据,监测到数据缓冲区中有数据,则开始接收数据并初始化存放数据的队列;
(2) 如果数据缓冲区监测没有此类数据的到来,则一直等待,直到发送端发送数据;
(3) 存储程序根据时间戳属性计算出该条数据发往的对应队列;
(4) 如果某个队列数据到达时间窗口阈值,无论数据量是否满足数据量阈值,数据接收区均给该数据对象配置标示key;
(5) 数据写入区获取该数据对象,根据标示key和数据服务器列表,进行一致性哈希计算,根据hash值将该数据对象存放到对应数据服务器中;
(6) 如果到达数据量窗口阈值,无论时间是否满足时间窗口阈值,数据写入区都将进行取数据对象操作。
5实验设计及结果
以物联网下交通枢纽监测系统下车流的存储为例测试验证DRS方法。
实验准备:2台双核3.0 GHz CPU和4 GB内存的机器上安装Load Runner 9.0,模拟数据流发送端;1台2×4核2.4 GHz CPU,16 GB内存的机器上安装第三方缓存Active MQ中间件, 作为缓存服务器;一台2×4核2.4 GHz CPU,16 GB内存的机器上安装存储程序;6台2×4核2.4 GHz CPU,16 GB内存1 TB RAID5磁盘阵列的机器上安装oracle 10g,作为持久化存储。
实验1:使用DRS方法进行低中速率数据存储测试,查看效果:使用Load Runner服务器模拟数据流发送时,设置不同的数据发送速率,窗口时间阈值设定为2s,数据量阈值设定为2000条。持续运行10小时。
实验结果:
图2中,横轴为数据发送速率,即每秒发送的数据量,单位为条/秒,表示速率不断提高,纵轴为延迟时间,单位为小时。 由图2得知,将流数据划分并考虑将数据分布存储之后,低中速数据无延迟的存储到数据服务器中,这大大提高了系统性能,保证了数据的完整性,实时性。
实验2:使用DRS方法进行万级别发送速率的存储测试, 查看效果:使用Load Runner服务器模拟数据流发送时,设置不同的数据发送速率与不同的数据量阈值,每秒数据发送量依次设置为1w,2w,3w,4w,5w,6w,7w,8w。数据量阈值分别设为2000条,3000条,5000条,在这三种阈值下分别进行测试。时间阈值设定为2s,持续运行10小时。
图3中,横轴为数据发送速率,即每秒发送的数据量,单位为条/秒,表示速率不断提高,纵轴为延迟时间,单位为小时。 由结果图可知使用DRS方法进行存储也出现延迟现象,延迟时间随着速率不断提高而增长。当数据速率提高到更高级别时, 由于数据划分策略缘故延迟现象不会完全消除,这也是本论文下一步将要解决的问题。
6结论
本文提出了分布式实时存储方法DRS,该方法基于实时车辆数据进行了一系列实验。结果证明该方法在大部分情况下拥有良好的性能,并应用于某市交通监管实时系统中,成效显著,提高了系统的性能。
本文下一步工作将针对于阈值的设定,数据的划分与发送数据的速率之间的关系做进一步分析,使该方法更有使用价值。
摘要:随着物联网建设的不断发展,以实时传感数据为基础的各类流数据如何及时快速存储已成为当前急需解决的问题。面对连续不断到达的数据流,数据流存储系统必须及时快速将其存储到持久化介质中。针对这一需求,本文提出了一种基于缓存的分布式实时存储方法DRS。DRS方法依据窗口阈值,不间断地从缓存区接收数据,并结合一致性哈希算法将数据分布存储到数据服务器中。实验表明,该分布式存储方法能够实时地将数据存储到持久化介质中。
流数据管理系统 篇6
资产结构对企业经营状况和业绩等许多方面都有重要影响。它不仅影响财务的流动性,而且在一定程度上决定着企业创造价值的能力,甚至决定企业收入和利润的来源。我们知道,资产结构主要有各部分资产占总资产的比重和各部分资产之间的比率两层含义。其中,企业固定资产与流动资产的比率就称为固流比率。作为资产结构的一个重要指标,固流比率贯穿于企业生产经营业务流程的始终。固定资产和流动资产的比重是否协调已成为关系到企业业务循环能否有效进行,企业是否具有持续获利能力的大事,对固流比率的研究显得非常重要。
学术界对资产结构的研究主要围绕影响资产结构的因素、资产结构的优化、资产结构与企业绩效、资产结构对企业经营的影响,以及资产结构和资本结构的相互关系等方面进行,很少有人对上市公司的固流比率做深入细致的分析,而我们的研究正是为了弥补这一缺陷。
二、理论假设与样本选择
本文通过对固流比率进行分析,研究我国企业是否存在较为稳定的固流比率值,如果存在,比率是多少以及具体行业固流比率的情况。研究过程中采用的固流比率计算公式为:
固流比率=固定资产/流动资产*100%
为实现本文研究目标,本文做出如下假设:
假设一,我国上市公司固流比率值客观存在。
假设二,行业性质是影响固流比率最重要的因素。
本文的整个研究过程均建立在上述假设基础之上。基于上述假设,本文随机选取了我国沪市除金融企业和房地产行业外11个行业中的484家上市公司作为样本进行分析,样本选取率为59%,数据来源为上市公司资讯网。样本的选取扣除了金融企业(20家)和房地产行业(57家),因为它们的资产结构与一般工商企业不同,不宜列入样本;本文还扣除了全部ST的企业,原因是如果将这些企业列入样本可能会影响最后数据的准确性。样本跨度是2002—2005年的四年时间。行业的分类采取证监会划分的标准。使用的财务数据主要包括来自资产负债表的流动资产、固定资产数据。
本文采取实证方法,对样本的数据主要借助excel软件进行统计描述和分析,以研究沪市上市公司整体固流比率状况及各行业的固流比率状况。
三、数据整理与实证分析
1. 数据整理
运用excel对选取的样本数据进行数据处理。并将所得的固流比率状况结果按行业列示如表3-1所示(结果保留四位小数)。
注:各年最大变化率是指2002~2005年中固流比率最大值与最小值的比率减去1。
2. 实证结果分析
首先分析上市公司总体固流比率。研究结果如表3-1所示:在研究年度内,沪市上市公司总体固流比率基本保持稳定,各年固流比率平均值为1.633:1。这一数值表明,对于沪市上市公司整体而言,固定资产总量大约为流动资产总量的1.633倍,固定资产是上市公司资产的主要存在形式。总体固流比率各年波动幅度在10%以内,波动幅度不大,说明整个沪市上市公司固流比率值客观存在。同时,我们注意到,全部企业的固流比率从2002-2005呈现递增趋势,也就是说,对于上市公司整体,固定资产相对于流动资产的比率在不断增加,固定资产在总资产中的比重上升。
其次分析各行业固流比率状况。各行业固流比率按大小排名为:电力煤气热水类、交通运输业、挖掘业、社会服务业、信息技术业、文化传播、制造业、农林牧渔、综合类、批发零售业、建筑业。各行业年平均固流比率如图3-1所示。
观察表3—1、图3—1,我们注意到,制造业的固流比率基本等于1,固流比率超过1的行业种类有:电力蒸汽热水类、交通运输业、挖掘业、社会服务业、信息技术业、文化传播。而农林牧渔、综合类、批发零售业、建筑业的固流比率水平都低于1。各行业固流比率差异较大,固流比率水平最高的是电力蒸汽热水类,研究年度中固流比率均值为4.2107,而固流比率水平最低的是建筑业,其均值只有0.4881,前者是后者的8.6倍,行业差别显著。这一分布特征的存在有以下方面的原因:首先,各行业的科技水平不同。某一行业的科技水平要求较高,先进的机器设备、仪器必然成为企业资产的重要存在形式,在表3—1中,固流比率大于1的行业大多受这一因素的影响,反观固流比率小于1的行业,如农林牧渔、建筑业,与科技水平相适应的机器设备的需求较少,固流比率较低也就在意料之中。其次,行业传统特性的影响。如电力蒸汽热水类、交通运输业、挖掘业,这些行业因为自身的特征必然要以大量的资金购买设备、运输工具、挖掘机,反而对流动资产需求很小,最后的固流比率比较大。与这些行业相反,批发零售、建筑业等行业对流动资产的需求相对于固定资产来说要大的多,最后的固流比率就比较小。
制造业固流比率值稳定在1左右,我们事先并未预料到这一结果。这表明,单从数值来讲,制造企业流动资产已上升到与固定资产同等重要的地位,流动资产的管理即营运资金的管理必须得到重视,甚至提升至企业战略的高度。
根据表3—1的具体数据绘制各行业各年固流比率变动状况示意图,如图3—2表示。
从图3—2和表3—1可以看出,绝大多数行业各年平均固流比率变动不大,有9个行业固流比率最大波动范围在45%以内,占全部行业的82%。说明多数行业因自身行业特征具有比较固定的固流比率,行业固流比率客观存在。建筑业、批发零售业、农林牧渔业和制造业等行业,固流比率各年变动状况几乎呈直线状态。少量行业变动较大,如文化传播业各年变动幅度最大,最大变化率为1.1382;综合类其次,最大变化率为0.6558。另外,从2002~2005年,与大部分企业固流比率的上升趋势不同,挖掘业、文化传播业和社会服务业的固流比率略有下降。
四、结论和建议
1. 在2002-2005年四年中,我国沪市上市公司总体固定资产与流动资产之间的比率为1.633:1,整个沪市固流比率值基本保持稳定,各年最大波动幅度在10%以内。
2. 固流比率行业特征明显。不同行业存在不同的固流比率,各行业固流比率差异较大,固流比率呈现较强的行业特征。行业固流比率在各年之间具有稳定性,除少数行业外,绝大多数行业各年固流比率最大变动幅度在百分之四十以内,行业固流比率客观存在。
3. 通过固流比率的分析可以得出许多有建设性的结论。首先,将行业固流比率与上市公司总体固流比率相比,以发现行业存在的问题和不足,比如,农林牧渔业固流比率为0.6428,这一比率远低于上市公司总体水平1.633,农业生产的现代化是当代社会一个比较热点的话题,是否存在该行业机械化水平较低、科技投入不足的问题则需要具体问题具体分析。其次,将单个企业固流比率与行业固流比率相比,可以识别企业经营上的劣势,比如,企业固流比率偏高,则要考察是否存在财务风险过高、流动资金不足的问题;企业固流比率偏低,则要重视企业经营的稳定性。
流数据管理系统 篇7
将图像数据存在数据库中还是存在文件系统中是数据库应用程序编程中经常遇到的问题, 两种方式各有利弊, 也不能一概而论。但在大多数情况下, 对于KB级的图像文件来说, 最好还是存储在数据库表中以OLE对象 (SQL Server 2000中是image) 为数据类型的字段中。因为将图像数据文件存储在数据库中有许多优点。
图像跟着数据库一起走, 程序的安装和移植都很方便, 不用考虑文件系统及目录路径等问题, 容易管理。当图像数据与其他数据一起存储在数据库中时, 图像数据与其他数据可以一起备份和恢复。这样就不存在图像数据与其他数据不同步的问题, 而且也大大降低了其他用户无意中删除存储在文件系统中的图像数据及更改目录或路径的风险, 并且不需要为文件系统中的文件目录单独设置安全性。同时还可以对数据库系统进行优化处理以提高存取效率。总之, 将图像数据存储在数据库中是一种比较简洁谨慎稳妥的办法。
1 技术方法
在VB数据库应用程序编程中, 我们会经常需要存储一些图形图像、长文本、多媒体 (视频、音频文件) 等各种各样的文件, 如果在数据库中仅存储这些文件的路径信息, 尽管可以大大地减小数据库的大小, 但是由于文件存在磁盘上, 除了维护数据库外还要维护文件的路径信息, 这对于管理数据库很不方便。如果能够把这些文件的内容作为一个记录的一个字段值存储到数据库中, 这样文件的存储和读取就变成了简单的字段读写。现如今像SQL Server2000这样大型的数据库管理系统已经提供了多达2GB字节的字段类型 (TEXT、IMAGE、NTEXT) , 对于保存一般的文件已经足够了, 可以把需要保存的图形图像、影音视频文件等的内容存入到数据库中, 根据用户检索的信息, 再把对应的记录读出来, 存储到本地硬盘的一个临时文件中, 然后用其对应的程序打开它。为了读写BLOB (二进制大型对象) , ADO模型提供了两种方法即GetChunk和AppendChunk, 通过它们, 就可以像读写文件一样, 把这类文件的内容写进去也可以读出来。
目前将图像数据存储在数据库中有这样几种比较典型的技术方法:
利用数据控件和数据绑定控件, 利用这种方法, 不写或写少量代码就可以构造简单的数据库应用程序, 这种方法易于被初学者接受。
向数据库中添加需要存储的图片即存储图像文件的保存路径, 这种方法最简单快捷, 代码量较少。但是这种方法在运行速度和灵活性方面有一定的限制, 适合于初学者和一些简单的应用。
利用PropertyBag对象与Byte数组, 也无需对二进制文件直接进行存取, 不会产生临时文件, 代码编写简单, 操作步骤少, 所以也很适合初学者使用。
利用编写代码实现图片的存储与读取, 这种方法相对于前面3种方法来说, 代码量大, 但它操作灵活, 能够满足多样形式下的操作, 从而受到更多编程爱好者的青睐。但是涉及到的知识面相对要多一些, 不仅要掌握数据库的操作方法, 还要对VB文件系统中的二进制文件的读写操作有进一步的了解。这方面主要是运用ADO模型中Field (域) 对象的AppendChunk () 和GetChunk () 方法及Stream (流) 对象等方法。目前这两种方式因ADO模型在数据库编程中的通用性而得到广泛应用, 因其涉及长二进制数据的操作, 特别适用于图像影音文件在数据库中的存取操作, 具有更好的发展前景。
2 ADO模型存取数据库图片两种技术
2.1 Field (域) 对象的AppendChunk和GetChunk方法
BLOB (binary large object) 是相对于CLOB (字符型大型对象) 而言的, 即指二进制大型对象, 是一个可以存储二进制文件的容器。在计算机中, BLOB常常是数据库中用来存储二进制文件的字段类型。典型的BLOB是一张图片或一个影音文件, 由于它们的尺寸, 必须使用特殊的方式来处理。而AppendChunk () 和GetChunk () 方法就是ADO为处理这些BLOB字段提供的两种方法, 这两种方法是隶属于ADO模型的Field (域) 对象的, 它们是配套使用的一对方法。
其中Field.GetChunk方法返回大型文本或二进制数据Field对象的全部或部分内容。
语法格式:variable=Field.GetChunk (Size As long) 其中参数Size为长整型表达式, 等于所要检索的字节或字符数。
Field.AppendChunk将数据追加到大型文本、二进制数据Field或Parameter对象。
语法格式:Field.AppendChunk (Data) 其中参数Data为变体类型, 包含追加到对象中的数据。
使用Field对象的AppendChunk () 方法可将长二进制或字符数据填写到对象中。在系统内存有限的情况下, 可以使用AppendChunk () 方法对长整型值进行部分操作。使用Field (字段) 对象的AppendChunk () 和GetChunk () 方法时, 需要将图像数据进行分段读写, 计算稍微复杂一些、代码量相对也比较大。但此方法是通用性很强的一种方法。
2.2 Stream (记录流) 对象方法
这也是本文要重点介绍一种方法。ADO模型的Stream (记录流) 对象是专门用于流对象操作的, 它共有8种属性和13种方法, 其中有6个方法是直接读写对象和文件系统的, 因此它提供了更多针对二进制数据操作的属性和方法, 它借助VB的文件系统对图像文件的存取提供了一揽子解决的办法, 因此它有几个重要方法都是直接与临时文件的存取读写打交道的, 所以使用时也必须以VB的文件系统为操作对象, 而且它对图片、Word文档、AVI影像文件的操作均有着很强的通用性。
两种方法在使用方面各有所长, 读者可以针对自己的情况做出合理的选择。
ADO是微软公司的适用于各种类型数据的重要的高层活动数据访问接口, 是处理数据库信息的最新技术, 它是一个可编程的分层对象集合。它容易使用、高速、占用很少的额外内存, 并且只占用磁盘空间很小。正是基于ADO对象模型的基本知识, 并通过其Connection和Recordset对象以及ADO2.5中新出现的Stream对象对数据库应用程序编程中图像数据的存取进行介绍, 使读者在较短的时间掌握这一技术, 开发出切实可行的应用程序。
3 Stream对象存取图片文件的步骤
ADO模型中的Stream对象表示二进制数据或文本的流, 也是自ADO2.5中新出现的专门用于操作大型BLOB类型字段的对象, 因此它提供了诸多方便图像和大型文本操作的属性和方法。现将其中与图像存取操作相关的几个属性和方法作一简单介绍。
Type设置或返回Stream对象中的数据的类型。可选参数有:adTypeBinary=1或adTypeText=2。这里主要用adTypeBinary=1属性值。
Close用于关闭一个Stream对象。
LoadFromFile (FileName) 将FileName指定的文件装入对象中。
Open (Source, [Mode], [Options], [UserName], [Password]) 打开一个Stream对象。该方法有诸多参数, 但可以省略。在以下的示例中省略所有参数。
Read (Numbytes) 读取指定长度的二进制内容。不指定参数则默认读取全部数据。
SaveToFile (FileName, [Options]) 将对象的内容写到FileName指定的文件中。其中FileName就是指定的文件, 而Options存取的选项, 可选参数如下:adSaveCreateNotExist=1;adSaveCreateOverWrite=2。在以下的示例中用参数2。
Write (Buffer) 将指定的数据装入对像中。其中Buffer为指定的要写入的内容。
具体到实践中, 用Stream对象保存图片文件只需要这样简单的几个步骤:
(1) 首先声明并实例化Stream对象变量。 (2) 设置其Type属性为二进制类型。
(3) 打开Stream对象。
(4) 将指定的图片文件载入到Stream对象中。
(5) 用Stream对象的Read方法读取指定长度 (或全部) 的二进制内容存储到数据库字段中。
(6) 关闭Stream对象。
而读取图片文件的内容, 因为是从数据库中读取图片文件, 因此需要有个临时文件为过渡, 所以首先得声明一个字符型变量, 使其值指向一个临时文件, 接下来的步骤其中第1-3步骤与上面相似,
(1) 用Stream对象的Write方法将数据库中的二进制图片文件内容写入到Stream对象中。
(2) 用Stream对象的SaveToFile方法将Stream对象中的内容写到临时文件中。
(3) 关闭Stream对象。
然后将临时文件载入到VB图像框控件中以达到显示图像的目的, 最后将临时文件删除。这样便完成了将存储在数据库中的二进制内容读取并显示到图像框控件中的任务。
4 典型示例
在此以Visual Basic 6.0中文企业版为开发环境, 采用单机版工作模式, 利用adodb.stream对象对Access2003数据库关系表中图像数据的存取进行了初步探索实践, 现将学习过程及心得体会一并记录, 与诸位编程爱好者分享。
以数据库“Temp.mdb”中的“Table”表为基础, 设计简单的图片存取管理程序。
在此示例中引用的ADO对象为Microsoft ActiveX Data Objects 2.8 Library版本。
4.1 操作步骤
首先打开Microsoft Office Access2003新建→空数据库, 文件名为Temp, 使用设计器创建表, 新建字段名称为:姓名 (数据类型:文本) 、编号 (数据类型:文本) 、照片 (数据类型:OLE对象) 的3个字段, 另存为→表名称:Table, 设计好后关闭数据库。然后单击:工具→数据库实用工具→转换数据库→转换为Access97文件格式将设计好的数据库转换并在根目录下保存为同名文件。最终设计好的数据库设计示图界面如图1所示。
然后打开Microsoft Visual Basic 6.0中文企业版, 新建→标准EXE文件, 在工程→引用, 在可用的引用中选中Microsoft ActiveX Data Objects2.8 Library→确定。
4.2 界面设计
最终用户界面如图2图片管理程序设计界面所示。
4.3 代码编写
首先声明如下窗体级变量:
编写用于自动生成编号函数:
创建控件数组Command1用于图片管理操作:
创建控件数组Command2用于图片浏览操作:
在窗体的卸载事件中关闭记录集和数据库连接并释放资源:
在文本框的获得焦点的事件中自动生成编号:
在文本框离开焦点的事件中检查姓名是否重复:
4.4 运行效果
在进行存取数据后打开根目录下Temp数据库中的Table表可看到如图4所示界面。
可以看到照片字段中存储的内容显示的是长二进制数据, 这就是通过ADODB.Stream对象保存在数据库中的图片文件。
5 结语
相对于ADO模型的Field (域) 对象的AppendChunk () 和GetChunk () 方法, 用ADODB模型的Stream (记录流) 对象存取数据库图片的确有着其他同类方法难以比拟的优点, 它不涉及复杂的算法、代码简洁, 只需几行代码就可以存取图像数据。尽管它涉及到二进制数据的操作, 但它秉承了ADO模型不涉及控件而纯用代码方式编程的优点, 对存取二进制数据提供了诸多方便, 大大简化了图像数据在数据库中的的存取操作。
摘要:VB数据库中图像数据的存取对初学者来说是个难点, 而用ADO模型的记录流对象存取数据库图片的技术大大简化了存取长二进制数据的操作, 介绍了利用这一对象存储图片文件的方法, 使读者在较短的时间里掌握这一技术, 进而开发出切实可行的应用程序。
关键词:VB数据库编程,ADO对象模型,流对象,图像数据,存取操作
参考文献
[1]求是科技.Visual Basic6.0数据库开发技术与工程实践.人民邮电出版社, 2004.
[2]全国计算机等级考试四级教程-数据库工程师 (2008版) .教育部考试中心.高等教育出版社, 2007:269-312.
[3]刘志妩, 等.基于VB和SQL的数据库编程技术.清华大学出版社, 2008:226-239.