热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

使用IBMInformixTimeSeries处理股票交易、智能电表等事务

随着世界仪表化程度的不断提升,IBM的智慧地球愿景也逐渐成为现实,IBMInformixTimeSeries的价值越来越明显。由于起源于关键架构突破性InformixDynamicServer(IDS)版本9,InformixTimeSeries是一款独特而又强大的技术,人们普遍将其视为处理大

随着世界仪表化程度的不断提升,IBM 的智慧地球 愿景也逐渐成为现实,IBM Informix TimeSeries 的价值越来越明显。由于起源于关键架构突破性 Informix Dynamic Server (IDS) 版本 9,Informix TimeSeries 是一款独特而又强大的技术,人们普遍将其视为处理大

随着世界仪表化程度的不断提升,IBM 的智慧地球™ 愿景也逐渐成为现实,IBM® Informix® TimeSeries 的价值越来越明显。由于起源于关键架构突破性 Informix Dynamic Server (IDS) 版本 9,Informix TimeSeries 是一款独特而又强大的技术,人们普遍将其视为处理大量时间戳数据的卓越工具。

Informix TimeSeries 的核心技术最初被描述为“对象关系模型”或“通用”。Informix 运用了专有(但并不十分生动)的营销术语“数据刀片”。

无论将它称作什么,这个概念都十分强大。您可以运用这项技术开放数据库,这样才能添加新的数据类型,其中包括通过运用新数据类型的特定操作人员来扩展标准 SQL 语言,从而添加新的“方法”。

由于用于添加这些扩展(数据刀片开发人员工具包)的应用程序编程接口 (API) 已经对客户端、合作伙伴和 Informix 开发人员完全开放,所以这些群体现在可以添加新数据类型支持。目前已经创建了数十种有趣的数据刀片,但其中的两种最为流行、对客户最有吸引力:处理时间序列数据和空间数据的扩展。

这些扩展得到广泛接受是有一定道理的。几乎每一家机构(无论是企业还是政府机构)都具有地点和时间数据。

位置数据案例

位置(空间)数据对于现今已向许多数据库添加此类数据处理机制的机构而言十分有用,还有一些公司的业务基于提供与此搭配使用的空间数据和地图。例如,如果您每次使用网站时,网络均要求您提供邮政编码,然后向您显示最近的业务位置(如最近的 ATM),那么您使用的很可能是支持空间数据的数据库。

即使没有专门的时间序列数据和空间数据功能,您仍然可以在自己的数据库中保留地址,但您却很难对“从 26 Cherry St. 到 52 Adams St. in Springfield, OR. 有多远这类简单问题进行解答”。对于保存为未引用地理数据库的字符串的地址,它所包含的信息不足以回答此类查询。

时间序列数据需求

虽然通过空间数据扩展典型关系数据类型从概念上很容易掌握,但仍然需要对时间序列数据类型需求稍作解释。毕竟,自最早的数据库系统问世以来,时间和日期一直是重要元素,并且始终是数据库系统不可或缺的组成部分。任何联机事务处理 (OLTP) 系统中的常规事务都会用时间戳来标记。计费系统通常基于计费周期,以日期和时间为界限。因此,如果从一开始 SQL 中便支持日期和时间数据格式,那么为什么还需要使用特殊时间序列数据类型和相关方法?

简言之,时间序列数据是一个特殊案例,一些数据变化十分迅速,因而创建了大量数据点。对使用传统时间元素与时间序列数据进行比较十分有用。一个普通的银行帐户每天可能执行几笔交易;使用 SQL 时间和日期格式,为每项交易创建一个新行,这样做十分简单明了。从另一极端角度,需要思考大型股票交易创建的数据点数,例如,IBM 股票平均每天近四百万宗交易。纽约证券交易所每个交易日 6.5 小时,每分钟产生约 10,000 宗交易(换算成每秒钟 170 宗交易),投资公司可能需要充分适应这种节奏。

当然,使用标准 SQL 数据类型和格式记录此类信息是可以实现的。TPC-C 基准几十年前就已发明出来,可以帮助客户了解这些类型的方案涉及的各种供应商系统的吞吐能力。但是,如果我们的要求更高,将会怎么样?如果我们不仅需要写入大量交易,而且同时还要对大量输入执行一些操作,该怎么办?此外,如果我们需要将数据存储在同一位置以便持续运行查询,又该怎样做?扫描数十乃至数百个包含几百万行数据的表听起来很难快速获得查询结果。
这些都是现实问题,Informix 工程师和架构师正是被派遣通过 Informix TimeSeries 技术解决问题。至于 TimeSeries,早期采用者都是一些服务于大型投资公司的高价套利交易员。

开发 TimeSeries 技术

Informix 团队创造了多项技术,运用 IDS 并通过全新的数据类型和方法进行扩展。

首先,Informix 团队开创了更加有效的存储机制,用户不再需要为时间序列数据创建数百万冗余数据行。这种存储机制是一种 TimeSeries 数据,专门设计用于存储数据点(或“刻度”,如金融交易所使用的纸带)。此数据类型大大缩小了数据库规模,而且还减少了数据库中行数,使其能够承载套利交易员所需的海量交易数据(参见图 1)。随后,Informix 团队向查询语言 (SQL) 中添加了新的扩展,不再需要使用数十个语句才能提出简单问题,这简化了问题提问过程。

此外,Informix 团队还开发了一种更加迅速的数据库数据录入方法,其速度比 OLTP 系统使用的典型方法更加迅速。Informix 团队构建了高速加载器,以满足这种客户端关键任务需求。

使用IBM Informix TimeSeries处理股票交易、智能电表等事务

图 1. Informix TimeSeries 通过避免创建数百万冗余行来简化存储。

从概念上了解 Informix TimeSeries 如何存储时间序列数据十分容易,并且演示了该产品的其他功能如何运用这种思想。我们的目标是确保其快速、有效且易于理解。当开发人员提取信息时,数据库系统十分有用。简单的概念模型才能实现轻松查询,并最终加速新型交易战略的开发和部署。这是竞争激烈的商品贸易世界的一项关键要求。

如果定期(例如,实验室以 1/10 秒为间隔测量传感器数据)提供时间序列数据,则需要通过进一步的细化来提高效率。Informix TimeSeries 不会存储时间戳,因为用户可以根据初始值来轻松计算时间戳。例如,如果传感器从 2:00:00.0 开始读取,而数据点是序列中的第 251 个数据点,那么时间戳将读取为 2:00:25.1。

在这篇文章的第 2 部分中,我们将探讨电力行业如何能够快速采用 Informix TimeSeries,并将其作为适应智能电表生成的海量时间戳数据的有效途径。

推荐阅读
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 推荐一个ASP的内容管理框架(ASP Nuke)的优势和适用场景
    本文推荐了一个ASP的内容管理框架ASP Nuke,并介绍了其主要功能和特点。ASP Nuke支持文章新闻管理、投票、论坛等主要内容,并可以自定义模块。最新版本为0.8,虽然目前仍处于Alpha状态,但作者表示会继续更新完善。文章还分析了使用ASP的原因,包括ASP相对较小、易于部署和较简单等优势,适用于建立门户、网站的组织和小公司等场景。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文介绍了使用postman进行接口测试的方法,以测试用户管理模块为例。首先需要下载并安装postman,然后创建基本的请求并填写用户名密码进行登录测试。接下来可以进行用户查询和新增的测试。在新增时,可以进行异常测试,包括用户名超长和输入特殊字符的情况。通过测试发现后台没有对参数长度和特殊字符进行检查和过滤。 ... [详细]
  • 本文详细介绍了MysqlDump和mysqldump进行全库备份的相关知识,包括备份命令的使用方法、my.cnf配置文件的设置、binlog日志的位置指定、增量恢复的方式以及适用于innodb引擎和myisam引擎的备份方法。对于需要进行数据库备份的用户来说,本文提供了一些有价值的参考内容。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 本文由编程笔记小编整理,介绍了PHP中的MySQL函数库及其常用函数,包括mysql_connect、mysql_error、mysql_select_db、mysql_query、mysql_affected_row、mysql_close等。希望对读者有一定的参考价值。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • Java String与StringBuffer的区别及其应用场景
    本文主要介绍了Java中String和StringBuffer的区别,String是不可变的,而StringBuffer是可变的。StringBuffer在进行字符串处理时不生成新的对象,内存使用上要优于String类。因此,在需要频繁对字符串进行修改的情况下,使用StringBuffer更加适合。同时,文章还介绍了String和StringBuffer的应用场景。 ... [详细]
  • Oracle分析函数first_value()和last_value()的用法及原理
    本文介绍了Oracle分析函数first_value()和last_value()的用法和原理,以及在查询销售记录日期和部门中的应用。通过示例和解释,详细说明了first_value()和last_value()的功能和不同之处。同时,对于last_value()的结果出现不一样的情况进行了解释,并提供了理解last_value()默认统计范围的方法。该文对于使用Oracle分析函数的开发人员和数据库管理员具有参考价值。 ... [详细]
  • MyBatis错题分析解析及注意事项
    本文对MyBatis的错题进行了分析和解析,同时介绍了使用MyBatis时需要注意的一些事项,如resultMap的使用、SqlSession和SqlSessionFactory的获取方式、动态SQL中的else元素和when元素的使用、resource属性和url属性的配置方式、typeAliases的使用方法等。同时还指出了在属性名与查询字段名不一致时需要使用resultMap进行结果映射,而不能使用resultType。 ... [详细]
  • 本文详细介绍了在ASP.NET中获取插入记录的ID的几种方法,包括使用SCOPE_IDENTITY()和IDENT_CURRENT()函数,以及通过ExecuteReader方法执行SQL语句获取ID的步骤。同时,还提供了使用这些方法的示例代码和注意事项。对于需要获取表中最后一个插入操作所产生的ID或马上使用刚插入的新记录ID的开发者来说,本文提供了一些有用的技巧和建议。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • 本文详细介绍了Spring的JdbcTemplate的使用方法,包括执行存储过程、存储函数的call()方法,执行任何SQL语句的execute()方法,单个更新和批量更新的update()和batchUpdate()方法,以及单查和列表查询的query()和queryForXXX()方法。提供了经过测试的API供使用。 ... [详细]
author-avatar
手机用户2502876217
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有