【问题标题】:Storing 100K different tables in DB在数据库中存储 100K 不同的表
【发布时间】:2016-03-19 08:24:18
【问题描述】:

我有大约 100K 组表,它们是 2,3 或 4 列。每个表大约有 5-10 行数据。但是每一列都有自己唯一的列名和数据类型。这是 100K 表列名中的 6 个示例,大约 10 行。

物业名称 |默认类型 |说明 |参考

类型 |物业 |说明 |参考

代码 |说明 |参考

价值 |参考

类型 |说明 |参考

号码 |说明 |参考

此时所有内容都存储在 100K html 文件中,但我想将它们存储在数据库中。我想知道是否有人对如何用尽可能少的表存储它们有任何建议。

当时正在考虑的解决方案是:

  1. 创建大约 100K 表(最后一个解决方案)
  2. 有三组表,4+1col、6+1col 和 8+1col,并使用奇数列作为列标题,偶数列作为值。每行都引用了一个外键,该外键指定此数据的位置。查询他们 bashed 列名和外键可以检索我的数据。

我想知道是否有人对此有更好的解决方案?

【问题讨论】:

  • 列集在 100k 个文件中真的是唯一的吗?无论哪种方式,这些数据都不是很结构化,因此将其存储在 100k rdbms 表中将非常疯狂。
  • 通过一些“相似”表结构示例对您存储的数据进行进一步解释,这将有助于确定您是否可以减少表的数量。
  • 不同列名的总数是多少,你看过吗?我的意思是,如果数据是完全非结构化的,如果它碰巧进入数据库,你能用它做些什么有用的事情?需要告诉我们更多关于有什么结构的信息
  • 能否请您展示一些带有数据的表格?我无法想象,这种方法是最好的解决方案......
  • 您可能希望将这些组合到较少数量的表中。如果您连接到具有这么多表的服务器,任何数据库管理工具都会在某个时候崩溃并死掉。考虑适当的数据规范化,还可以查看更多无模式选项,例如 Postgres 和 JSON 数据列。

标签: mysql sql-server database database-design architecture


【解决方案1】:

您可以将html文件转换为CSV为stated here并将数据导入mysql数据库。

【讨论】:

    【解决方案2】:

    100K 表既是糟糕的设计,也可能是糟糕的性能。由于每个表是使用 1-3 个文件实现的,因此您依赖于操作系统的效率来进行文件查找。此外,MySQL 表缓存不是为这样的大量数据而设计的。

    另一方面,MySQL 非常乐意处理一百万行的表。或者少量的大表。

    一个 CSV 文件与另一个文件有何区别?这可能是它进入的表格中的另一个“列”吗?然后让所有具有 相同 结构的文件(例如,Value + Ref)进入一个包含这些列再加一个列的表中?

    考虑以这种方式进行加载:

    1. CREATE TABLE
    2. LOAD DATA 将一个文件放入该表中
    3. 在 SQL 中对其进行操作(如有必要)并将其复制到最终表中 (INSERT ... SELECT ...)

    然后对每个文件重复。

    对于 100K 文件,您可能想要编写一个程序来创建执行 100K 步骤的代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-01
      • 1970-01-01
      • 2014-04-06
      • 2014-02-02
      • 2017-02-10
      相关资源
      最近更新 更多