首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于delphi和大型数据库的最佳数据库

用于delphi和大型数据库的最佳数据库
EN

Stack Overflow用户
提问于 2015-08-15 03:30:14
回答 1查看 731关注 0票数 0

使用Delphi XE2:多年来,我一直在使用AbsoluteDB,成功地满足了较小的需求,但它不能很好地扩展到大型数据集。我需要针对以下条件的DB引擎的建议:

  • 大型(多千兆字节)数据集,有大量小记录的表很少。这是工业设备历史数据;大多数表每分钟写入一次新记录,其中包含设备ID、日期、时间和状态;一对表的记录为每个记录的单个数据点( w/ a),另外三个表根据设备类型的不同,每个记录有10至28个数据点。其中一个单数据点表异步添加事件,每分钟可能有十几个或更多个条目。所有这些都必须维持一年之久。数据通常通过设备ID和日期窗口访问。
  • 多用户。系统服务从设备中检索数据,但趋势显示是一个单独的应用程序,可能位于单独的计算机上。
  • 快地。最多能在六秒钟内将任何48小时的数据集中起来。
  • 而不是嵌入。
  • 如果可能的话只有一个文件。重要的是,备份和恢复可以通过编程完成。复制支持是很好的,但不是必需的。
  • 可以集成到我们现有的InstallAware包中,而无需用户在安装过程中进行干预。
  • 关键:没有每次安装许可证。我不介意购买每个座位的开发商许可证,但我们是一家工业设备公司,而不是一家软件公司--我们没有做好跟踪这类事情的准备。

提前感谢!

EN

回答 1

Stack Overflow用户

发布于 2015-08-15 09:02:19

我会用

  • 或者PostgreSQL (在如此庞大的数据方面比MySQL更被证实)
  • MongoDB

主要的标准是您将如何处理这些数据。而你对此却没怎么说。您会按数据点进行个别查询吗?你需要做汇总(和/平均数.)吗?每种类型的数据点?如果“数据通常是通过设备ID和日期窗口访问的”,那么我可能不会将数据存储在单个行中,每个数据点一行,而是在"集合体“中收集数据,即存储在"document”列中的对象或数组。

您可以将这些聚合存储为BLOB,但它可能没有效率。PostgreSQL和MongoDB都有强大的对象和数组函数,包括文档中的索引。

不要从DB开始,而是从逻辑开始:您正在收集哪些数据?它是如何获得的?以后如何访问?然后设计高级对象,让DB高效地存储对象。

还要考虑CQRS模式:将数据存储在几个地方、几个布局中,并明确区分写(命令)和读(查询)是一个好主意。例如,您可以发送数据库中的所有单个数据点,但在其他数据库中以现成的形式收集信息。不要犹豫复制数据!不要依赖单一的以数据库为中心的方法!这是IMHO快速查询的关键,也是所有BigData公司所做的事情。

我们的开源mORMot框架非常适合这样的过程。我目前正在进行一个项目,从通过Internet连接的数千个远程设备(实际上是警报面板)实时收集信息,然后将这些数据合并到服务器群中。我们使用SQLite3在每个节点上进行本地存储(最高可达几个GB),并将数据合并到MongoDB服务器中。所有的逻辑都是用高级Delphi对象编写的,框架完成了所有需要的管道(包括实时复制和回调)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32021232

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档