【发布时间】:2015-03-16 11:12:21
【问题描述】:
第一次发帖!我想在这里征求人们的意见。我正在收集过去 10 年的每日股票数据(因此大约 2500 行数据并不重要),但是我有超过 200 只股票(随着时间的推移可能会增长到 1000 只),每只股票大约有 30 个单独的字段。所以我们谈论的是一个表,它最初有 6000 列,一天增长到超过 30000 列,但更合适的可能是开始时只有 6000-10000 列。我认识到 SQL 数据库可能不是最好的方法,有许多“大数据”程序,如 mongodb、hadoop 等,但我从未使用过它们(只有 SQL)
任何人都可以阐明将其存储在 SQL 中的最佳方式。我知道每个表仅限于 1024 列,人们是否建议我将其分解为可能 10 多个单独的表?我对这对性能的影响感兴趣?
请注意,每只股票及其特征将与数据库中的所有其他股票互斥。
期待意见
【问题讨论】:
-
什么? (>_ 这么多列,无论如何你不能只是过时使用 mysql 和其他数据库,因为它们现在运行良好,是的,你可以拥有 BigData 工具,但我认为你需要优化你的问题,想想把你的问题分成几部分,1024(或者不知道确切的值,但我知道它是什么,就足够了)列就足够了,但是你需要设计一个模式来保存数据。
-
在定义良好的 SQL 模式中,列数不会增加,只会增加行数。如果您的列数以任何方式增加,您会遇到严重缺乏规范化问题,或者您根本没有使用关系 dbms
-
您应该阅读一些有关关系数据库设计的内容。寻找数据库规范化 - 良好的开端将在这里:en.wikipedia.org/wiki/Database_normalization。但为了简化它:当您看到超过 10 列的 sql 表时,您的数据库模型可能存在缺陷。这不是一个硬值,有时确实需要更多的列,但我 100% 确定,您的问题不需要 30000 列表。请阅读 wiki 文章。
-
首先确定您使用的是 MySQL 还是 SQL Server。 (然后删除无效标签。)
-
这个问题是人们对关系数据模型缺乏理解而偏爱cool和trendy NoSQL工具的刻板印象。帮自己一个忙,学习关系数据模型。即使您不将它用于此应用程序,您也会发现已经有一个工具可以解决您将面临的 >90% 的问题。
标签: sql sql-server bigdata sql-server-2014