【问题标题】:Reading from a file or a big database从文件或大型数据库中读取
【发布时间】:2013-08-18 19:29:23
【问题描述】:

我有一个包含 100000 种产品的列表。我希望存储产品的规格,不要搜索这些规格。

我能想到的两种方法是

  1. 将规范作为键值对存储在 mysql 数据库中

  2. 将值存储在文件中,然后从那里读取。

考虑到我不打算搜索那些键值对,上述两种方法中的哪一种会节省空间和读取效率。

将不胜感激任何其他有效解决问题的方法。

谢谢!

【问题讨论】:

  • 有人可以编辑缩进的问题吗?我在手机上。
  • 您会访问该数据以进行读取吗?如果是,读取访问策略是什么?
  • 最佳解决方案取决于您的用例,但合适的替代方案可能是专门的key-value store
  • 对于读取,文件将根据产品 ID 命名,并将在 SOLR 中建立索引
  • 正如我所说的用例只是读取文件并在网页上转储

标签: mysql database file


【解决方案1】:

这取决于它的用途,但总的来说,为什么不将两者结合起来呢? ;p 使用存储在文件中的数据库 SQLite,您可以像使用大多数编程语言中的任何其他数据库一样使用它,但您不必费心配置常规数据库系统;

【讨论】:

    【解决方案2】:

    如果您需要做的唯一事情是读取文件并将其转储到网页,那么最有效的做法是将 HTML 网页内容存储在变量中在您的应用程序中,在您加载应用程序时从文件中填充一次,并根据需要将其抽出。这样一来,您无需进行任何处理或渲染、任何 I/O 或除显示内容之外的任何操作。

    但是,您很可能希望在某个阶段对数据进行其他操作,例如更改或更新数据或插入值或删除数据,并为此您需要以允许您编辑它的方式存储它。这就是其他个用例发挥作用的地方,除非它真的、真的很重要,否则你不能真正决定只有一个用例很重要。

    【讨论】:

    • 你认为这个模型是可扩展的吗?我必须时不时地添加具有其功能的新产品。此外,这将需要大量内存。
    • 这是您需要考虑的另一个用例,这是我回答后半部分的重点。如果您经常阅读并且很少更改,那么我建议您使用缓冲数据库表,例如带有 InnoDB 的 MySQL(尤其是如果您已经将 MySQL 用于其他事情);它会自动使用 RAM 缓存不经常更改的数据。另一方面,如果您将数据保存到文件中,则需要使用额外的技术才能从 RAM 缓存中受益,从而提高多读少写性能。
    猜你喜欢
    • 1970-01-01
    • 2018-07-06
    • 1970-01-01
    • 1970-01-01
    • 2012-04-20
    • 2017-01-03
    • 1970-01-01
    • 2015-12-19
    • 1970-01-01
    相关资源
    最近更新 更多