`
wangyihust
  • 浏览: 438296 次
文章分类
社区版块
存档分类
最新评论

EDNA实时数据库两种取历史数据值的方式

J# 
阅读更多

1. DnaGetNextHistUTC函数:根据游标一个一个值取

 int i = EzDNAApiNet.EzDnaApi.History.DnaGetHistDirectRawUTC(szServer,szPoint, Start, End, ref key);  

if (i == 0)
                {
                    long l1 = DateTime.Now.Ticks / 10000;

                    int s = 0;

                    int i1 = 0;

                    while (i1 == 0)
                    {
                        i1 = EzDNAApiNet.EzDnaApi.History.DnaGetNextHistUTC(key, ref pdValue, ref ptTime, szStatus, 20);

                        if (pdValue >= dHighLimit)
                        {
                            m_ulHighCount++;
                        }

                        if (pdValue<= dLowLimit)
                        {
                            m_ulLowCount++;
                        }
                       

                        if (i1 == 0)
                        {                           

                            //记住开始时间
                            if (s == 0)
                            {
                                EzDNAApiNet.EzDnaApi.Translator.UCTToStringTime(ptTime, szTime, 30);

                                sStart = szTime.ToString();
                            }  
                       
                            s++;
                        }
                    }

                    //记住结束时间
                    EzDNAApiNet.EzDnaApi.Translator.UCTToStringTime(ptTime, szTime, 30);
                    sEnd = szTime.ToString();

                    long l2 = DateTime.Now.Ticks / 10000 - l1;

    }

2. DnaGetNextHistBlockSmall函数:一次读取批量数据

int i = EzDNAApiNet.EzDnaApi.History.DnaGetHistDirectRawUTC(szServer,szPoint, Start, End, ref key);
 StringBuilder szTime = new StringBuilder(30);

            double[] pszValueList = new double[1000000];
            int[] pszTimeList = new int[1000000];
            ushort[] pszStatusList = new ushort[1000000];

            string sStart = "";
            string eEnd = "";

  if (i == 0)
            {
                long l1 = DateTime.Now.Ticks / 10000;

                int s = 0;

                do
                {

                    i1 = EzDNAApiNet.EzDnaApi.History.DnaGetNextHistBlockSmall(key, 1000000, out pnCount,   pszValueList, pszTimeList, pszStatusList);

                    if (0 == i1)
                    {
                        for (int j = 0; j < pnCount; j++)
                        {
                            //开始时间
                            if (j == 0)
                            {

                                EzDNAApiNet.EzDnaApi.Translator.UCTToStringTime(pszTimeList[j], szTime, 30);
                               
                                sStart = szTime.ToString();

                            }
                            else if (j == pnCount-1)
                            { 
                                //结束时间
                                EzDNAApiNet.EzDnaApi.Translator.UCTToStringTime(pszTimeList[j], szTime, 30);
                                eEnd = szTime.ToString();
                           
                            }
 

                            s++;
                        }

                    }
                }
                while (0 == i1);      

                long l2 = DateTime.Now.Ticks / 10000 - l1;

方式2比方式1性能有10倍的提高。当然,历史数据查询与磁盘IO性能有很大关系。

分享到:
评论

相关推荐

    eDNA实时数据库结构特点及功能简介

    服务器负责现场实时数据的采集和存储,包括目录服务、安全服务等多个组件。客户端则用于数据的浏览和处理,如Alarm View、eDNA View等。接口软件确保了与其他系统的通信能力。 - **目录服务**:作为系统的核心,它...

    edna实时数据库培训手册

    eDNA是一个专为实时数据处理和存储设计的数据库系统,广泛应用于工业自动化、物联网(IoT)以及监控等场景。 **一、eDNA的安装** 1.1 eDNA安装程序组件 eDNA的安装包通常包含以下关键组件: - **eDNA服务器**:这是...

    eDna 实时数据库的编程VB6.0 接口源代码

    eDna是一款高性能、高可靠性的实时数据库系统,设计用于处理工业自动化、能源管理、物联网(IoT)等各种领域的实时数据。它能够快速存储、查询和分析大量的实时和历史数据流,提供强大的数据处理能力。 VB6.0接口,即...

    eDNA实时数据库API

    eDNA实时数据库API /* *************************************************************************** * COPYRIGHT (c) 2003 by InStep Software, LLC. All Rights Reserved * * * * This program is an ...

    实时数据库操作手册(eDNA).pdf

    手册最后一部分介绍了如何进行edna数据库历史数据的转移。这部分内容没有提供详细的操作步骤,但可以推断操作涉及将历史数据从当前存储位置(如E盘的History文件夹)转移到新的位置。 整个手册的讲解过程详细且逻辑...

    edna实时数据库SDK函数VB编程实例

    在信息技术领域,数据库管理是至关重要的组成部分,而EDNA(Event Data Notation Architecture)则是一种专为实时和历史数据处理设计的高性能数据库系统。它提供了SDK(Software Development Kit),允许开发人员...

    实时数据库Edna应用例程

    通过研究这些例程和API,开发者可以更好地理解如何在实际项目中利用实时数据库来处理和响应实时数据流,从而提升系统的效率和响应速度。如果你对实时数据库开发有兴趣或需求,这个资源将是一个宝贵的起点,可以帮助...

    eDNA 数据库用户手册

    总之,eDNA实时历史数据库为研究者提供了强大而全面的工具,用于管理和分析环境DNA数据,从而推动生态学研究的进步。通过深入理解和熟练运用本用户手册,用户将能够充分利用这个数据库,实现高效的生态数据分析和...

    eDNA实时历史数据库及其在电网中的应用

    近十几年来,关系数据库技术在电力监控以及电网调度...采用关系型数据库来存储系统历史数据,在数据规模不是很大(小于50,000),存储采样周 期不是很高(如5 分钟、1 分钟等)的情况下,还能够比较好地满足应用需求。

    eDNA数据库及其数据处理技术深入研究

    这些服务协同工作,负责实时数据的采集与存储,确保数据的安全性和完整性。 【客户端组件】客户端服务主要包括Alarm View、eDNA View、eLink、EzTrend和计算服务等,用于浏览和处理生产信息,满足用户对实时和历史...

    eDNA数据库平台在厂级监控信息系统中的应用

    eDNA实时数据库平台在厂级监控信息系统中的应用,主要介绍了eDNA实时数据在SIS中的功能及数据库的特点

    eDNA数据库管理员手册

    eDNA数据库不仅支持实时数据流处理,还能处理大量历史数据,提供高效的数据检索和分析能力。 **二、实时数据库功能** 1. **实时数据存储**:eDNA能够快速接收并存储来自不同设备和系统的实时数据流,确保数据的...

    基于eDNA实时历史数据库的远程诊断中心建设.ppt

    《基于eDNA实时历史数据库的远程诊断中心建设》 这篇文档介绍了如何利用eDNA实时历史数据库构建一个远程诊断中心,以提升电力行业的运营效率和安全性。eDNA数据库是由InStep Software LLC开发的一款专为电力系统...

    实时数据库及数据采集.pptx

    完成对实时数据的集中海量存储 支持实时数据读写操作和历史数据的高效查询 提供实时计算、实时分析处理等功能 实时数据的组织和访问权限管理 3 实时数据库及数据采集全文共31页,当前为第3页。 当前主流的实时...

    科技成果——eDNA实时、历史数据库系统.docx

    综上所述,eDNA实时、历史数据库系统以其数据处理技术的先进性、运行性能的高效率、扩展能力的灵活性以及资源管理的优化性,成为了电力系统、石油石化等关键行业领域中不可或缺的数据管理工具。面对未来更加复杂和...

    eDNA-实时数据库-API函数VB-VC部分.doc

    在VB代码中,`DNA_RTDATA`是一个结构类型,包含了关于实时数据的各种字段,如数据ID、时间戳、传感器值等。 除了DNAGetRTAll,API可能还包含其他相关函数,如特定传感器数据的读取、数据写入、错误处理等,这些在...

    实时数据库-eDNA归类.pdf

    SERVICE”、“HISTORY_SERVICE”、“ALARM_SERVICE”、“DATA_ALIVE_PERIOD”等表明eDNA系统中集成了多种服务组件,这些服务用于配置系统的运行参数、管理历史数据、发出警报以及处理实时数据。服务组件的配置和运行...

Global site tag (gtag.js) - Google Analytics