在文件系统和数据库之间写入性能

时间:2017-08-25 13:59:58

标签: database performance file-io

我有一个非常简单的数据采集程序。数据经常出现(大约5200赫兹)。一个数据大约为24 kB,因此大约为122 MB / s。

仅存储此数据会更有效吗?将其保存在原始二进制文件中,还是使用数据库?如果数据库,那么? SQLite,或者其他一些?

当然,数据库更具吸引力,因为在将其保存到文件时,我必须通过分隔符(数据可以具有不同的大小)将它们分开,而且使用数据库处理数据也会更容易。我不确定与文件相比的数据库性能,但是我找不到任何关于它的具体信息。

[编辑] 我使用基于Linux的操作系统和SSD磁盘,支持写入高达350 MB / s。将始终以该频率获取数据(每天使用小的服务中断将数据传输到另一台机器)

1 个答案:

答案 0 :(得分:0)

如果您正在查找特定文件,file system非常有用,因为操作系统会维护某种索引。但是,the contents of a txt file won't be indexed,这是数据库的主要优点之一。

另一点是understanding the relational model意味着您如何设计数据库,因此不需要反复重复数据。

此外understanding types也很重要。如果你有一个txt文件,你需要解析数字,日期等。

从性能的角度来看,我会说DB are slower to start(打开文件通常比打开与​​数据库的连接更快)。但是,一旦它们打开,我可以保证DB比XML或您想要使用的任何文件更快。顺便说一句,这是主purpose of a database: manage huge amount of data, filesystems are made for storing files

DB is that they usually can handle multi-threading and concurrency个问题的最后几点,一个文件不能,但最后但并非最不重要in a database you cannot delete a file by mistake并且数据丢失

所以我的选择将是一个数据库,而且我希望能为您提供一些信息,您可以决定什么是最适合您的

- 更新 -

由于您现在的需求更加具体,我试图深入挖掘:我找到了一些可能对您有用的解决方案,但我没有任何经验可以为您提供个人建议:

  • SharedHashFile:SharedHashFile是一个轻量级的NoSQL密钥值存储/哈希表,一个零拷贝的IPC队列,&用C语言编写的多路复用IPC日志库。没有服务器进程。数据直接从共享内存或SSD读取和写入; SharedHashFile和应用程序之间没有使用套接字。用于C,C ++和&的API的NodeJS。但是要留意问题,因为这个项目似乎不再在Github上维护了
  • WhiteDB另一个声称速度非常快的NoSql数据库,请访问其网站的速度部分进行咨询
  • Symas一个非常快速,内存效率高的数据库

只需看看它们,如果你曾经使用它们,只需在这里提供社区反馈