120 lines
4.6 KiB
HTML
120 lines
4.6 KiB
HTML
<html>
|
|
|
|
<head>
|
|
<title>Per</title>
|
|
<meta name="GENERATOR" content="Microsoft FrontPage 3.0">
|
|
</head>
|
|
|
|
<body bgcolor="#C0C0C0" text="#000080">
|
|
|
|
<p><u><big><big>Nova M3 : Per-Property <em>GetObject</em> Optimizations</big></big></u></p>
|
|
|
|
<p> </p>
|
|
|
|
<p>Rev 1.2, 23--Jun-99, raymcc</p>
|
|
|
|
<hr>
|
|
|
|
<p><u><strong>1.0 Introduction</strong></u></p>
|
|
|
|
<p>This memo covers an optimization technique intended for internal use between CIMOM and
|
|
providers during execution of complex queries. During construction of
|
|
association objects, there are many cases where the object is only used for identification
|
|
purposes (its key properties) and all other properties are ignored and the object is
|
|
quickly discarded. </p>
|
|
|
|
<p>Considerable latency is introduced by some providers when build instances, since all
|
|
properties must be populated. Some type of mechanism to signal the provider that the
|
|
caller only needs a subset is required.</p>
|
|
|
|
<p>RAID 47566 is a critical bug for WMI Nova M3. The necessary optimization
|
|
fixes cannot be achieved without functionality described here.</p>
|
|
|
|
<p><strong>Associated RAID references: 52062, 52063, 47566 (P1).</strong></p>
|
|
|
|
<hr>
|
|
|
|
<p><u><strong>2.0 Proposed Model</strong></u></p>
|
|
|
|
<p>The model will make use of the <em>IWbemContext</em> object when used with read APIs,
|
|
such as <em>IWbemServices::GetObject. </em>The context object will serve as a hint to the
|
|
provider which properties the caller is interested in. </p>
|
|
|
|
<p>The <em>IWbemServices </em>APIs which will support this functionality are limited to
|
|
|
|
<ul>
|
|
<li>GetObject</li>
|
|
<li>GetObjectAsync</li>
|
|
<li>CreateInstanceEnum</li>
|
|
<li>CreateInstanceEnumAsync</li>
|
|
</ul>
|
|
|
|
<p>For other APIs, the functionality is already present (as in <em>ExecQuery) </em>or not
|
|
relevant.</p>
|
|
|
|
<p>The provider is not required to interpret the context object or to honor the request,
|
|
but may continue to provide the object as it normally does, as this would result in a
|
|
superset of the user's request. However, if the provider is capable of
|
|
interpreting the object, it should return instances with only the properties set which are
|
|
requested. </p>
|
|
|
|
<p>The intent is that the provider can short-circuit its internal implementation and
|
|
provide the instance much faster. If no speed optimizations are possible, the
|
|
provider may as well return the entire instance. </p>
|
|
|
|
<p>CIMOM itself is not required to honor the request in the <em>IWbemContext </em>object
|
|
with regard to repository requests, as it would actually result in a slowdown to remove
|
|
properties from an instance. </p>
|
|
|
|
<p><strong>Note: </strong>Extending<strong> </strong>this mechanism to cover other <em>IWbemServices
|
|
</em>methods such as <em>ExecQuery </em>will be covered in the WMI Quasar Release. </p>
|
|
|
|
<hr>
|
|
|
|
<p><u><strong>2.0 Context Object Format</strong></u></p>
|
|
|
|
<p>The context object must have the following contents:</p>
|
|
|
|
<table border="1" width="100%" height="143">
|
|
<tr>
|
|
<td width="27%" height="19"><strong>Context Value</strong></td>
|
|
<td width="73%" height="19"><strong>Meaning</strong></td>
|
|
</tr>
|
|
<tr>
|
|
<td width="27%" height="37">__GET_EXTENSIONS</td>
|
|
<td width="73%" height="37">A boolean value (VT_BOOL) used to signal that per-property
|
|
gets are being used. This allows a quick single check without having to enumerate
|
|
the entire context object. If any of the other values are used, this one <em>must </em>be.</td>
|
|
</tr>
|
|
<tr>
|
|
<td width="27%" height="19">__GET_EXT_PROPERTIES</td>
|
|
<td width="73%" height="19">An array of strings listing the properties to be retrieved.
|
|
Cannot be simultaneously specified with __GET_EXT_KEYS_ONLY.</td>
|
|
</tr>
|
|
<tr>
|
|
<td width="27%" height="19">__GET_EXT_KEYS_ONLY</td>
|
|
<td width="73%" height="19">A boolean indicating that only key(s) should be provided.
|
|
Cannot be simultaneously specified with __GET_EXT_PROPERTIES.</td>
|
|
</tr>
|
|
<tr>
|
|
<td width="27%" height="19"></td>
|
|
<td width="73%" height="19"></td>
|
|
</tr>
|
|
</table>
|
|
|
|
<p><strong> </strong></p>
|
|
|
|
<p><strong>Notes: </strong><br>
|
|
(1) Further extensions, such as "No Expensive Properties" will be defined for
|
|
WMI Quasar.<br>
|
|
(2) There is no property name "*" as in a query.<br>
|
|
(3) Since it is not possible to enforce that the user uses only one of
|
|
__GET_EXT_PROPERTIES and __GET_EXT_KEYS_ONLY, __GET_EXT_KEYS_ONLY will take precedence if
|
|
both are in fact (incorrectly) used.</p>
|
|
|
|
<p> </p>
|
|
|
|
<p> </p>
|
|
</body>
|
|
</html>
|