Optimizing Document update/recreate process by reading values back from the Document

Description

When a document is recreated because the owning entity, or an entity it is part of of, is changed leading to all sorts of cascading database reads I often wonder: why? The reason is that the Index segments cannot be recreated for the indexed attributes. So we need to reinitialize the entity in order to recreate the Document.

But what if those attributes are actually @Stored in the original document and not dirty? Why not just read these values straight from the document with a single read in stead of executing a potentially great number of database reads?

This could be an optimization option available in @IndexedEmbedded(
optimize = Optimize.INDEXREAD
)

Optimize.INDEXREAD - assumes all relevant fields for this relation have store=Store.YES and can therefore be reread by reading the values from the document.

If any fields in the relation don't have Store.YES an error is thrown during initialization

If any fields in the relation is dirty, falls back to default (initialize entity).

Environment

None

Assignee

Unassigned

Reporter

Marc Schipperheyn

Labels

None

Suitable for new contributors

None

Pull Request

None

Feedback Requested

None

Components

Fix versions

Priority

Minor
Configure