【问题标题】:Access firestore directly from mobile app or via backend server?直接从移动应用程序或通过后端服务器访问 Firestore?
【发布时间】:2018-11-26 06:34:43
【问题描述】:

系统设计题:

我将 firebase 用于我的移动应用,firestore 作为数据库,firebase 功能作为后端。

我:

  1. 直接从移动应用访问 firestore
  2. 仅允许通过中间件/后端服务器进行间接访问(例如 firebase 函数)

我正在从系统设计的角度寻求指导,这两种选择中的哪一种更好。 传统上,我认为直接从客户端访问数据库是不受欢迎的,但在官方的 Firestore 文档中,谷歌似乎实际上鼓励直接访问而无需任何后端服务器。

【问题讨论】:

    标签: firebase model-view-controller architecture google-cloud-firestore system-design


    【解决方案1】:

    我正在从系统设计的角度寻找关于这两种选择中哪一种更好的指导。

    恕我直言,这个问题不应该问,因为每个产品,Cloud FirestoreCloud Functions for Firebase 都是两个完全不同的产品,具有不同的机制但目的相同。

    正如 Jack Woodward 在他的回答中提到的,第一个解决方案可以帮助您在客户端应用程序之间保持数据同步。与Firebase Realtime database 的情况一样,主要功能是实时功能。在这两个数据库中,您的数据都以 JSON 格式存储并实时同步到每个连接的客户端。

    关于第二个选项,见官方文档:

    Cloud Functions for Firebase 可让您自动运行后端代码以响应由 Firebase 功能和 HTTPS 请求触发的事件。您的代码存储在 Google 的云中并在托管环境中运行。无需管理和扩展您自己的服务器。

    如果您只是询问您可以使用 Cloud Functions 做什么,请参阅the use cases of Cloud Functions

    • 当发生有趣的事情时通知用户。
    • 执行实时数据库清理和维护。
    • 在云端而不是在您的应用中执行密集型任务。
    • 与第三方服务和 API 集成。

    【讨论】:

      【解决方案2】:

      这两种 Firebase 数据库产品都设计为在客户端上使用。它的杀手级功能之一是自动实时同步更改。所以绝对是从客户那里消费的。这并不是说您也不能从服务器消费。但这一切都是为了有效地设置您的规则,以便您可以从客户端查询。如果你想保护你的数据库,你需要使用Firebase Auth。一些相关文档的链接。

      Firestore Security Rules Example of some Security Rules for querying

      Firebase Auth

      如果您已经有一种身份验证方法并且无法迁移到 Firebase 身份验证,您可以使用Custom Auth,当您对某人进行身份验证时,您会使用 Firebase 令牌向他们颁发一个 Firebase 令牌,您可以在应用中使用该令牌登录他们。

      【讨论】:

        猜你喜欢
        • 2012-01-03
        • 1970-01-01
        • 1970-01-01
        • 2016-12-25
        • 2020-01-19
        • 2019-11-17
        • 2010-11-22
        • 2013-09-29
        • 2011-02-25
        相关资源
        最近更新 更多