【发布时间】:2011-03-14 02:12:38
【问题描述】:
我正在构建一个 C# 桌面应用程序,它从连接到多个传感器(传感器/设备)的 USB 中获取数据,例如温度、尺寸、湿度等。每个设备/传感器以非常高的采样率(>1000/s)同时将数据实时发送到计算机,并插入到相应的数据库表中(例如存储到温度表中的温度数据等)。
哪种数据库适合这样的应用程序,最好是开源的? MySQL? SQLite? 另外我需要对我的数据库进行什么样的配置以避免在高速数据插入期间丢失数据?
【问题讨论】:
-
您需要问自己的第一个问题是:您真的需要存储所有这些数据吗?每秒有超过 1000 个样本(大多数数据库可以轻松处理给定快速机器),我想知道是否可以选择聚合值。
-
不幸的是,我需要实时存储所有数据。我担心有多个设备和多个数据线程同时插入到数据库中,我不确定是否有任何数据库可以处理...
-
这取决于数据库,但任何适当的数据库都支持延迟写入。以 PostgreSQL 为例:postgresql.org/docs/current/static/… 只要您的写入被缓冲,您只需担心磁盘的原始吞吐量。
-
为了证明我的观点,我刚刚在我的工作站上使用 PostgreSQL 进行了测试。插入 1,000,000 行需要 9.851 秒。所以平均每秒超过 100,000 行。