我应该使用什么数据库?

我的vb.net代码从1901年的每个季度计算公司股票价格的增长率,并将其存储在数据表中。 这需要一段时间(10-15分钟)。 我想在计算好数据表后将信息保存起来,这样我就不用每次运行程序都重新计算过去的增长率。 当我打开我的程序时,我希望数据表包含任何已经计算好的增长率,所以我只需要计算新增季度的增长率。

我应该将我的数据表存储在某种数据库中,还是有另一种方法来做到这一点? 我的数据表是相当大的。 它目前有450列(从1901年到现在每季度一个),可以有成千上万的行(每个公司一个)。 这对于Microsoft Access来说太大了吗? 微软的Excel会成为一个select吗?

谢谢!

首先,目前还不清楚你是否真的需要一个数据库。 如果你不需要诸如并发访问,客户机/服务器操作,ACID事务等等,你可能只需要使用文件系统来实现你的caching。

如果你总结你确实需要一个DBMS,那么有很多好的select,包括免费的,如:PostgreSQL,MS SQL Server Express,Oracle Express,MySQL,Firebird,SQLite等…或商业,如:Oracle,MS SQL Server, IBM DB2,Sybase等…

我build议你使你的数据模型灵活,所以你不必为每个新的季度添加新的列:

在这里输入图像说明

这个模型也非常适合集群 (如果你select的DBMS支持它的话),所以属于同一个公司的计算在物理上紧密地存储在数据库中,在查询期间可能降低I / O。 或者,您可以select按年/季度分组。

我会将数据库devise更改为:

  • ID
  • 25美分硬币
  • 公司名
  • 值1
  • 值2
  • 值3

作为你的列,并开始将其保存为一个垂直表。

然后,你没有像你想象的那么多的数据,所以我会推荐一些免费的东西,比如mysql,甚至nosql,因为除了存储和检索数据之外,你没有做任何事情。 任何基于文本的文件:你使用的xml,csv,.xls将会变慢,因为整个文件需要被加载到内存中,以便能够parsing它。

Excel对表单的大小有一定的限制,你不应该把它作为一个明确的“数据库”,用于任何你希望移植到不同结构的东西。 这对电子表格和会计一般来说是有好处的,但是您不应该将其用于计算中所理解的绝对真实数据库。 另外,Excel对可以包含的logging数量也有限制: 截至2003年,工作表大小为65,536行×256列

访问可能会为此工作,但随着您正在查看的logging数量,您可能会开始遇到文件大小,减速,只是一般的东西这样的问题。 在每次开始logging超过3000条logging的情况下,最好使用一个大的RDBM或类似的东西; Oracle,MySQL,SQL Server等

我认为主要的问题可能是你devise数据库的方式。 每个季度的专栏听起来都不是很好的做法,特别是当您每季度都必须更改数据库模式时。

你可以从一个MS Access数据库开始,然后如果你有任何性能问题,迁移到SQL Server数据库或其他东西。

再次,我认为你应该仔细看看你的数据库devise。

我有很多股票数据的经验。 经过testing了很多方法,我认为对于一个简单的免费方法,你应该尝试SQL Server。 你使用的数据量对于Access来说太多了(我想这不是你想要的唯一的计算)。 您可以免费使用SQL Server Express 。

对于这个devise,我会在名为HistoricalGrowthRate的SQL Server中创build一个数据库。 我会为每个股票代码提供一个表格,并将数据存储在那里。

实现这一目标的一种方法是build立一个单独的数据库,其中包含您希望遵循的所有符号(如果您没有,可以使用纳斯达克的CompanyList.csv)。 遍历该表中的每个符号并在HistoricalGrowthRate中运行一个创build表。 当你想填充值,只需循环再插入你的值。 您也可以从Access中导出,这对您来说会更快。

当您呼叫信息并提供访问信息的简单方法时,这将减less负载。 因此,如果您希望AAPL的历史增长率,只需将连接string设置为HistoricalGrowthRate数据库,参考表AAPL并提取值。