繁体   English   中英

Yii2,使用 MYSQL 表或 a.php 文件

[英]Yii2, using a MYSQL table or a .php file

我有数百万条文本要保存在数据库中,并通过我正在使用 Yii2 开发的应用程序显示。 单个文本可以从 30 到 500 个字不等,但它们都彼此相似,并且尊重只有几个字或值发生变化的轨道。 为了让你理解一个文本可以是

A) Goofy goes shopping on Wednesday at 2.30pm

或者

B) Pluto goes shopping on Thursday at 4pm

我打算参数化它们,而不是完全保存所有文本和单词,所以我可以创建一个曲目列表

T1 {name} goes shopping on {day} at {hour}

T2 blah blah {param}...

ETC...

我想我有 25-50 首曲目。

通过这样做,不再需要保存所有文本和单词,因此 A) 成为轨道 T1 的记录,其中 {name} = Goofy,{day} = Wednesday 和 {hour} = 2.30pm。

我打算有一个具有这种结构的参数表

text_id
parameter
value

应用程序中不会有文本搜索。 唯一可以搜索和过滤的是参数。

为了获得最佳性能,我应该将所有轨道保存在一个表中,或者将它们全部存储在一个key => value数组中的 a.php 文件中,并在应用程序执行期间加载它以显示每次文本(我只知道保存在数据库中的参数)?

记住 Yii 如何通过.php 文件处理包含 arrays 的消息翻译,我也想做同样的事情,但我请你确认。 如果是这样,最佳管理方式是什么? 将这个数组插入到.php model 里面? 或者创建另一个.php 文件以在必要的上下文中加载? 以及在哪里插入? 在供应商文件夹中?

谢谢

我不确定你问的是正确的问题(关于相对性能)。 我确实喜欢您对如何存储数据的思考,因为它让我想起了我是如何为第一个在线保险承保引擎之一设计调查问卷答案的存储的。

我强烈建议,鉴于您的大部分数据都将 go 放入参数表中,因此存储曲目数据的开销很小,因此您也将曲目数据存储在数据库中。 这将允许您在必要时直接在数据库中执行连接 - 您不可避免地找到这样做的理由。 然后,您可以尝试将它们一次读入数组或 object,否则您必须在单个操作/函数中多次查阅轨道表。

您的参数表将需要一个主键,否则您的应用程序将无法扩展,并且如果事情变得非常大,并且如果您的所有值以及参数都是已知的,那么您可能还需要考虑更进一步的抽象,您的参数表存储对参数和值的数字引用,即它有四列:unique_id、text_id、parameter_id、value_id,并且 parameter_id 和 value_id 是来自不同表的唯一值。 通过优化索引,这将为您带来巨大的性能提升。 即使某些值是自由文本,您也可以像我一样,通过额外的列(但需要额外的代码)来解决这个问题。

正如我所说,以上内容均来自设计系统的实际经验,该系统在几年内从无到有达到每天 100 万个报价,其中每个报价都需要保留 50 多个与您相似的参数/值对.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM