4

我需要处理大量的数字/文本数据,比如总共 100 亿个条目,理论上可以组织为 1000 个 10000*1000 个表。大多数计算每次都需要对一小部分数据(特定的行或列)执行,这样我就不需要一次所有的数据。

因此,我有兴趣将数据存储在某种数据库中,这样我就可以轻松地搜索数据库,检索符合定义条件的多行/列,进行一些计算并更新数据库。数据库应该可以通过 Python 和 Matlab 访问,我主要使用 Python 创建原始数据并将其放入数据库和 Matlab 进行数据处理。

整个项目在 Windows 7 上运行。我可以为此目的使用的最好且主要是最简单的数据库是什么?我完全没有数据库方面的经验。

4

3 回答 3

7

我会推荐SQLite。默认的 Python 安装已经有它的绑定。

要使用安装适当的SQLite Windows安装程序。

要创建数据库,您可以执行以下操作(来自 sqlite3 文档):

import sqlite3

conn = sqlite3.connect('example.db')

c = conn.cursor()

# Create table
c.execute('''CREATE TABLE stocks
             (date text, trans text, symbol text, qty real, price real)''')

# Insert a row of data
c.execute("INSERT INTO stocks VALUES ('2006-01-05','BUY','RHAT',100,35.14)")

# Save (commit) the changes
conn.commit()

# We can also close the cursor if we are done with it
c.close() 

要导入 Matlab,您可以使用mksqlite

有关更多信息,您可能需要结帐: http: //labrosa.ee.columbia.edu/millionsong/pages/sqlite-interfaces-python-and-matlab

于 2012-06-15T21:32:33.520 回答
3

IMO 只需将文件系统与您可以在 MATLAB 和 Python 中读/写的文件格式一起使用。数据库通常意味着关系模型(不包括 No-SQL 模型),这只会增加这里的复杂性。

scipy.io.loadmat由于更倾向于 MATLAB,您可以使用/scipy.io.savemat函数直接在 SciPy 中操作 MAT 文件。这是用于存储数据的原生 MATLAB 格式,带有save/load函数。

除非您确实需要数据库,否则请忽略我的回答:)

于 2012-06-15T21:41:02.380 回答
2

SQLite 很容易设置,但我对 MySQL 没有任何问题。有可用的连接器,并且可以无缝地工作。

http://www.mathworks.com/matlabcentral/fileexchange/8663-mysql-database-connector

我正在运行一个类似的项目,我使用 Matlab 来获取和分析,并使用 Ruby on Rails 发布大量股票市场数据。使用非常大的数据集,这个解决方案似乎运作良好。从历史上看,对于大型数据集,SQLite3 的性能不如 MySQL 或 PostgreSQL,这就是我建议切换的原因。

于 2012-06-16T20:06:59.780 回答