Skip to content

Sequence diagrams#

This section provides sequence diagrams for basic LVM operations.

Diagram of matching descriptors#

Diagram of matching descriptors
Diagram of matching descriptors

Search request processing flow:

  • (1) The API service passes the search request to the Python Matcher Proxy service.

  • (2) The Python Matcher Proxy passes the request to the Luna Vinder Plugin for processing.

  • (3) The Luna Vinder Plugin checks the filters in the request for matching the index fields.

  • (4) The Luna Vinder Plugin sends the request to the Luna Vinder Matcher service.

If the filters match the index fields:

  • (5) The Luna Vinder Matcher uses the index tree for fast searching.

  • (6) The Luna Vinder Matcher finds lists of descriptors matching the specified filters.

  • (7) The Luna Vinder Matcher compares the descriptors.

  • (8) The Luna Vinder Matcher returns the search results.

If the filters don't match the index fields:

  • (9) Luna Vinder Matcher returns an error to the Luna Vinder Plugin (e.g., "Unsupported filter").

Request execution result:

  • (10) Luna Vinder Plugin returns the query processing results or an error to the Python Matcher Proxy service (depending on the previous step).

  • (11) Python Matcher Proxy returns the final results (or an error) to the API.

Luna Vinder Matcher data loading diagram#

Luna Vinder Matcher data loading diagram
Luna Vinder Matcher data loading diagram

Request processing flow:

  • (1) The user creates a projection in the Luna Vinder Projector service.

  • (2) Luna Vinder Projector returns the user a unique identifier for the created projection (projection_id).

  • (3) The user configures an index for the projection using the Luna Configurator service. This specifies the projection to use and the list of fields on which the index will be built.

  • (4) Luna Configurator sends the index configuration to the Luna Vinder Matcher service.

  • (5) Luna Vinder Matcher requests projection data from Luna Vinder Projector using projection_id.

  • (6) Luna Vinder Projector returns the projection configuration to Luna Vinder Matcher.

  • (7) Luna Vinder Matcher retrieves objects from the Events service database based on the filters specified in the projection.

  • (8) The Events DB returns filtered data (objects, targets, and descriptors) to Luna Vinder Matcher.

  • (9) Luna Vinder Matcher loads the received data into RAM.

  • (10) Luna Vinder Matcher builds an index tree based on the composite_fields in the specified order.

    During data synchronization, Luna Vinder Matcher is unavailable to process queries.

  • (11) Luna Vinder Matcher marks the index as ready to process requests.

    After synchronization is complete, Luna Vinder Matcher becomes available for requests and begins background synchronization of changes.

  • (12) Luna Vinder Matcher periodically checks for changes in the Events DB (background synchronization).

  • (13) The Events DB returns new or updated data to Luna Vinder Matcher.

  • (14) Luna Vinder Matcher updates the index tree based on the new data.