Lazy loading modes - mondo-project/mondo-hawk GitHub Wiki

The Hawk [Thrift API]] can fetch entire models and individual model elements over the network. When treating a remote Hawk index as a model through the [EMF resource abstraction, there are multiple ways in which we might want to perform the initial load and any further retrievals. These are supported through the use of different loading modes.

Currently, Hawk supports these loading modes:

Name Initial load Lazy loads Recommended usage
Greedy Entire model. None. Only for small/medium models (below 200k elements). Mostly for training and testing.
Lazy attributes Entire model without attributes. On-demand attributes: when resolving e.attr, all attributes of e are prefetched. For models that will be navigated exhaustively but only have a few attributes accessed.
Lazy children Root elements. On-demand references: when resolving e.ref, all references of e are prefetched. Recommended for most cases.
Lazy references Root elements. On-demand references. For large models in which few distinct references will be navigated, and most nodes will have their attributes accessed.
Lazy attributes and children Root elements without attributes. On-demand attributes and references, with prefetching of both. For large models in which only a few elements have attributes of interest.
Lazy attributes and references Root elements without attributes. On-demand attributes and references, with prefetching of attributes. For large models in which only a few elements have attributes of interest, and very few references will be navigated.