我目前正在为一家大公司开发使用PHP / MySQL的电子商务软件。我可以通过以下两种方法获取特定数据:

  • 数据库(用于获取海量数据,例如产品,类别,订单等)
  • TXT(使用YAML-用于获取分析数据和某些选项)

    例如,当用户转到产品详细信息页面时,我需要获取这些TXT文件:

    • 产品摘要文件(product_hit,quantity_sold等)-最高90KB
    • 语言和设置文件(例如company_name,模板的翻译)-最高300KB
    • 可能还有一个文件(我不知道是不是)-假设有100KB。

      我想用这种方式,因为数据很容易被人类读取,并且可以在编程语言之间进行移植。此外,如果使用数据库,则需要连接几个表。但是这些文件会在一起。

      我的txt文件看起来像(YAML): 通用标签

      但是,我仍然不确定速度和性能。使用TXT文件是个好主意吗?我真的应该用这种方式代替DB吗?

有帮助吗?

解决方案

由于不能部分包含和解析YAML文件,因此必须将文件整体解析,这意味着您将获得令人难以置信的性能提升。您可以将其与从数据库中选择所有行进行比较,然后遍历它们以查找所需的行,而不仅仅是键入WHERE条件。因此,是的,数据库可以更快地完成您的要求。

尽管请一定要看一看基于文档的数据库,但不一定要使用关系数据库。实际上,在查看YAML文件的示例时,我认为使用的是“ 没有SQL ”数据库将是更好的选择。

干杯。

其他提示

喜欢 YAML,并认为它对于少量数据非常有用,但是您提到的维度最好使用数据库来处理。它速度更快,并且可以为数据建立索引-在基于文件的方案中,您将不得不遍历整个文件才能找到内容。

使用YAML方法。数据结构表明它们等同于固定数据/配置设置。而且,如果您不能合理地在数据库中进行计算,请不要尝试。

不过,您可以将固定数据从YAML转换为CSV,然后将其导入数据库中的临时表中。当且仅当计算一切都可行时。

不能说任何有关性能的信息。从技术上讲,读取文件数据的速度与数据库读取磁盘扇区的速度一样慢,并且YAML解析和列拆分之间的差异可能并不重要。您必须对此进行测试。

YAML是“人类可读的数据序列化格式”。

串行化是将内存结构转换为可以写入,传输和读取到内存结构的格式的过程。

数据库管理系统是可帮助控制从创建到处理的数据管理的程序,其中包括

  • 安全性
  • 可扩展性
  • 并发
  • 数据完整性(原子性,一致性,隔离性和持久性)
  • 性能
  • 可用性

    YAML不会提供解决上述问题的工具和集成环境,如果您要将其用作主要数据存储,则需要隔离所有全部上述挑战摆脱了将YAML用作主要数据管理系统的特定场景(或早晚在某种程度上重新发明了轮子)。

    我想,没有哪个“大公司电子商务系统”愿意为了人类可读性而牺牲上面列出的任何功能。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top