当前位置:首页 » 存储配置 » 时序数据存储

时序数据存储

发布时间: 2022-07-18 13:25:43

⑴ 时序对内存影响多少

时序对内存影响如下:
时序的变化对内存寿命的影响很微小,但是频繁变化的时序,会改变内存的稳定性。而且超时序不加压也对内存没有什么影响,加压会有些影响,但只要别超过1.6V一般没有问题。

内存时序是描述内存条性能的一种参数,一般存储在内存条的SPD中。内存时序越小越好,内存频率越高,延时越小,这个延时其实是每个时钟周期的时间,内存时序可以理解为内存数据的读写时间,内存时序的单位就是时钟周期。比如ddr2 800,每个时钟周期的延时是2.5纳秒,当将ddr2 800超频至ddr1000时,每时钟周期延时是2纳秒,这样超频对内存体质是一个考验。

⑵ 关系数据库 可以做 时序数据库吗

这个前面的同学已经提及了facebook开源的gorilla实现beringei。我们准备在监控告警和日志分析,调用链追踪这一块跟elasticsearch 结合起来使用。初期设想就是日志收集到集中处理服务器通过beringei存储并匹配查找来进行告警通知并结合自愈脚本来动态化解决问题(当然底层集群层面通过k8s来做容量方面的动态扩展和故障迁移)。最终二次落地到elasticsearch中进行日志分析和查找展示。后期也会通过机器学习方法来分析频现的问题来做预期处理。

⑶ 综合使用时序数据与截面数据能解决多重共线性吗

时序数据与截面数据能解决多重共线性请参考下面时序数据库白皮书。


思极有容数据库

时序数据库技术白皮书


北京中电普华信息技术有限公司

2020年4月


目录

1大数据时代的挑战1

2产品特点1

3系统结构2

4存储结构4

5数据分区、水平扩展6

6高可靠系统7

7STable:多表聚合9

8数据模型10

9实时流式计算11

10便捷的安装、部署、维护12

11更多亮点13

12参数指标13

13应用场景14


1大数据时代的挑战

随着移动互联网的普及,数据通讯成本的急剧下降,以及各种低成本的传感技术和智能设备的出现,除传统的手机、计算机在实时采集数据之外,手环、共享单车、出租车、智能电表、环境监测设备、电梯、大型设备、工业生产线等也都在源源不断的产生海量的实时数据并发往云端。这些海量数据是企业宝贵的财富,能够帮助企业实时监控业务或设备的运行情况,生成各种维度的报表,而且通过大数据分析和机器学习,对业务进行预测和预警,能够帮助企业进行科学决策、节约成本并创造新的价值。

仔细研究发现,所有机器、设备、传感器、以及交易系统所产生的数据都是时序的,而且很多还带有位置信息。这些数据具有明显的特征,1:数据是时序的,一定带有时间戳;2:数据是结构化的;3:数据极少有更新或删除操作;4:无需传统数据库的事务处理;5:相对互联网应用,写多读少;6:用户关注的是一段时间的趋势,而不是某一特点时间点的值;7:数据是有保留期限的;8:数据的查询分析一定是基于时间段和地理区域的;9:除存储查询外,往往还需要各种统计和实时计算操作;10:数据量巨大,一天采集的数据就可以超过100亿条。

看似简单的事情,但由于数据记录条数巨大,导致数据的实时写入成为瓶颈,查询分析极为缓慢,成为新的技术挑战。传统的关系型数据库或NoSQL数据库以及流式计算引擎由于没有充分利用这些数据的特点,性能提升极为有限,只能依靠集群技术,投入更多的计算资源和存储资源来处理,企业运营维护成本急剧上升。

2产品特点

思极有容时序数据库正是普华公司面对这一高速增长的物联网大数据市场和技术挑战推出的创新性的大数据处理产品,它不依赖任何第三方软件,也不是优化或包装了一个开源的数据库或流式计算产品,而是在吸取众多传统关系型数据库、NoSQL数据库、流式计算引擎、消息队列等软件的优点之后自主开发的产品,在时序空间大数据处理上,有着自己独到的优势。

·10倍以上的性能提升:定义了创新的数据存储结构,单核每秒就能处理至少2万次请求,插入数百万个数据点,读出一千万以上数据点,比现有通用数据库快了十倍以上。

·硬件或云服务成本降至1/5:由于超强性能,计算资源不到通用大数据方案的1/5;通过列式存储和先进的压缩算法,存储空间不到通用数据库的1/10。

·全栈时序数据处理引擎:将数据库、消息队列、缓存、流式计算等功能融合一起,应用无需再集成Kafka/Redis/HBase/HDFS等软件,大幅降低应用开发和维护的复杂度成本。

·强大的分析功能:无论是十年前还是一秒钟前的数据,指定时间范围即可查询。数据可在时间轴上或多个设备上进行聚合。临时查询可通过Shell,Python,R,Matlab随时进行。

·与第三方工具无缝连接:不用一行代码,即可与Telegraf,Grafana,Matlab,R等工具集成。后续将支持MQTT,OPC等工具,与BI工具也能够无缝连接。

·零运维成本、零学习成本:安装、集群一秒搞定,无需分库分表,实时备份。支持标准SQL语句,支持JDBC,RESTful连接,支持Python/Java/C/C++/Go等开发语言,与MySQL相似,零学习成本。

采用思极有容时序数据库,可将典型的物联网、车联网、工业互联网大数据平台的整体成本降至现有的1/5。同样的硬件资源,思极有容时序数据库能将系统处理能力和容量增加五倍以上。

3系统结构

思极有容时序数据库是基于硬件、软件系统不可靠、一定会有故障的假设进行设计的,是基于任何单台计算机都无足够能力处理海量数据的假设进行设计的,因此思极有容时序数据库从研发的第一天起,就是按照分布式高可靠架构进行设计的,是完全去中心化的。思极有容时序数据库整个系统结构如下图所示,下面对一些基本概念进行介绍。


物理节点:集群里的任何一台物理机器(dnode),根据其具体的CPU、内存、存储和其它物理资源,思极有容时序数据库将自动配置多个虚拟节点。

虚拟数据节点:存储具体的时序数据,所有针对时序数据的插入和查询操作,都在虚拟数据节点上进行(图例中用V标明)。位于不同物理机器上的虚拟数据节点可以组成一个虚拟数据节点组(如图例中dnode0中的V0,dnode1中的V1,dnode6中的V2组成了一个组),虚拟节点组里的虚拟节点的数据以异步的方式进行同步,并实现数据的最终一致性,以保证一份数据在多台物理机器上有拷贝,而且即使一台物理机器宕机,总有位于其他物理机器上的虚拟节点能处理数据请求,从而保证系统运行的高可靠性。

虚拟管理节点:负责所有节点运行状态的采集、节点的负载均衡,以及所有MetaData的管理,包括用户、数据库、表的管理(图例中用M标明)。当应用需要插入或查询一张表时,如果不知道这张表位于哪个数据节点,应用会连接管理节点来获取该信息。MetaData的管理也需要有高可靠的保证,系统采用Master-Slave的机制,容许多到5个虚拟管理节点组成一个虚拟管理节点集群(如图例中的M0,M1,M2)。这个虚拟管理节点集群的创建是完全自动的,无需任何人工干预,应用也无需知道虚拟管理节点具体在哪台物理机器上运行。

集群对外服务IP:整个系统可以由多台甚至数万台服务器组成,但对于应用而言,只需要提供整个集群中任何一台或两台服务器的IP地址即可。集群将根据应用的请求,自动的将请求转发到相应的一个甚至多个节点进行处理,包括聚合、计算操作等。这些复杂的分发和路由对应用是完全透明的。

4存储结构

为提高压缩和查询效率,思极有容时序数据库采用列式存储。与众多时序数据库不同的是,思极有容时序数据库基于时序数据的特点,将每一个采集点的数据作为数据库中的一张独立的表来存储。这样对于一个采集点的数据而言,无论在内存还是硬盘上,数据点在介质上是连续存放的,这样大幅减少随机读取操作,减少IO操作次数,数量级的提升读取和查询效率。而且由于不同数据采集设备产生数据的过程完全独立,每个设备只产生属于自己的数据,一张表也就只有一个写入者。这样每个表就可以采用无锁方式来写,写入速度就能大幅提升。同时,对于一个数据采集点而言,其产生的数据是时序的,因此写的操作可用追加的方式实现,进一步大幅提高数据写入速度。


数据具体写如流程如图所示:

写入数据时,先将数据点写进Commit日志,然后转发给同一虚拟节点组里的其他节点,再按列写入分配的内存块。当内存块的剩余空间达到一定临界值或设定的commit时间时,内存块的数据将写入硬盘。内存块是固定大小(如16K)的,但依据系统内存的大小,每个采集点可以分配一个到多个内存块,采取LRU策略进行管理。在一个内存块里,数据是连续存放的,但块与块是不连续的,因此思极有容时序数据库为每一个表在内存里建立有块的索引,以方便写入和查询。

数据写入硬盘是以添加日志的方式进行的,以求大幅提高落盘的速度。为避免合并操作,每个采集点(表)的数据也是按块存储,在一个块内,数据点是按列连续存放的,但块与块之间可以不是连续的。思极有容时序数据库对每张表会维护一索引,保存每个数据块在文件中的偏移量,起始时间、数据点数、压缩算法等信息。每个数据文件仅仅保存固定一段时间的数据(比如一周,可以配置),因此一个表的数据会分布在多个数据文件中。查询时,根据给定的时间段,思极有容时序数据库将计算出查找的数据会在哪个数据文件,然后读取。这样大幅减少了硬盘操作次数。多个数据文件的设计还有利于数据同步、数据恢复、数据自动删除操作,更有利于数据按照新旧程度在不同物理介质上存储,比如最新的数据存放在SSD盘上,最老的数据存放在大容量但慢速的硬盘上。通过这样的设计,思极有容时序数据库将硬盘的随机读取几乎降为零,从而大幅提升写入和查询效率,让思极有容时序数据库在很廉价的存储设备上也有超强的性能。

为减少文件个数,一个虚拟节点内的所有表在同一时间段的数据都是存储在同一个数据文件里,而不是一张表一个数据文件。但是对于一个数据节点,每个虚拟节点都会有自己独立的数据文件。

5数据分区、水平扩展

为处理每日高达数亿条的海量数据,数据必须在多个节点存放。在思极有容时序数据库里,数据是按照每个采集点(表)来存放的。一张表(一个采集点)的数据,即使每秒产生一百个字节的数据量,一年也才3G的数据量,压缩后,往往还不到300M,因此在思极有容时序数据库里,一个表的数据是不跨节点存储的,以便于单张表的快速高效的插入、查询和计算。

为更好的数据分区,思极有容时序数据库采用了虚拟数据节点的设计。一个虚拟数据节点包含多个表,表的数量可以配置。根据其计算和存储资源,一个物理节点将被划分为多个虚拟数据节点。虚拟数据节点的设计带来几大优势:

1)更好的支持硬件异构环境,资源多的服务器可以创建更多的虚拟节点;

2)恢复一个宕机的节点,可以让众多的其他节点参与进来,大大加快速度;

3)如果撤掉一个数据节点,该节点上的虚拟节点将被相当均匀的迁移到其他节点上去;

4)新增一个数据节点,负载过热的节点的上的部分虚拟节点将被整体迁移过来。这一切让负载更加均衡,让数据同步变得更加高效。

与传统的数据库相似,用户可以创建多个数据库,每个库里面,可以创建多个表。一个库可以横跨多个虚拟数据节点,但一个虚拟数据节点仅仅属于一个数据库。当用户添加一个表时,管理节点将查看已经分配的虚拟节点里是否还有空位,如果有,就将该表分配到这虚拟节点。如果这个库的所有虚拟节点都没有空位,管理节点将根据负载均衡的策略(随机、轮询等)来分配一个新的虚拟节点给该库,然后将该表分配到新的虚拟节点里。由于一台物理主机有多个虚拟数据节点,这种策略能保证负载均匀分布。

管理节点负责整个系统的负载均衡,包括虚拟数据节点的增加、删除、迁移、合并与拆分。管理节点并不保存每个采集点采集的数据,只是管理虚拟节点,即使宕机,也不会影响现有各虚拟节点的数据插入和查询操作。各个采集点或应用从管理节点获取分配的虚拟数据节点信息后,然后直接与虚拟数据节点通讯,直接将数据插入数据库,对于查询操作也是如此。因此,系统容量以及吞吐率与虚拟数据节点的个数成正比,整个系统是水平扩展的

6高可靠系统

为保证数据节点的高可靠性,思极有容时序数据库引入了虚拟数据节点组的概念,并采用异步的方式进行数据同步。一个虚拟节点组由处于不同物理主机上的虚拟数据节点组成,虚拟数据节点个数就是数据冗余的个数(ReplicationFactor,一般大于2)。在一个虚拟节点组里,各个虚拟数据节点通过心跳包实时知道对方的状态。如果一个虚拟数据节点收到数据写入的请求,该请求会被立即转发给其他虚拟数据节点,然后在本地存储处理。当应用连接思极有容时序数据库系统时,对于要操作的任何一张表,系统会给应用提供该表所属的虚拟数据节点组里各个虚拟节点的IP地址(如果replicationfactor为3,就会有3个IP地址),如果链接其中一个失败或者操作失败,应用会尝试第二个、第三个,只有所有节点失败才会返回失败。这样保证虚拟数据节点组里任何一台机器宕机,都不会影响对外的服务。这些复杂的重新连接流程都被思极有容时序数据库Driver包装隐藏起来,应用开发者无需写程序来实现。

为保证效率,思极有容时序数据库采取异步方式实现多个副本之间的实时数据同步,采取的是最终一致性,而不是强一致。当一台主机重启时,每个虚拟数据节点都会检查自己数据的版本是否与其他虚拟节点一致,如果版本不一致,需要同步后才能进入对外服务状态。在运行过程中,由于各种原因,数据仍然可以失去同步,这种不同步会在收到转发的写入请求时被发现,一旦被发现,版本低的虚拟数据节点将马上停止对外服务,进入同步流程,同步完后,才会重新恢复对外服务。同步过程中,高版本的节点还可以正常的对外提供服务。

管理节点负责存储Meta数据,同时根据每个数据节点状态来负责负载均衡,因此也要保证其高可靠性。多个虚拟管理节点组成一个虚拟管理节点组,因为Meta数据可以被多个应用同时更新,因此思极有容时序数据库采用的是Master-Slave模式实现虚拟管理节点的数据同步。写的操作,只有Slave节点写入成功后,Master节点才会返回成功,从而保证数据的强一致性。如果Master节点宕机,系统有机制保证其中一个Slave会立即被选举为Master,从而保证系统写操作的高可靠性。

由于Meta数据量并不大,Meta数据虽然需持久化存储,但将其完全保存在内存,以保证查询操作的高效。在应用侧,为避免每次数据操作都访问管理节点,思极有容时序数据库Driver将必要的Meta数据都会缓存在本地,只有当需要的Meta数据不存在或失效的情况下,才会访问管理节点,这样大大提高系统性能。

管理节点在集群中存在,但对于应用和系统管理员而言,是完全透明的。整个系统会自动在物理节点上创建虚拟管理节点以及虚拟管理节点组。

7STable:多表聚合

各个数据采集点的时钟是很难同步的,为保证其时序,而且为保证单一采集点的数据在存储介质上的连续性,思极有容时序数据库要求每个数据采集点单独建表,这样能极大提高数据的插入速度以及查询速度,但是这将导致系统表的数量猛增,让应用对表的维护以及聚合、统计操作难度加大。为降低应用的开发难度,思极有容时序数据库引入了STable超级表的概念。

STable是表的集合,包含多张表,而且这个集合里每张表的Schema是一样的。同一类型的采集设备可创建一个STable。与表一样,包含Schema,但还包含标签信息。Schema定义了表的每列数据的属性,如温度、压力等,而标签信息是静态的,属于MetaData,如采集设备的型号、位置等。思极有容时序数据库扩展了标准SQL的table的定义,创建时,除指定Schema外,还可以带关键词tags来指定有哪些标签。如:

createtablem1(tstimestamp,pressureint,rpmint)tags(modelbinary(8),colorbinary(8))

上述SQL创建了一个STablem1,带有标签model和标签color。为某一个具体的采集点创建表时,可以指定其所属的STable以及标签的值,比如:

createtablet1usingm1tags(‘apple’,‘red’)

上述SQL以STablem1为模板,创建了一张表t1,这张表的Schema就是m1的Schema,但标签model设为apple,标签color设为red。插入数据时,仍然按照正常的方式进行插入。但查询时,除传统的表的查询外,还可以基于标签对STable进行各种聚合查询或统计。如:

selectavg(pressue)fromm1wheremodel=’apple’interval(5m)groupbycolor

上面这个SQL语句表示将标签model值为apple的所有采集点的记录的每5分钟的平均值计算出来,并按照标签color进行分组。

对于STable的查询操作,完全与正常的表一样。但一个定义的STable可以包含多张表(多个数据采集点),应用可通过指定标签的过滤条件,对一个STable下的全部或部分表进行聚合或统计操作,这样大大简化应用的开发。其具体流程如下图所示:

1)、应用将一个查询条件发往系统;

2)、Driver将查询的过滤条件发往MetaNode(管理节点);

3)、管理节点将符合查询过滤条件的表的列表发回Driver(包含每个表对应的数据节点的IP地址);

4)、这些返回的表可能分布在多个数据节点,Driver将计算的请求发往相应的多个数据节点;

5)、每个数据节点完成相应的聚合计算,将结果返回给Driver;

6)、Driver将多个数据节点返回的结果做最后的聚合,将其返回给应用。

8数据模型

思极有容时序数据库采用的仍然是传统的关系型数据库的模型。用户需要根据应用场景,创建一到多个库,然后在每个库里创建多张表,创建表时需要定义Schema。对于同一类型的采集点,为便于聚合统计操作,可以先定义超级表STable,然后再定义表。

不同的采集点往往具有不同的数据特征,比如有的采集点数据采集频率高,有的数据保留时长较长,有的采集数据需要3份备份,而有的数据一份备份即可,有的采集点一条记录很大,而有的采集点的记录仅仅16个字节,很小。为让各种场景下思极有容时序数据库都能最大效率的工作,思极有容时序数据库建议将不同数据特征的表创建在不同的库里。创建一个库时,除SQL标准的选项外,应用还可以指定保留时长、数据备份的份数、cache大小、是否压缩等多种参数。

思极有容时序数据库对库的数量、STable的数量以及表的数量没有做任何限制,而且其多少不会对性能产生影响,应用按照自己的场景创建即可。

9实时流式计算

在存储的原始数据上,思极有容时序数据库可以做各种计算,目前支持的主要操作包括:

·Avg:以每个采样时间范围内的value的平均值作为结果

·Dev:以每个采样时间范围内的value的标准差作为结果

·Count:以每个采样时间范围内的点的数目作为结果

·First:以每个采样时间范围内的第一个value作为结果

·Last:以每个采样时间范围内的最后一个value作为结果

·LeastSquares:对每个采样时间范围内的value进行最小二乘法的拟合

·Max:以每个采样时间范围内的value的最大值作为结果

·Min:以每个采样时间范围内的value的最小值作为结果

·Percentile:每个采样时间范围内的value的第p百分位数作为结果。

·Sum:以每个采样时间范围内的value的总和作为结果

·Diff:以每两个相邻的value的差值作为结果

·Div:以每个value除以一个除数作为结果

·Scale:以每个value乘以一个倍数作为结果

·基于多个采集点数据的四则运算表达式

思极有容时序数据库还可对一个或多个数据流进行实时聚合、统计等计算,并将计算出的衍生数据当做新的数据保存进思极有容时序数据库,以便后续的操作。实时计算与聚合查询很类似,只是后台定时进行,并自动滑动计算窗口的起始点。工作方式与其他流式计算引擎的SlidingWindow相似。

实时计算可以通过一个简单的创建表的操作来实现。如:

createtabled1asselectavg(pressure)fromt1interval(60s)sliding(10s)

上述SQL表示将表t1里字段pressure每10秒钟(每次滑动的时间间隔)将过去的60秒钟(聚合计算的时间间隔)的数据平均值计算出来并写入表d1。计算出的衍生数据可以与其他原始数据或计算出的衍生数据进行再次计算。

10便捷的安装、部署、维护

思极有容时序数据库是在Linux上开发的,任何Linux系统都可以运行,而且不依赖任何第三方软件,也不是在某个开源项目上包装出来的产品。获得安装包并解压后,只需执行安装脚本就一切搞定,极其简单。

安装后,会在安装的机器上自动创建虚拟数据节点和管理节点,开发者就可以使用了,能满足一般性的需求。但如果数据量大,就需要将软件安装到多台主机。这时也只需要在每台机器配置好MasterIP,系统管理员打开思极有容时序数据库Shell,将新添加的主机添加进系统即可。如果要撤销一个物理节点,登录思极有容时序数据库Shell,将其删除即可,极其简单。传统数据库所需要的数据分区、数据迁移等等都一概不存在。

因为数据是自动同步到多个节点的,系统管理员不用担心数据的丢失,也不用制定备份和数据恢复策略,一切全自动进行。

如果软件需要升级,只要在思极有容时序数据库Shell里将新版本上传即可。管理节点将挨个把每个节点的软件进行升级,而且整个系统的服务将不停止,服务不受任何影响。如果要更换设备,只需将其拔除,安装上软件后,将新设备重新插入即可。换言之,思极有容时序数据库完全支持在线升级以及硬件的热插拔,从而保证服务的7*24的不间断运行。

开发人员需要做的是定义表的结构,根据具体场景,配置好各种参数,让系统性能达到最优。系统管理员只需要关注与硬件相关的报警信息,对于经常出问题的服务器或硬盘,进行更换而已。使用思极有容时序数据库,整个系统的运维工作变得极为简单,将大大降低运营成本。

11更多亮点

订阅模式:与标准的数据库不同,思极有容时序数据库还提供一种订阅模式。应用程序可以订阅数据库某张表的内容,一旦该表有新的记录,应用将立即得到通知。同一个表可以被多个应用订阅。与流行的消息中间件Kafka一样,订阅采取的是pull而不是push模式。Kafka的publish操作由数据库插入操作代替。由于思极有容时序数据库具有极高的插入速度,通过采用订阅模式,思极有容时序数据库本身也可以作为一个消息队列中间件来使用。

异步插入:为避免网络延迟带来的性能下降,更好的提高数据插入速度,思极有容时序数据库还提供一组API让应用异步插入数据。当应用调用插入API时,将立即得到反馈,等记录成功插入后,思极有容时序数据库将调用应用提供的回调函数通知应用。采用异步插入,性能将大幅提高。

Nagle算法:时序数据应用场景里,每条记录一般都很小,很多不到20字节,因此整个系统处理的是大量的小数据包。为了更进一步提高性能,减少网络IO次数,思极有容时序数据库采用了类似TCP协议的Naggle算法,客户端将缓存插入请求,只有记录的大小超过一定的大小或者缓存时间超过100毫秒,被缓存的插入请求才会被发往系统。对于时间要求很高的应用,该功能可以关闭。

12参数指标

·支持数据类型:tinyint,smallint,int,bigint,float,double,binary

·单记录最大长度:4096字节

·最大记录条数:仅受存储空间限制

·最大表的个数:仅受节点个数限制

·最大数据备份数:5份

·单节点插入速度:3万条/秒(单核,16字节每记录,每次一条,无同步备份)

·单节点查询速度:2000万条/秒(单核,16字节每记录,全内存)

·更多指标将陆续提供

13应用场景

思极有容时序数据库作为一个基础性的软件,应用范围及其广泛,原则上,所有使用机器、设备、传感器采集数据的地方都可以用上。一些典型场景罗列如下:

·公共安全:上网记录、通话记录、个体追踪、区间筛选

·电力行业:智能电表、电网、发电设备的集中监测

·通讯行业:话费详单、用户行为、基站/通讯设备监测

·金融行业:交易记录、存取记录、ATM、POS机监测

·出行工具:火车/汽车/出租/飞机/自行车的实时监测

·交通行业:实时路况,路口流量监测,卡口数据

·石油石化:油井、运输管线、运输车队的实时监测

·互联网:服务器/应用监测、用户访问日志、广告点击日志

·物流行业:车辆、集装箱的追踪监测

·环境监测:天气、空气、水文、地质环境等监测

·物联网:电梯、锅炉、机械、水表、气表等各种联网设备

·军工行业:各种军事装备的数据采集、存储

·制造业:生产过程管控,流程数据、供应链数据采集与分析


网页链接技术白皮书网页链接请单击查看!

⑷ 关于C51单片机的外扩数据存储器的读写操作时序的问题

c51存储器类型有bit
sbit
data
xdata
bdata
pdata
sfr
code等,可能不全面有遗漏
对应的物理存储器是:
bit,即位数据:数据存储器位寻址区,即20h~2fh的范围,共16个字节,16*8=128个位,位地址00h~7fh,连续的。
sbit:特殊功能寄存器中的位数据:只有能够被8整除的那些特殊功能寄存器中的各个位才能被称为sbit,位地址80h~ffh,不连续的,间断的。
data:数据区,对51为00h~7fh共128个字节,对52为00h~ffh,共256个字节,用mov寻址,前128用直接寻址或寄存器(r0~r7)寻址,后128用r0、r1间接寻址。
xdata:外部数据区,0000h~ffffh连续,用dptr间接寻址(movx指令)
bdata:位寻址去的字节,20h~2fh
sfr:特殊功能寄存器(80h~ffh),直接寻址
pdata:外部数据区,p2口保持数据,用r0r1间接寻址(movx指令)
code:程序存储器,用movc指令只读

⑸ 单片机扩展存储24C08时序图那里有,数据存储的原理是怎样的

网络一下,PDF版的文件

24C08读写操作,适用于初学者

#include <AT89X52.H>
#include <stdio.h>
#include <absacc.h>
unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07, 0x7f,0x6f,};
unsigned char sec; //定义计数值,每过1秒,sec加1
unsigned int tcnt; //定时中断次数
bit write=0; //写24C08的标志;
sbit gewei=P2^5; //个位选通定义
sbit shiwei=P2^6; //十位选通定义
/////////24C08读写驱动程序////////////////////
sbit scl=P3^6; // 24c08 SCL
sbit sda=P3^7; // 24c08 SDA
void delay1(unsigned char x)
{ unsigned int i;
for(i=0;i<x;i++);
;}
void flash() //延时2us
{
;
;
}
void x24c08_init() //24c08初始化子程序
{
scl=1;
flash();
sda=1;
flash();
}
void start() //启动I2C总线
{
sda=1;
flash();
scl=1;
flash();
sda=0;
flash();
scl=0;
flash();
}
void stop() //停止I2C总线
{
sda=0;
flash();
scl=1;
flash();
sda=1;
flash();
}
void writex(unsigned char j) //写一个字节
{
unsigned char i,temp;
temp=j;
for (i=0;i<8;i++)
{
temp=temp<<1;
scl=0;
flash();
sda=CY;
flash();
scl=1;
flash();
}
scl=0;
flash();
sda=1;
flash();
}
unsigned char readx() //读一个字节
{
unsigned char i,j,k=0;
scl=0;
flash();
sda=1;
for (i=0;i<8;i++)
{
flash();
scl=1;
flash();
if (sda==1) j=1;
else j=0;
k=(k<<1)|j;
scl=0;
}
flash();
return(k);
}
void clock() // I2C总线时钟
{
unsigned char i=0;
scl=1;
flash();
while ((sda==1)&&(i<255))i++;
scl=0;
flash();
}
////////从24c02的地址address中读取一个字节数据/////
unsigned char x24c08_read(unsigned char address)
{
unsigned char i;
start();
writex(0xa0);
clock();
writex(address);
clock();
start();
writex(0xa1);
clock();
i=readx();
stop();
delay1(10);
return(i);
}
//////向24c02的address地址中写入一字节数据info/////
void x24c08_write(unsigned char address,unsigned char info)
{
EA=0;
start();
writex(0xa0);
clock();
writex(address);
clock();
writex(info);
clock();
stop();
EA=1;
delay1(50);
}
/////////////24C08读写驱动程序完/////////////////////
void Delay(unsigned int tc) //延时程序
{
while( tc != 0 )
{unsigned int i;
for(i=0; i<100; i++);
tc--;}
}
void LED() //LED显示函数
{
shiwei=0;
P0=table[sec/10];
Delay(8);
shiwei=1;
gewei=0;
P0=table[sec%10];
Delay(5);
gewei=1;
}
void t0(void) interrupt 1 using 0 //定时中断服务函数
{
TH0=(65536-50000)/256; //对TH0 TL0赋值
TL0=(65536-50000)%256; //重装计数初值
tcnt++; //每过250ust tcnt加一
if(tcnt==20) //计满20次(1秒)时
{
tcnt=0; //重新再计
sec++;
write=1; //1秒写一次24C08
if(sec==100) //定时100秒,在从零开始计时
{sec=0;}
}
}
void main(void)
{
TMOD=0x01; //定时器工作在方式1
ET0=1;
EA=1;
x24c08_init(); //初始化24C08
sec=x24c08_read(2);//读出保存的数据赋于sec
TH0=(65536-50000)/256; //对TH0 TL0赋值
TL0=(65536-50000)%256; //使定时器0.05秒中断一次
TR0=1; //开始计时
while(1)
{
LED();
if(write==1) //判断计时器是否计时一秒
{
write=0; //清零
x24c08_write(2,sec); //在24c08的地址2中写入数据sec
}
}
}

24c08读写程序

#include<at89x52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int

sbit SCL="P2"^6;
sbit SDA="P2"^7;
uchar code displaycode[]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90};
uchar code displaybit[]={0xfe,0xfd,0xfb,0xf7};
uchar displaybuf[3];

void delayX2us(uchar x) //微秒延时
{
while(--x);
}

void delayXms(uchar x) //毫秒延时
{
uchar i;
while(x--)
{
for(i=250;i>0;i--)
{
_nop_();
_nop_();
_nop_();
_nop_();
}
}
}

void start ()
{
SDA=1;
delayX2us(2);
SCL=1;
delayX2us(2);
SDA=0;
delayX2us(2);
}

void stop ()
{
SDA=0;
delayX2us(2);
SCL=1;
delayX2us(2);
SDA=1;
delayX2us(2);
}

void init()
{
SCL=1;
delayX2us(2);
SDA=1;
delayX2us(2);
}

void responds()
{
uchar i;
i=0;
SCL=1;
delayX2us(2);
while(SDA==1&&i<200)
i++;
SCL=0;
delayX2us(2);
}

void write_dat (uchar dat) //写一个字节
{
uchar i;

for(i=0;i<8;i++)
{
SCL=0;
delayX2us(2);
SDA=(bit)(dat&0x80);
delayX2us(2);
SCL=1;
delayX2us(2);
SCL=0;
delayX2us(2);
dat<<=1;
}

SDA=1;
delayX2us(2);

}

void write(uchar dat,uchar add) // 写一个字节dat到地址add
{
start();
write_dat(0xa0);
responds();
write_dat(add);
responds();
write_dat(dat);
responds();
stop();
}

uchar read_dat () //读一个字节
{
uchar i;
uchar dat;
bit j;
for (i=0;i<8;i++)
{
dat<<=1;
SCL=0;
j=SDA;
delayX2us(2);
SCL=1;
if(j==1)
{
dat|=0x01;
}
SCL=0;
}
return dat;
}

uchar read (uchar add) //从地址add中读取一个字节
{
uchar dat;

start();
write_dat(0xa0);
responds();
write_dat(add);
responds();
start();
write_dat(0xa1);
responds();
dat=read_dat();
delayX2us(2);
stop();
return dat;
}

void display(uchar dat) //显示程序
{
uchar ,shi,ge,i;
=dat/100;
shi=dat%100/10;
ge=dat%10;
displaybuf[0]=;
displaybuf[1]=shi;
displaybuf[2]=ge;

for(i=0;i<3;i++)
{
P0=displaycode[displaybuf[i]];
P1=displaybit[i];
delayX2us(5);
P1=0xff;
}
}

void main ()
{
uchar dat,add,k;
dat=212;
add=2;
init();

write(dat,add);
delayXms(1000);
k=read(add);

while(1)
{

display(k);

}
}

⑹ 时序数据库是什么解决什么问题的主要应用那些行业

时序数据库是一种按照时间存储的数据库。
解决是海量数据的高效插入查询。
应用在互联网的大规模数据统计分析上面,物联网的信息收集方面。

时间点对于时序数据库非常重要,而高吞吐量决定了它存在的价值。

⑺ 百度云时序数据库的数据可以备份到哪里

目前网络云的时序数据库的数据可以备份到网络云对象存储BOS。

当然什么时序数据库都可以备份到对象存储中。

对象存储主要提供稳定、安全、高效、高可扩展的云存储服务。可以将任意数量和形式的非结构化数据存入BOS,并对数据进行管理和处理。BOS支持标准、低频、冷存储等多种存储类型,满足您各类场景的存储需求。

⑻ 监控系统为什么采用时间序列数据库

思极有容时序数据库正是普华公司面对这一高速增长的物联网大数据市场和技术挑战推出的创新性的大数据处理产品,它不依赖任何第三方软件,也不是优化或包装了一个开源的数据库或流式计算产品,而是在吸取众多传统关系型数据库、NoSQL数据库、流式计算引擎、消息队列等软件的优点之后自主开发的产品,在时序空间大数据处理上,有着自己独到的优势。

  • · 10倍以上的性能提升:定义了创新的数据存储结构,单核每秒就能处理至少2万次请求,插入数百万个数据点,读出一千万以上数据点,比现有通用数据库快了十倍以上。

  • · 硬件或云服务成本降至1/5:由于超强性能,计算资源不到通用大数据方案的1/5;通过列式存储和先进的压缩算法,存储空间不到通用数据库的1/10。

  • · 全栈时序数据处理引擎:将数据库、消息队列、缓存、流式计算等功能融合一起,应用无需再集成Kafka/Redis/HBase/HDFS等软件,大幅降低应用开发和维护的复杂度成本。

  • · 强大的分析功能:无论是十年前还是一秒钟前的数据,指定时间范围即可查询。数据可在时间轴上或多个设备上进行聚合。临时查询可通过Shell, Python, R, Matlab随时进行。

  • · 与第三方工具无缝连接:不用一行代码,即可与Telegraf, Grafana, Matlab, R等工具集成。后续将支持MQTT, OPC等工具, 与BI工具也能够无缝连接。

  • · 零运维成本、零学习成本:安装、集群一秒搞定,无需分库分表,实时备份。支持标准SQL语句,支持JDBC, RESTful连接, 支持Python/Java/C/C++/Go等开发语言, 与MySQL相似,零学习成本。

采用思极有容时序数据库,可将典型的物联网、车联网、工业互联网大数据平台的整体成本降至现有的1/5。同样的硬件资源,思极有容时序数据库能将系统处理能力和容量增加五倍以上。




同时,相比HBase等数据库,使用普华思极有容时序数据库来存储有以下优势:


1. 存储空间大幅节省,估计不到HBase的1/10

2. 服务器资源大幅节省,估计不到1/5

3. 查询速度提高至少10倍

4. 提供异地容灾备份方案

5. 支持通过标准SQL进行即席查询

6. 数据超过保留时长,自动删除

7. 零管理,安装、部署、维护极其简单,一键搞定

热点内容
创建实例在linux 发布:2024-10-07 18:03:16 浏览:485
黑客学c语言 发布:2024-10-07 17:37:39 浏览:942
ftp比较文件 发布:2024-10-07 17:04:56 浏览:39
如何配置幼儿园园内的玩具 发布:2024-10-07 17:04:23 浏览:863
干支日算法 发布:2024-10-07 16:47:17 浏览:502
sqlin语句用法 发布:2024-10-07 16:45:05 浏览:640
直出服务器怎么样 发布:2024-10-07 15:41:36 浏览:479
比亚迪唐dmi哪个配置性价比 发布:2024-10-07 15:19:28 浏览:903
编译器按变量 发布:2024-10-07 15:07:03 浏览:775
怎么忘记电脑wifi密码怎么办 发布:2024-10-07 15:02:18 浏览:426