我有多个设备(具体来说是11个),它们每秒发送一次信息。该信息在Apache服务器中接收,由PHP脚本解析,存储在数据库中,最后显示在gui中。
我现在正在做的是检查是否存在当前日期的行,如果不存在则创建一个新行,否则进行更新。
之所以这样做,是因为我需要轮询数据库中的信息并将其显示在c++应用程序中,以使其看起来具有实时性。如果我每次设备发送信息时都要创建一行,则处理和读取数据将花费大量时间以及系统资源(内存,CPU等),从而使数据显示不太真实。时间。
我编写了一个报告生成工具,该工具每天获取信息(从00:00:00到23:59:59),并将其放入Excel电子表格中。

我的问题基本上是:

  • 是否可以直接在数据库服务器中执行插入/更新部分,还是必须在php脚本中执行逻辑?
  • 是否有更好(更有效)的方式来存储信息而不降低显示设备的性能?
  • 关于报告生成,如果我想采样间隔,可以说从昨天的15:50:00开始到今天的12:45:00,这不能用我当前的数据结构来完成,因此我需要考虑什么为了建立一个数据结构,这将允许我创建此类查询。

  • 我使用的组件:
    -Apache 2.4.4
    -PostgreSQL 9.2.3-2
    -PHP 5.4.13

    最佳答案

    我的建议-仅存储设备正在发送的所有信息。使用适当的索引和查询,您可以真正快速地从DB处理和检索信息。

    对于您的问题:

    是的,可以使用SQL,PL / pgSQL,PL / PHP,PL / Java,PL / Py和Postgres内置的许多其他语言在Postgres DB中构建所需的任何逻辑。

    就像我之前说过的那样-正确的索引编制可以神奇。

    如果无法通过全表获得所需的查询速度-您可以为每个设备创建一个只有1行的小表。并在此表中保留最后一个已知值,以sort of real-time显示它们。

    10-08 08:19
    查看更多