在构建前端之前是否应该为数据摄取/处理流程构建API?

31次阅读
没有评论

问题描述

之前已经构建了一个相当全面的数据流程项目,其中包括以下功能:
– 从不同的数据源摄取数据
– 处理数据,例如计算特定主题的个体级分数
– 通过直接数据库插入或用于RESTful API的POST请求将数据发送到其他服务

该项目使用Python编写,在Ubuntu服务器上运行,并使用MongoDB数据库。目前,数据库中的数据无法通过用户访问,所有数据都是通过编程方式获取或发送的。

现在,用户希望构建一个前端,以利用项目中的数据。该前端将允许用户在一系列变量上定义一些条件,并返回与这些条件匹配的用户ID数组。 用户打算使用Python Flask构建此前端,并将其托管在同一台托管代码和数据库的服务器上。一个重要的注意事项是,这个前端不会在Web上公开访问,甚至不会在为其开发的组织内公开,而只能由少数几个用户访问。

用户的问题和关注点如下:
1. 在构建此前端之前,是否应该编写一个涵盖所有潜在端点的API,然后在此基础上构建前端?
2. 还是应该遵循最初(天真的)直觉,只需编写一些执行前端所需的数据检索操作的脚本,通过参数将用户设置的条件传递到脚本中,并以此检索数据?
3. 用户想象在数据库与API或从前端启动的脚本之间应该有某种缓存/保护层。在MongoDB中是否有任何标准方法?

正如您可能已经注意到的,我对这些项目的高层思考相当陌生 – 我的背景是数据科学 – 并且我对搞砸(尤其是在可能暴露或损害数据方面)感到有些担忧。除了可能提供关于我的困境的一些专业知识外,我还非常希望能够提供一些资源(博客文章/文章、书籍、YouTube视频等),其中包含关于如何处理我描述的这种项目的示例/指导。

解决方案

请注意以下操作可能涉及版本差异和安全问题,做好备份和安全性评估。

构建API或脚本

在构建前端之前,您有两种主要方法来处理数据检索和处理问题:构建API或编写脚本。下面分别讨论这两种方法。

构建API

构建一个API可以为您的前端提供统一的数据访问接口,使前端和后端之间的交互更加灵活和可维护。您可以使用Python的Flask框架来构建API端点,并定义不同的路由来处理不同类型的数据检索请求。以下是构建API的步骤:

  1. 使用Flask创建一个新的应用程序。
  2. 定义不同的路由和端点,以便前端可以根据需要请求数据。
  3. 在每个端点中,编写逻辑来处理数据检索、处理和返回响应。
  4. 将前端配置为通过HTTP请求调用API端点,以检索和显示数据。

使用脚本

另一种方法是编写脚本,以脚本的方式执行数据检索和处理操作。您可以为不同的检索场景编写不同的脚本,然后通过前端将用户设置的条件传递给这些脚本。以下是使用脚本的步骤:

  1. 根据前端的需求,编写不同的脚本文件,每个脚本处理一个特定的数据检索操作。
  2. 在前端中,根据用户的条件设置,调用适当的脚本,并通过命令行参数传递条件。
  3. 脚本执行数据检索和处理,并将结果返回给前端。

缓存和保护层

无论您选择构建API还是编写脚本,都应该考虑在数据库与API或脚本之间添加缓存和保护层,以提高性能和安全性。对于MongoDB,以下是一些常见的方法:

  • 查询缓存: 使用缓存来存储常见查询的结果,以避免频繁地访问数据库。您可以使用内存缓存库(如Redis)来实现这一点。

  • 数据验证和权限控制: 在API或脚本中添加验证逻辑,以确保只有授权用户可以访问数据。您可以使用Flask的身份验证和授权扩展来实现这一点。

  • 安全审计: 记录所有与数据相关的操作,以便在发生问题时进行审计和调查。

资源和指导

以下是一些有关构建数据流程项目的API和前端的资源,它们可以帮助您更好地理解和实施您的项目:

正文完