我应该迁移本地JSON数据库到MariaDB


Should I migrate local JSON database to MariaDB?

虚构故事:

我有一个汽车网站包含超过20万+汽车列表在美国各地。我的数据有两个来源,carseat和CarsPro每晚都会更新。这两个源都包含大约100,000个JSON格式的详细清单。这两个提要的文件大小约为8GB,我计划在不久的将来合并更多的二手车源。

当前JSON数据包含从汽车搜索到汽车购买显示汽车信息所需的所有内容,但是,JSON DB存储在本地,我使用PHP的file_get_contents()为每个清单获取适当的元数据。退回200辆车大约需要8到12秒,这还不错,但我知道还有改进的余地。

我的问题:

将我的数据从本地化的JSON文件迁移到MariaDB 10.1是一个最佳实践的举动?这是未来可扩展的替代方案吗?为了提高速度和搜索能力,我的堆栈应该是什么样的?

注意:

  • Forge会在你启动的实例上安装MariaDB。
  • 8GB的文件被"car make"分成了20多个不同的文件。单个文件不得大于400MB。

目前使用

  • Laravel 5.2
  • 建立
  • PHP 5.6.10
  • 来自AWS的服务器

将我的数据从本地化的JSON文件迁移到MariaDB 10.1是一个最佳实践举措?这是未来可扩展的替代方案吗?我的堆栈应该是什么样子来提高速度和提高搜索能力吗?

是的。从长远来看,数据库的全部目的就是使这样的数据的存储和使用更容易。

每次在PHP中加载JSON文件时,PHP都必须解析数据,我非常怀疑由8GB数据组成的200,000个清单作为从文件系统加载到PHP内存中的文件是否能够正常工作。当你试图加载文件时,PHP很可能会死(也就是抛出一个错误)。在PHP中对底层状态下的数据进行排序和操作的效率更低。

将JSON数据存储在某种类型的数据库中,如mariadb, MySQL, MongoDB等,这是处理此类问题的唯一实用和最佳实践方法。

重复加载本地JSON文件到PHP的主要原因是为了进行小型测试和开发想法。在实际层面上,这是低效的,但是当你处于开发的早期阶段,并且不想处理将这样一个大的JSON文件导入到实际数据库的过程时,从开发人员的角度来看,一个小的数据样本文件可以帮助你理清基本的概念和想法。

但是完全没有一个"最佳实践"会说从文件系统中读取的文件是"最佳实践";老实说,这是个很糟糕的主意。

您将需要Apache Solr,它将改进搜索和处理文本数据。

好的一点是,您将能够使用file_get_contents来处理其查询,其查询结果默认为JSON格式。