MolSSI / QCFractal

A distributed compute and database platform for quantum chemistry.
https://molssi.github.io/QCFractal/
BSD 3-Clause "New" or "Revised" License
143 stars 47 forks source link

Improve fetching speed by allowing for including more of records #809

Closed bennybp closed 3 months ago

bennybp commented 3 months ago

Description

Right now, when records are fetched from the server, only the bare minimum is fetched, with the rest coming on-demand as you access fields of the record. This works in general, however if the user wants to download entire records (+ children), the result is a very large number of small requests.

This PR improves this. There are three main parts:

  1. Being able to say include=['**'], which will result in the entire record being downloaded, including children

  2. To handle fetching children, the children of multiple parent records are fetched together. For example, singlepoint records from the trajectories of multiple optimization records are batched together.

  3. A time-based chunking iterator to help prevent very large requests from choking the server. This also includes a thread pool for background fetching

This requires a few server side changes, so unfortunately this cannot be tested against the running production servers. I am planning on a release in early April, though.

Changelog description

Improve fetching speed by allowing for including more of records

Status