<div dir="ltr">Configuration Groups is currently developed to associate the datastore version with a configuration that is created. If a datastore version is not presented it will use the default similar to the way instances are created now. This looks like a way of associating the configuration with a datastore because an instance has this same association. <div>
<br></div><div>Depending on how you setup your datastore types and versions this might not be ideal.</div><div>Example:</div><div><font face="courier new, monospace">Datastore Type | Version</font></div><div><font face="courier new, monospace">-------------------------</font></div>
<div><font face="courier new, monospace">Mysql | 5.1</font></div><div><span style="font-family:'courier new',monospace">Mysql | 5.5</span><font face="courier new, monospace"><br></font></div><div>
<span style="font-family:'courier new',monospace">Percona | 5.5</span></div><div><span style="font-family:'courier new',monospace">-------------------------</span></div><div><span style="font-family:'courier new',monospace"><br>
</span></div><div><div><span style="font-family:'courier new',monospace">Configuration | datastore_version</span></div><div><font face="courier new, monospace">-----------------------------------</font></div>
<div><font face="courier new, monospace">mysql-5.5-config | mysql 5.5</font></div></div><div><span style="font-family:'courier new',monospace">percona-5.5-config | percona 5.5</span><font face="courier new, monospace"><br>
</font></div><div><font face="courier new, monospace">-----------------------------------</font></div><div><font face="courier new, monospace"><br></font></div><div><span style="font-family:'courier new',monospace">or </span></div>
<div><span style="font-family:'courier new',monospace"><br></span></div><div><div><font face="courier new, monospace">Datastore Type | Version</font></div><div><font face="courier new, monospace">-------------------------</font></div>
<div><font face="courier new, monospace">Mysql 5.1 | 5.1.12</font></div><div><span style="font-family:'courier new',monospace">Mysql 5.1 | 5.1.13</span><font face="courier new, monospace"><br></font></div>
<div><span style="font-family:'courier new',monospace">Mysql | 5.5.32</span><font face="courier new, monospace"><br></font></div><div><span style="font-family:'courier new',monospace">Percona | 5.5.44</span></div>
<div><span style="font-family:'courier new',monospace">-------------------------</span></div></div><div><div><div><span style="font-family:'courier new',monospace"><br></span></div><div><span style="font-family:'courier new',monospace">Configuration | datastore_version</span></div>
<div><font face="courier new, monospace">-----------------------------------</font></div><div><font face="courier new, monospace">mysql-5.1-config | mysql 5.5</font></div></div><div><span style="font-family:'courier new',monospace">percona-5.5-config | percona 5.5</span><font face="courier new, monospace"><br>
</font></div><div><font face="courier new, monospace">-----------------------------------</font></div></div><div><font face="courier new, monospace"><br></font></div><div><br></div><div><font face="arial, helvetica, sans-serif">Notice that if you associate the configuration with a datastore version then in the latter example you will not be able to use the same configurations that you created with different minor versions of the datastore. </font></div>
<div><font face="arial, helvetica, sans-serif"><br></font></div><div><font face="arial, helvetica, sans-serif">Something that we should consider is allowing a configuration to be associated with a just a datastore type (eg. Mysql 5.1) so that any versions of 5.1 should allow the same configuration to be applied.</font></div>
<div><font face="arial, helvetica, sans-serif"><br></font></div><div><font face="arial, helvetica, sans-serif">I do not view this as a change that needs to happen before the current code is merged but more as an additive feature of configurations.</font></div>
<div><font face="arial, helvetica, sans-serif"><br></font></div><div><font face="arial, helvetica, sans-serif"><br></font></div><div><font face="arial, helvetica, sans-serif">*snippet from Morris and I talking about this*</font></div>
<div>
<p class="">Given the nature of how the datastore / types code has been implemented in that it is highly configurable, I believe that we we need to adjust the way in which we are associating configuration groups with datastore types and versions. The main use case that I am considering here is that as a user of the API, I want to be able to associate configurations with a specific datastore type so that I can easily return a list of the configurations that are valid for that database type (Example: Get me a list of configurations for MySQL 5.6). We know that configurations will vary across types (MySQL vs. Redis) as well as across major versions (MySQL 5.1 vs MySQL 5.6). Presently, the code only keys off the datastore version, and consequently, if I were to set up my datastore type as MySQL X.X and datastore versions as X.X.X, then you would be potentially associating a configuration with a specific minor version such as MySQL 5.1.63. Given then, I am thinking that it makes more sense to allow a configuration to be associated with both a datastore type AND and datastore version with precedence given to the datastore type (where both attributes are either optional – or at least one is required). This would give the most flexibility to associate configurations with either the type, version, or both and would allow it to work across providers given that they are likely to configure types/versions differently.</p>
<p class=""><br></p><p class="">I'd like to hear how the community views this and bring up the conversation now rather than later.</p><p class=""><br></p><p class="">Thanks,</p><p class="">-Craig Vyvial</p></div></div>