I don't think we can avoid this if Orca is going to become truly useful.
The purpose of a data function is to accept a window and in return produce some data of a known schema.
This opens up lots of possibilities like:
- Plug and play toolboxes
- Clear separation of responsibilities (algorithms run the algos, windows trigger them and data functions provide the data)
- Retrospective analysis - you can look at a data point and rerun it to analyse why that data point was produced. This can be done ad hoc with data functions
The function is idempotent. If it gets the same window, it will produce the same data. It is down to the developer to ensure this, but we could version the interface and config (as proposed in #95).
The data function is run in preparation to an algorithm being run, and it puts the data in a temporary store. It then passes a key to orca core. The core then passes this key to the algorithm for the algorithm to get the data and run on. It is the algorithms responsibility to get the data from the tmp store.
This introduces a lot of new complexity. This is not an easy feature.
It would be compatible with ELT patterns. E.g. you create a big window - the data function gets all the data for that window. This gets written to an in memory store. Child windows that are then triggered by the parent algorithm are now just accessing their segment of data from the in memory store. The data would need to be carefully partitioned ahead of time, so each child algorithm get's just it's data. This is not easy, and would require some careful thought.
I don't think we can avoid this if Orca is going to become truly useful.
The purpose of a data function is to accept a window and in return produce some data of a known schema.
This opens up lots of possibilities like:
The function is idempotent. If it gets the same window, it will produce the same data. It is down to the developer to ensure this, but we could version the interface and config (as proposed in #95).
The data function is run in preparation to an algorithm being run, and it puts the data in a temporary store. It then passes a key to orca core. The core then passes this key to the algorithm for the algorithm to get the data and run on. It is the algorithms responsibility to get the data from the tmp store.
This introduces a lot of new complexity. This is not an easy feature.
It would be compatible with ELT patterns. E.g. you create a big window - the data function gets all the data for that window. This gets written to an in memory store. Child windows that are then triggered by the parent algorithm are now just accessing their segment of data from the in memory store. The data would need to be carefully partitioned ahead of time, so each child algorithm get's just it's data. This is not easy, and would require some careful thought.