数据集查看器文档

服务器基础设施

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

服务器基础设施

数据集查看器有两个主要组件协同工作,以即时返回关于数据集的查询结果:

  • 用于探索和返回数据集信息的面向用户的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 上更新