从 mat 文件而不是从数据库中读取数据的好处

Posted

技术标签:

【中文标题】从 mat 文件而不是从数据库中读取数据的好处【英文标题】:Benefit of reading data off a mat file as opposed from the database 【发布时间】:2012-01-20 12:37:32 【问题描述】:

我看到一些代码从 mat 文件中读取大数据,而不是在数据库上进行查询。与使用数据库相比,这样做有什么好处?是否可以轻松地将 mat 文件内容移动到数据库中,反之亦然?

【问题讨论】:

【参考方案1】:

从 mat 文件中读取数据,也是一个“数据库”,您可以在其中从文件中读取数据。 最终,您将不得不自己实现查询,并处理许多其他问题。 此外,它不是一个可扩展的解决方案,这意味着对于大量数据,它不会很好地工作。 当然,如果你的数据量很少,而且只有基本的查询,那么大惊小怪的搭建数据库,使用 SQL 是不值得的。

关于你的第二个问题,这真的取决于你那里的数据。

【讨论】:

@mugetsu:我认为对于足够小的或有序的数据集,使用 mat 文件进行查询的开销要低得多。 @Jonas 我正在处理包含图像的大型 mat 文件,如果您听说过 VOC 图像或 Caltech101 图像,那就是我正在使用的。表结构非常简单,但可能有数十万行。那么垫子会更好吗? @mugetsu:如果我没记错的话,Caltech101 集只有几千张图像和少量注释。在这里,您可以将注释加载到内存中,并使用它们来识别要加载的图像。尤其是有了新的matIO接口,不做数据库可能会容易很多。但是,如果您还需要添加更多条目,如果注释由于条目太多或注释太多而无法轻松存储在内存中的变量中,那么数据库非常有用。【参考方案2】:

我同意安德烈的观点。这取决于数据以及您想用它做什么。我在 Matlab 中创建了一个小程序,它查询一个相对较小的 .mat 数据库,但随着数据库和用户的增长,性能一直在下降。

鉴于此,我们决定使用 mysql 数据库。我创建了一个与数据库对话的小型 Java 应用程序,并将其导入 Matlab 以在 Matlab 和 MySQL 之间移动数据。但是我必须为我的数据创建特定的查询。如果有人能给我带来更好的解决方案,我将不胜感激。

也许生成一个通用脚本来在 Matlab 和 SQL 数据库之间移动 .mat 数据之间的数据并不是一个坏主意。将数据存储在结构中并使用它来创建表。

如果您想通过电子邮件进一步讨论此类问题,我很乐意。也许我们可以互相学习一两件事。

【讨论】:

只是一个疯狂的猜测,尝试将 mat 转换为 XML,然后使用一些标准的数据库工具将其导入。例如,Microsoft Access。 我要试试这个!我有一些大型 .MAT 文件,我正在将它们转换为 SQLite DB,这很痛苦,因为我不是真正的 MATLAB 人,所以我不得不在 Python 中构建一个解析器来处理许多嵌套结构(该死的 MATLAB! )。我用 Python 解析它然后通过 pandas 保存到数据库的任何方式。

以上是关于从 mat 文件而不是从数据库中读取数据的好处的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法在 Perl 中读取 MATLAB .mat 文件?

Matlab使用键值数据读取和分析 MAT 文件

Matlab API 从 C++ 读取 .mat 文件,使用 STL 容器

MNE读取SEED数据集mat文件

在 Python 中读取 .mat 文件

matlab读取.mat文件中的指定数据