选择存储json数据的数据库

f1tvaqid  于 2021-06-14  发布在  Cassandra
关注(0)|答案(1)|浏览(1120)

关闭。这个问题需要更加突出重点。它目前不接受答案。
**想改进这个问题吗?**通过编辑这篇文章更新这个问题,使它只关注一个问题。

两年前关门了。
改进这个问题
我正在构建一个利用spotifyapi的原型应用程序。https://developer.spotify.com/discover/
我正在研究如何选择数据库体系结构。由于这是一个原型,我想保持简单,但仍然有一个未来的发展道路。
如果您使用过spotifyapi并存储了检索到的数据,我很想听听您的意见。
另外,我也读过很多关于数据库选择的文章,并在阅读的基础上编辑了这个问题。我再问一次,因为有些帖子已经有好几年的历史了,事情也变了。
我的问题是:我在这篇文章中提出的选项有哪些优点和缺点,还有哪些选项适合这种类型的应用?
概述应用程序将存储从spotify检索的数据。spotifyapi以json格式返回数据。
该应用程序将存储数百个用户的数据,而且很可能是数千个用户的数据。
播放列表和曲目是主要数据。播放列表最多可包含100首或更多曲目。每个用户都将存储多个播放列表/曲目。一年后,一个用户可能会有50到100个播放列表,每个列表都有许多曲目。
存储的播放列表将在应用程序/web中显示给用户,并用于创建其他播放列表。曲目将每天添加数据,例如日期、排名。
会有事务处理,比如播放列表被锁定,不允许进一步编辑、结束时段、结束排名等。。
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将spotifyjson数据存储在关系数据库(如mysql或mariadb)中。
mysql和mariadb都支持json数据类型,尽管它们的管理方式略有不同。根据mariadb-kb:在mysql中,json是一个对象,并根据json值进行比较。在mariadb中,json字符串是普通字符串,并作为字符串进行比较。
首先,在关系数据库中存储json有哪些优点/缺点?例如,是否可以充分查询json?一个示例查询可能是“按等级列出用户的播放列表”。第二,mysql和mariadb对json的管理之间的ads/disad是什么?
对于关系数据库,我还应该考虑哪些其他问题?
选项b spotify使用cassandra数据库提供spotify服务。虽然这是一个原型应用程序,但是否值得考虑cassandra或其他不只是sql类型的数据库?cassandra导入json数据的效果如何?有了解如何使用cassandra的开发人员吗?
选项c,d,e…
对于此类应用程序的数据结构,还可以考虑哪些其他数据库选项?
提前谢谢!

bkkx9g8r

bkkx9g8r1#

如果专注于数据字段

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

如果把json文档作为一个整体

如果您没有受过关系数据库设计方面的教育,或者您的应用程序侧重于整体处理json文档,那么请使用支持json文档的数据库。
mysql似乎有这样的支持,但我不知道细节。
我知道postgres对json有很好的支持,在插入时解析文档,并以自己的本地二进制格式存储部分: jsonb . 这就允许postgres提供所有强大的索引。您还将发现用于操作json的强大函数。作为锦上添花,postgres还带来了其著名的可靠性。

相关问题