1

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

  • DB(用于获取海量数据,例如 PRODUCTS、CATEGORIES、ORDERS 等)
  • TXT(使用 YAML - 获取分析数据和一些选项)

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

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

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

我的 txt 文件看起来像(YAML):

 product_id: 1281
 quantity_sold: 12 #item(s)
 hit: 1105
 hit_avarage: 92 #quantity_sold/hit
 vote: 2
 ...

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

4

4 回答 4

2

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

请务必查看基于文档的数据库,但您不一定必须使用关系数据库。事实上,在查看 YAML 文件的示例时,我认为使用“无 SQL ”数据库会是更好的选择。

干杯。

于 2011-02-03T15:46:36.020 回答
1

喜欢YAML,并且认为它非常适合少量数据,但是您提到的维度最好使用数据库来处理。它速度更快,并且可以对数据进行索引 - 在基于文件的场景中,您必须遍历整个文件才能找到某些内容。

于 2011-02-03T15:42:16.777 回答
1

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

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

不能说任何关于性能的事情。从技术上讲,读取文件数据与让数据库读取磁盘扇区一样慢,并且 YAML 解析和列拆分之间的差异可能并不显着。你必须测试一下。

于 2011-02-03T15:44:58.747 回答
1

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

序列化是将内存结构转换为可以写入、可能传输和读取到内存结构中的格式的过程。

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

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

YAML 不提供处理上述问题的工具和集成环境,如果您想将其用作主体数据存储,则需要将上述所有挑战与使用 YAML 作为主体数据管理系统的特定场景隔离开来(或迟早在一定程度上重新发明轮子)。

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

于 2011-02-03T16:48:13.297 回答