Dazo-org/zerovm — Issue #12: TrueObjects
Author: camuel
Created: 2011-11-29 23:36:58+00:00
State: open
Labels: DESIGN, MAJOR

Currently every NEXE execution requires shipping NEXE from either end-user or other node. That lowers efficiency and increases the latency. On positive side it allows to execute any code on any data object, and even on legacy data objects which was not supposed to be processed by NEXE when created.

The feature proposed here is to have structured objects that combine inside code and data thus when code is executed on them there is no overhead of bringing NEXE across network.

In order to support this feature we should decide on the format of this structured object. I see following solutions:

1. Just simple tar file. Then file-name convention can be used to decide what are NEXE and what are code. Could be as simple as every file in root directory with extension .NEXE is NEXE and all the rest is data accessible to this NEXE to process.

2. Simple header with positions of single NEXE and single DATA. header could be just magic number and the position of start of second object. Requires utility for creating on client-side. Though we can mandate server-side creation only.

3. No header, attribute is used to denote the position of the start of second object. Creating such object is just simple concatenation with the size of first object written as attribute.

4. SQLite file with more elaborate structure, listing available methods of the object as blobs and different data pieces as blobs and a lot of associated queriable metadata. This is less generic solution but in fact could be more practically useful. Also all solutions above are generic they most probably will need another layer of functionality before being usable and useful.