<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 14 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.hoenzb
        {mso-style-name:hoenzb;}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri","sans-serif";}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">I think most folks are on the same page wrt EC being consider a “level” or “storage policy” as we’ve been discussing in other forums.  I saw the previous note
 on account versus container and was actually thinking it made more sense to me at least to enable billing per container as opposed to trying to shoehorn attribute of a set of data (like a storage policy) to and account so I like where you’re going w/the suggestion. 
 I’m not even sure we need to answer the detailed question of what defines these levels, or storage policies, only that the design allows for their efficient use and flexible definitions. 
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Thx<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Paul<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">From:</span></b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif""> David Hadas [mailto:david.hadas@gmail.com]
<br>
<b>Sent:</b> Monday, July 22, 2013 9:35 AM<br>
<b>To:</b> OpenStack Development Mailing List<br>
<b>Subject:</b> Re: [openstack-dev] [Swift] erasure codes, digging deeper<o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal" style="margin-bottom:12.0pt">Hi, <br>
<br>
In Portland, we discussed a somewhat related issue of having multiple replication levels in one Swift cluster.
<br>
It may be that a provider would not wish to expose the use of EC or the level of replication used. For example a provider may offer a predefined set of services such as "Gold", "Silver" and "Bronze", "Aluminum" which a user can choose from. The provider may
 decide how each level is implemented (As a silly example: Gold is 4 way replication, Silver is a 3 way replication, Bronze is EC, Aluminum is single replica without EC).
<br>
<br>
Does it make sense to consider EC as an implementation of a certain service level (the same as for example the choice of the number of replicas)?
<br>
<br>
Now we are back to the question of what is the right unit in which we define this 'level of service' ("Gold", "Silver"...).<br>
Should the level of service be defined when the account is created or should we allow a user to state:<br>
"I would like to have a container with Gold to keep my work, Bronze to keep my family pictures and videos and Aluminum to keep a copy of all my music files".<br>
<br>
If we choose to enable container service levels, we need to enable billing per level of service such that a single account could be billed for the actual use it has done per each level of service. Maybe we even need to have all statistics gathered to be grouped
 by service level.<br>
I am not sure if we can escape that even with account service levels. <br>
<br>
DH<o:p></o:p></p>
<div>
<p class="MsoNormal">On Thu, Jul 18, 2013 at 9:37 PM, John Dickinson <<a href="mailto:me@not.mn" target="_blank">me@not.mn</a>> wrote:<o:p></o:p></p>
<p class="MsoNormal">Yes, and I'd imagine that the normal default would be for replicated data.<br>
<br>
Moving the granularity from a container to account-based, as Chmouel and Chuck said, is interesting too.<br>
<span style="color:#888888"><br>
<span class="hoenzb">--John</span></span><o:p></o:p></p>
<div>
<div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><br>
On Jul 18, 2013, at 11:32 AM, Christian Schwede <<a href="mailto:info@cschwede.de">info@cschwede.de</a>> wrote:<br>
<br>
> A solution to this might be to set the default policy as a configuration<br>
> setting in the proxy. If you want a replicated swift cluster just allow<br>
> this policy in the proxy and set it to default. The same for EC cluster,<br>
> just set the allowed policy to EC. If you want both (and let your users<br>
> decide which policy to use) simply configure a list of allowed policies<br>
> with the first one in the list as the default policy in case they don't<br>
> set a policy during container creation.<br>
><br>
> Am 18.07.13 20:15, schrieb Chuck Thier:<br>
>> I think you are missing the point.  What I'm talking about is who<br>
>> chooses what data is EC and what is not.  The point that I am trying to<br>
>> make is that the operators of swift clusters should decide what data is<br>
>> EC, not the clients/users.  How the data is stored should be totally<br>
>> transparent to the user.<br>
>><br>
>> Now if we want to down the road offer user defined classes of storage<br>
>> (like how S3 does reduced redundancy), I'm cool with that, just that it<br>
>> should be orthogonal to the implementation of EC.<br>
>><br>
>> --<br>
>> Chuck<br>
>><br>
>><br>
>> On Thu, Jul 18, 2013 at 12:57 PM, John Dickinson <<a href="mailto:me@not.mn">me@not.mn</a><br>
>> <mailto:<a href="mailto:me@not.mn">me@not.mn</a>>> wrote:<br>
>><br>
>>    Are you talking about the parameters for EC or the fact that<br>
>>    something is erasure coded vs replicated?<br>
>><br>
>>    For the first, that's exactly what we're thinking: a deployer sets<br>
>>    up one (or more) policies and calls them Alice, Bob, or whatever,<br>
>>    and then the API client can set that on a particular container.<br>
>><br>
>>    This allows users who know what they are doing (ie those who know<br>
>>    the tradeoffs and their data characteristics) to make good choices.<br>
>>    It also allows deployers who want to have an automatic policy to set<br>
>>    one up to migrate data.<br>
>><br>
>>    For example, a deployer may choose to run a migrator process that<br>
>>    moved certain data from replicated to EC containers over time (and<br>
>>    drops a manifest file in the replicated tier to point to the EC data<br>
>>    so that the URL still works).<br>
>><br>
>>    Like existing features in Swift (eg large objects), this gives users<br>
>>    the ability to flexibly store their data with a nice interface yet<br>
>>    still have the ability to get at some of the pokey bits underneath.<br>
>><br>
>>    --John<br>
>><br>
>><br>
>><br>
>>    On Jul 18, 2013, at 10:31 AM, Chuck Thier <<a href="mailto:cthier@gmail.com">cthier@gmail.com</a><br>
>>    <mailto:<a href="mailto:cthier@gmail.com">cthier@gmail.com</a>>> wrote:<br>
>><br>
>>> I'm with Chmouel though.  It seems to me that EC policy should be<br>
>>    chosen by the provider and not the client.  For public storage<br>
>>    clouds, I don't think you can make the assumption that all<br>
>>    users/clients will understand the storage/latency tradeoffs and<br>
>>    benefits.<br>
>>><br>
>>><br>
>>> On Thu, Jul 18, 2013 at 8:11 AM, John Dickinson <<a href="mailto:me@not.mn">me@not.mn</a><br>
>>    <mailto:<a href="mailto:me@not.mn">me@not.mn</a>>> wrote:<br>
>>> Check out the slides I linked. The plan is to enable an EC policy<br>
>>    that is then set on a container. A cluster may have a replication<br>
>>    policy and one or more EC policies. Then the user will be able to<br>
>>    choose the policy for a particular container.<br>
>>><br>
>>> --John<br>
>>><br>
>>><br>
>>><br>
>>><br>
>>> On Jul 18, 2013, at 2:50 AM, Chmouel Boudjnah<br>
>>    <<a href="mailto:chmouel@enovance.com">chmouel@enovance.com</a> <mailto:<a href="mailto:chmouel@enovance.com">chmouel@enovance.com</a>>> wrote:<br>
>>><br>
>>>> On Thu, Jul 18, 2013 at 12:42 AM, John Dickinson <<a href="mailto:me@not.mn">me@not.mn</a><br>
>>    <mailto:<a href="mailto:me@not.mn">me@not.mn</a>>> wrote:<br>
>>>>>   * Erasure codes (vs replicas) will be set on a per-container<br>
>>    basis<br>
>>>><br>
>>>> I was wondering if there was any reasons why it couldn't be as<br>
>>>> per-account basis as this would allow an operator to have different<br>
>>>> type of an account and different pricing (i.e: tiered storage).<br>
>>>><br>
>>>> Chmouel.<br>
>>><br>
>>><br>
>>> _______________________________________________<br>
>>> OpenStack-dev mailing list<br>
>>> <a href="mailto:OpenStack-dev@lists.openstack.org">OpenStack-dev@lists.openstack.org</a><br>
>>    <mailto:<a href="mailto:OpenStack-dev@lists.openstack.org">OpenStack-dev@lists.openstack.org</a>><br>
>>> <a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
>>><br>
>>><br>
>>> _______________________________________________<br>
>>> OpenStack-dev mailing list<br>
>>> <a href="mailto:OpenStack-dev@lists.openstack.org">OpenStack-dev@lists.openstack.org</a><br>
>>    <mailto:<a href="mailto:OpenStack-dev@lists.openstack.org">OpenStack-dev@lists.openstack.org</a>><br>
>>> <a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
>><br>
>><br>
>>    _______________________________________________<br>
>>    OpenStack-dev mailing list<br>
>>    <a href="mailto:OpenStack-dev@lists.openstack.org">OpenStack-dev@lists.openstack.org</a><br>
>>    <mailto:<a href="mailto:OpenStack-dev@lists.openstack.org">OpenStack-dev@lists.openstack.org</a>><br>
>>    <a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
>><br>
>><br>
>><br>
>><br>
>> _______________________________________________<br>
>> OpenStack-dev mailing list<br>
>> <a href="mailto:OpenStack-dev@lists.openstack.org">OpenStack-dev@lists.openstack.org</a><br>
>> <a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
>><br>
><br>
><br>
> _______________________________________________<br>
> OpenStack-dev mailing list<br>
> <a href="mailto:OpenStack-dev@lists.openstack.org">OpenStack-dev@lists.openstack.org</a><br>
> <a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><o:p></o:p></p>
</div>
</div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><br>
_______________________________________________<br>
OpenStack-dev mailing list<br>
<a href="mailto:OpenStack-dev@lists.openstack.org">OpenStack-dev@lists.openstack.org</a><br>
<a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><o:p></o:p></p>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
</body>
</html>