在节点 MySQL 与 JSON 上

Posted

技术标签:

【中文标题】在节点 MySQL 与 JSON 上【英文标题】:On Node MySQL vs JSON 【发布时间】:2020-02-08 16:23:38 【问题描述】:

我目前正在使用 mysql,我在哪里存储 JSON 信息,我将从 MySQL 中获取它们并在我的应用程序中解析它们。我想摆脱 MySQL,但首先我想知道这样做是否明智?

如果我将数据存储到包含 .json 文件的数据文件夹中并且这些文件包含我需要的数据,这是否有效?每个想要在地图上跟踪自己的用户都会有我的应用程序的坐标数据。这会引起任何问题吗?我不需要“查询”,但是像 50K 行这样的大数据呢?同样的数量也将在 MySQL 中。金额不变,但是从“从sql读取到从json文件读取”会不会出现问题

【问题讨论】:

【参考方案1】:

很难一次性回答所有这些问题,但我会解决其中的一些问题:

有专门的 NoSQL 数据库非常擅长您所说的数据存储类型:MongoDB、CouchDB 等。这些可能值得一试。他们非常擅长处理 JSON 数据。在 Node.js 中查询和解析非常简单。

可以将 JSON 存储在 MySQL(或其他 RDMS 系统)中,我已经在几个项目中完成了它并取得了不错的效果。从 MySQL 5.7.8 开始,有一个专用的JSON type。查询实际上可以很好地工作,我知道我已经非常快地查询了包含数千万个 JSON 条目的表。

请务必考虑备份和还原方案,即在数据丢失时会发生什么。使用 MySQL 或 NoSQL 数据库将为您简化这一过程。无论哪种方式,请确保您已涵盖此内容!

我不会将 50K 行称为大数据!我处理数千万行的数据库..这仍然不能称为大数据。

我可能不建议将数据存储在文件中。我以前在远程信息处理领域工作过,我们在关系数据库中存储了数百万个 JSON blob,几乎没有问题。后来我们计划为这些迁移到 NoSQL 数据库,但关系数据库运行得非常好,特别是因为您可以采用混合方法使用关系查询并在结果中包含 JSON 数据(由客户端解析)。

您可能不需要查询能力,但获取例如“给我所有用户 ID 100 的 JSON”非常有用。 RDBMS 或 NoSQL 系统可以让这一切变得非常简单。

【讨论】:

Node.js 在处理行数接近 200K 或类似的 JSON 文件时是否有问题? 我不这么认为,这并不是真正的数据。您最终可能会使用相当大量的内存,但在现代机器上它不会那么繁重。我建议创建一些模拟测试数据并测量这需要多长时间。我不希望它太多(当然取决于行有多大!)

以上是关于在节点 MySQL 与 JSON 上的主要内容,如果未能解决你的问题,请参考以下文章

使用节点 mysql2 获取 JSON 键作为列

Mysql与索引有关的树的概念

在节点中从文件与数据库中提供内容

mySQL JSON 文档存储方法,用于将数据插入节点 3 深

使用“ndb --initial”会导致 MySQL 集群上的数据丢失?

如何将 JSON 数据从节点 js 脚本发送到不同服务器上的 HTML 文件