【问题标题】:Column Logic in SQL [closed]SQL中的列逻辑[关闭]
【发布时间】:2015-03-16 11:12:21
【问题描述】:

第一次发帖!我想在这里征求人们的意见。我正在收集过去 10 年的每日股票数据(因此大约 2500 行数据并不重要),但是我有超过 200 只股票(随着时间的推移可能会增长到 1000 只),每只股票大约有 30 个单独的字段。所以我们谈论的是一个表,它最初有 6000 列,一天增长到超过 30000 列,但更合适的可能是开始时只有 6000-10000 列。我认识到 SQL 数据库可能不是最好的方法,有许多“大数据”程序,如 mongodb、hadoop 等,但我从未使用过它们(只有 SQL)

任何人都可以阐明将其存储在 SQL 中的最佳方式。我知道每个表仅限于 1024 列,人们是否建议我将其分解为可能 10 多个单独的表?我对这对性能的影响感兴趣?

请注意,每只股票及其特征将与数据库中的所有其他股票互斥。

期待意见

【问题讨论】:

  • 什么? (>_ 这么多列,无论如何你不能只是过时使用 mysql 和其他数据库,因为它们现在运行良好,是的,你可以拥有 BigData 工具,但我认为你需要优化你的问题,想想把你的问题分成几部分,102​​4(或者不知道确切的值,但我知道它是什么,就足够了)列就足够了,但是你需要设计一个模式来保存数据。
  • 在定义良好的 SQL 模式中,列数不会增加,只会增加行数。如果您的列数以任何方式增加,您会遇到严重缺乏规范化问题,或者您根本没有使用关系 dbms
  • 您应该阅读一些有关关系数据库设计的内容。寻找数据库规范化 - 良好的开端将在这里:en.wikipedia.org/wiki/Database_normalization。但为了简化它:当您看到超过 10 列的 sql 表时,您的数据库模型可能存在缺陷。这不是一个硬值,有时确实需要更多的列,但我 100% 确定,您的问题不需要 30000 列表。请阅读 wiki 文章。
  • 首先确定您使用的是 MySQL 还是 SQL Server。 (然后删除无效标签。)
  • 这个问题是人们对关系数据模型缺乏理解而偏爱cooltrendy NoSQL工具的刻板印象。帮自己一个忙,学习关系数据模型。即使您不将它用于此应用程序,您也会发现已经有一个工具可以解决您将面临的 >90% 的问题。

标签: sql sql-server bigdata sql-server-2014


【解决方案1】:

我不明白你为什么有这么多不同的专栏。每个时间单位的每只股票应该有一行。我会设想一个有几十列的结构:

  • 库存标识符
  • 日期(或日期/时间)
  • 每只股票大约 30 个措施

您似乎希望将内容存储在应该在行中的列中。

这是一个大小合理的数据集,但它可能只有几百万行和几千兆字节。数据库支持更大的数据集。

【讨论】:

    【解决方案2】:

    这么多列是一种设计味道。

    但是,MySQL 最多只支持一个表中的 4096 列。摘自CREATE TABLE statement的文档:

    每个表有 4096 列的硬性限制,但给定表的有效最大值可能会更少,这取决于第 D.10.4 节“Limits on Table Column Count and Row Size” 中讨论的因素。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-31
      • 1970-01-01
      • 2013-03-15
      • 1970-01-01
      • 1970-01-01
      • 2019-05-11
      相关资源
      最近更新 更多