Using Caché Multi-Dimensional Storage - InterSystems ...
Using Caché Multi-Dimensional Storage - InterSystems ...
Using Caché Multi-Dimensional Storage - InterSystems ...
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
If you are using <strong>Caché</strong> ObjectScript, you can construct global references at runtime using<br />
indirection.<br />
3.1.3 Storing Structured Data in Global Nodes<br />
Each global node can contain a single string of up to 32K characters.<br />
Data is typically stored within nodes in one of the following ways:<br />
• As a single string of up to 32K characters (specifically, 32K minus 1).<br />
• As a character-delimited string containing multiple pieces of data.<br />
To store a set of fields within a node using a character delimiter, simply concatenate the<br />
values together using the concatenate operator (_). The following <strong>Caché</strong> ObjectScript<br />
examples use the # character as a delimiter:<br />
SET ^Data(id)=field(1)_"#"_field(2)_"#"_field(3)<br />
When the data is retrieved, you can pull the fields apart using the $PIECE function:<br />
SET data = $GET(^Data(id))<br />
FOR i=1:1:3 {<br />
SET field(i) = $PIECE(data,"#",i)<br />
}<br />
QUIT<br />
• As a $LIST-encoded string containing multiple pieces of data.<br />
The $LIST functions use a special length-encoding scheme that does not require you to<br />
reserve a delimiter character. (This is the default structure used by <strong>Caché</strong> Objects and<br />
SQL.)<br />
To store a set of fields within a node use the $LISTBUILD function to construct a list:<br />
SET ^Data(id)=$LISTBUILD(field(1),field(2),field(3))<br />
When the data is retrieved, you can pull the fields apart using the $LIST or $LISTGET<br />
functions:<br />
SET data = $GET(^Data(id))<br />
FOR i = 1:1:3 {<br />
SET field(i)=$LIST(data,i)<br />
}<br />
QUIT<br />
• As one part of a larger set of data (such as a stream or “BLOB” ).<br />
Storing Data in Globals<br />
As individual nodes are limited to just under 32K of data, larger structures, such as<br />
streams, are implemented by storing data in a set of successive nodes:<br />
<strong>Using</strong> <strong>Caché</strong> <strong>Multi</strong>-<strong>Dimensional</strong> <strong>Storage</strong> 17