【发布时间】:2017-12-02 11:04:47
【问题描述】:
我正在处理的应用程序需要每小时两次获取最大约 10mb 的数据集。我们使用该数据集在网站上显示分页结果,也应该可以通过对象属性之一进行简单搜索。
目前我们正在考虑两种不同的实现方式
1.) 将 json 数据集存储在数据库中或文件系统中的文件中,读取并循环显示结果。
2.) 将 json 数据集存储在关系 MySQL 表中,并在需要显示它们时查询结果并循环。
如我所说,必须每小时多次更换/刷新结果。
这两种方式都有缺点。我正在尝试选择一种总体上不那么邪恶的好方法。在内存中读取 10 MB 并不是很多,另一方面,在我看来,每小时重写几次表可能会产生冲突。
我对 1.) 的担忧是,如果我们一直在内存中读取 10mb,那么应用程序的安全性如何?如果多个用户在某个时间点这样做会发生什么,这是需要担心的事情还是 PHP 能够在后台处理这个问题?
你认为这个用例最适合什么?
谢谢!
【问题讨论】:
-
你有理由使用 PHP 吗?您的环境是否有任何长期运行的缓存服务,例如
memcached?您的代码是否有权创建 RAM 磁盘? -
该网站基于 PHP/WordPress,我们需要坚持下去。 Memcached是肯定可以安装的,你觉得有用吗?
-
此时在我的脑海中,就像安装 Elastic search 与您的数据库连接一样,具有高效的缓存和内存实现。另一种方法是在内存中使用。但是您是否尝试过 maria DB,以关系方式存储您的数据,但以 json 方式存储一些数据。新的 mariaDB 支持 JSON 类数据及其操作。而且我认为 wordpress 也使用 json 类型的数据来存储一些数据。那么,为什么不在 maria DB 中拥有数据库。
-
如果不知道显示和更新这个大型数据集所需的访问模式,很难给出好的建议。 SQL 的目的(MySQL 和其他此类服务器)是允许程序操作大型数据集,而无需将整个数据放入 RAM。如果可能,请edit您的问题告诉我们更多信息。另外,请告诉我们您的服务器上的 php 背后是什么。是阿帕奇吗? nginx?您可以控制服务器配置吗?
标签: php mysql arrays json memory