Firebase与MySQL数据库(分层/关系型)的比较

15

我接触Firebase不久,之前曾使用过MySQL,但是看到Firebase提供的实时数据库、登录(auth)、分析等功能后感觉很有用,因此想将其引入我的项目中。我了解到MySQL是关系型数据库,但是在搜索过程中发现Firebase是一个分层数据库,因为它像JSON树一样构建数据库。

按照正确的开发方式,为了了解我的项目如何与后端通信,我想画出ERDS和数据库表。但是,我不确定如何使用这些媒介来表示数据结构,因为在SQL中,您需要使用基本键和外键链接表格。Firebase是否也是这种情况?

举例来说,在MySQL中,表格看起来是这样的:[d]
ERD会像这样:

我的问题是:

  • 我的理解是正确的吗?Firebase是一个分层数据结构吗?
  • 如何在ERD和数据库表中表示Firebase的数据结构?
  • Firebase是否像MySQL一样使用基本键和外键?如果是的话,它们在设计MySQL数据库时表示的方式是否相同?
  • 在Firebase中,如何/最佳方式构建数据结构,并将其以ERD和表格的形式呈现出来?

我是Firebase的新手,所以任何帮助都会很好。谢谢。

1个回答

16

这是一个非常广泛的话题,因为您在一篇文章中提出了四个问题。我建议观看我们的Firebase for SQL developers 系列视频,并阅读NoSQL数据建模技术

以下是几个快速答案:

  • Firebase确实是一个分层数据结构:它实际上只是云端的JSON树。
  • 没有一种定义好的方式来在ERD中展示分层数据。更常见的做法是展示一个JSON树。
  • Firebase有键(keys)的概念,它们是存储数据节点的名称。你可以将其与关系数据库的主键进行比较。但是,它没有管理外键的概念。
  • 对于您的第二个问题:将Firebase数据库建模为JSON是一种常见的做法,这相当方便,因为这也是数据库存储的格式。

嗨,感谢提供的链接和视频,真的很有帮助。是否有一种方法可以自动递增唯一标识符?例如,在mysql中,您可以将数字作为唯一标识符,并且每次添加新记录时它会递增行号。 - SumOne
你可以使用Firebase推送ID来实现这一点。它们会自动递增,但是以一种在规模和用户离线情况下仍然有效的方式进行。请参阅我提供的视频系列和https://firebase.googleblog.com/2015/02/the-2120-ways-to-ensure-unique_68.html。 - Frank van Puffelen
谢谢,我会看一下并且如果遇到任何问题会让你知道。 - SumOne

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接