我目前正在为一家大公司开发一个使用PHP / MySQL的电子商务软件。我有两种方法可以获得一些特定的数据:
例如,当用户转到产品详细信息页面时,我需要获取这些TXT文件:
我想以这种方式使用,因为人类可以轻松读取数据,并且可以在编程语言之间移植。另外,如果我使用DB,我需要连接几个表。但是这些文件一起得到了它们。
我的txt文件看起来像(YAML):
product_id: 1281
quantity_sold: 12 #item(s)
hit: 1105
hit_avarage: 92 #quantity_sold/hit
vote: 2
...
但是,我仍然不确定速度和性能。使用TXT文件是个好主意?我真的应该用这种方式而不是DB吗?
答案 0 :(得分:2)
由于您无法部分包含和解析YAML文件,因此您必须整体解析该文件,这意味着您将获得令人难以置信的性能影响。您可以将其与从数据库中选择所有行进行比较,然后循环遍历它们以找到您要查找的行,而不是仅键入WHERE条件。所以,是的,数据库可以更快地完成你的要求。
请查看基于文档的数据库,但您不一定 使用关系数据库。事实上,在查看YAML文件的示例时,我认为使用“no SQL”数据库将是更好的选择。
干杯。
答案 1 :(得分:1)
我喜欢 YAML并认为它适用于少量数据,但您提到的维度更适合使用数据库。它更快,数据可以编入索引 - 在基于文件的场景中,你必须遍历整个文件才能找到一些东西。
答案 2 :(得分:1)
使用YAML方法。数据结构表明它们等同于固定数据/配置设置。如果您无法合理地在数据库中进行计算,那么请不要尝试。
然而,您可以将固定数据从YAML转换为CSV,并将其在数据库中导入临时表。当且仅当计算所有内容时才有可行。
对性能无能为力。技术上读取文件数据与使数据库读取磁盘扇区一样慢,并且YAML解析和列拆分之间的差异可能不大。你必须测试它。
答案 3 :(得分:1)
YAML是'人类可读的数据序列化格式'。
序列化是将内存结构转换为可以写入,可能传输和读入内存结构的格式的过程。
数据库管理系统是帮助控制从创建到处理的数据管理的程序,包括
YAML 不提供处理上述内容的工具和集成环境,如果您想将其用作主要数据存储,则需要隔离所有上述挑战远离这种特殊情况,即使用YAML作为主要数据管理系统(或在某种程度上,迟早重新发明轮子)。
我认为没有“大公司的电子商务系统”会牺牲上面列出的任何人类可读性特征。