1) Description of the idea
We have the %GOF/%GIF (IRIS block format) utilities, which are fast but quite limited in functionality:
They don't support exporting subglobals.
It's not possible to export an entire global mapped across multiple databases without manually switching through all its [implied] namespaces.
In contrast, the %GO[GEN]/%GI tools are more universal, but their extremely slow performance makes them impractical even for moderately sized globals (in the GB range).
A new utility should:
Support export and import of one or more subglobals.
Automatically traverse all databases containing parts of the global being exported, unless explicitly suppressed.
Offer performance comparable to %GOF/%GIF.
May be either compatible or incompatible with the %GOF format.
If incompatible, its format must be open and publicly documented.
Provide an API for invocation from ObjectScript classes and routines.
2) Who is the target audience?
Back end developers, especially those who deal with globals of complex structure.
3) What problem does it solve?
Please see #1.
4) How does this impact the efficiency, stability, reliability, etc., of the product?
Not applicable as it does not affect IRIS core functionality.
5) Use case or scenario that illustrates how this idea could be used in practice
Real life scenario is: our HIS update packs (from hundreds MB to several GB in size) are stored as IRISTEMP global's subtrees. We virtually had no option but developing our own utility for export and import update packs, otherwise we should do time consuming Merge of any given subtree to separate global before export it to GOF file. Universal Global Exchanger would eliminate the need of this preliminare Merge.
Thank you for submitting the idea. The status has been changed to "Future consideration".
Stay tuned!
What about XML export? I think it does what is requested?
Is ##class(%Library.Global).Export() not doing what you want?
ref: https://docs.intersystems.com/irislatest/csp/documatic/%25CSP.Documatic.cls?LIBRARY=%25SYS&CLASSNAME=%25Library.Global#Export