服务器基础设施
该 数据集查看器 具有两个主要组件,它们协同工作以立即返回有关数据集的查询
- 一个面向用户的 Web API,用于探索和返回有关数据集的信息
- 一个服务器提前运行查询并在数据库中缓存它们
虽然大部分文档都侧重于 Web API,但服务器至关重要,因为它执行所有耗时的预处理并存储结果,以便 Web API 可以检索并将其提供给用户。这节省了用户的时间,因为数据集查看器可以立即从缓存中返回预处理的结果,而不是每次收到请求时都生成响应。
有三个元素使服务器保持运行:作业队列、工作器和缓存。
作业队列
作业队列是存储在 Mongo 数据库中的一系列作业,应由工作器完成。这些作业实际上与用户使用的端点相同;只是服务器提前运行作业,用户在使用端点时会获得结果。
有三个作业
/splits
对应于/splits
端点。它刷新数据集,然后返回该数据集的拆分和子集。对于数据集中的每个拆分,它都会创建一个新作业。/first-rows
对应于/first-rows
端点。它获取数据集拆分的前 100 行和列。/parquet
对应于/parquet
端点。它下载整个数据集,将其转换为 parquet 并将 parquet 文件发布到 Hub。
您可能已经注意到 /rows
和 /search
端点在队列中没有作业。这些端点的响应是按需生成的。
工作器
工作器负责执行队列中的作业。它们完成实际的预处理请求,例如获取拆分和子集的列表。工作器可以通过可配置的环境变量进行控制,例如工作器返回的最小或最大行数,或者每个数据集用户或组织启动的最大作业数。
如果您有兴趣了解更多信息,请查看 工作器配置 以获取环境变量的完整列表。
缓存
工作器完成作业后,结果将存储(或缓存)在 Mongo 数据库中。当用户使用 /first-rows
等端点发出请求时,数据集查看器会从缓存中检索预处理的响应,并将其提供给用户。这消除了用户在服务器尚未完成作业并存储响应的情况下等待的时间。
因此,用户可以几乎立即获取他们请求的有关数据集(即使是大型数据集)的信息!
< > 更新 在 GitHub 上