首页 > 解决方案 > 选择存储 JSON 数据的数据库

问题描述

我正在构建一个利用 Spotify API 的原型应用程序。 https://developer.spotify.com/discover/

我正在研究选择数据库架构。由于这是一个原型,我想保持简单,但仍然有未来发展的道路。

如果您使用过 Spotify API 并存储检索到的数据,我很乐意收到您的来信。

此外,我已经阅读了许多关于数据库之间选择的帖子,并根据阅读它们编辑了这个问题。我再问一次,因为有些帖子已经有好几年了,而且情况发生了变化。

我的问题是:我在这篇文章中提出的选项有哪些优点和缺点,还有哪些其他选项可能更适合这种类型的应用程序?

概述 该应用程序将存储从 Spotify 检索到的数据。Spotify API 以 JSON 格式返回数据。

该应用程序将存储数百个甚至数千个用户的用户数据。

播放列表和曲目是主要数据。播放列表最多可包含 100 个或更多曲目。每个用户都将存储多个播放列表/曲目。一年后,用户可能拥有 50 到 100 个播放列表,每个播放列表包含多个曲目。

存储的播放列表将在应用程序/网络中显示给用户,并用于创建其他播放列表。曲目将每天添加数据,例如日期、排名。

会有交易,例如播放列表被锁定以防止进一步编辑、关闭时段、关闭排名等。

Spotify 类别大纲

用户:电子邮件、产品、显示名称、生日、图片 https://developer.spotify.com/documentation/web-api/reference/users-profile/get-users-profile/

音乐元数据:专辑、艺术家和曲目

播放列表:获取播放列表曲目并存储它们。您可以在此处查看 JSON 数据的样子: https ://developer.spotify.com/documentation/web-api/reference/playlists/get-playlists-tracks/

数据库选项

选项 A 将 Spotify JSON 数据存储在关系数据库中,例如 mySQL 或 MariaDB。

mySQL 和 MariaDB 都支持 JSON 数据类型,尽管它们的管理方式略有不同。根据 MariaDB KB:在 MySQL 中,JSON 是一个对象,并根据 json 值进行比较。在 MariaDB 中,JSON 字符串是普通字符串并作为字符串进行比较。

首先,将JSON存储在关系数据库中的优点/缺点是什么,例如可以充分查询它吗?一个示例查询可能是“按排名列出用户的播放列表”。其次,mySQL 和 MariaDB 对 JSON 的管理有哪些广告/缺点?

对于关系数据库,我还应该注意哪些其他问题?

选项 B Spotify 使用 Cassandra 数据库来提供 Spotify 服务。虽然这是一个原型应用程序,但是否值得考虑 Cassandra 或其他一些 Not Only SQL 类型的数据库?Cassandra 导入 JSON 数据的效果如何?是否有现成的开发人员了解如何使用 Cassandra?

选项 C、D、E……</p>

对于此类应用程序的数据结构,可以考虑哪些其他数据库选项?

提前致谢!

标签: mysqljsondatabasecassandramariadb

解决方案


如果专注于数据字段

如果您专注于包含的数据值,而不是 JSON 文档,您应该将 JSON 的片段解析为特定的表和列。如果您正在对这些部分进行大量查询,或者重新构建这些部分(例如用于用户界面),那么构建一个规范化的关系数据库表结构。

如果专注于整个 JSON 文档

如果您没有受过关系数据库设计方面的教育,或者您的应用程序专注于处理整个 JSON 文档,那么请使用支持 JSON 文档的数据库。

MySQL似乎有这样的支持,但我不知道细节。

我知道Postgres对 JSON 有很好的支持,在插入时解析文档,并以自己的本机二进制格式存储部分:jsonb. 这允许Postgres 提供的所有强大的索引。您还将发现用于操作 JSON 的强大功能。作为锦上添花,Postgres 还带来了其著名的可靠性。


推荐阅读