<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:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@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.EmailStyle17
        {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'>So it sounds like if there is the possibility of deleting buckets I need to learn LevelDB or Erlang. It sounds like you are leaning towards the former.<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"'> Jeremiah Peschka [mailto:jeremiah.peschka@gmail.com] <br><b>Sent:</b> Wednesday, February 06, 2013 8:56 AM<br><b>To:</b> Kevin Burton; riak-users@lists.basho.com<br><b>Subject:</b> Re: CorrugatedIron call to delete a bucket.<o:p></o:p></span></p><p class=MsoNormal><o:p> </o:p></p><div><p class=MsoNormal>Don't be too put out - deleting a bucket is the sad panda story of Riak. We provide the DeleteBucket() method largely for our own selfish purposes of cleaning up after unit tests.<o:p></o:p></p><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>2i is a secondary index. If you've set up Riak to use the LevelDB back end, you can create secondary indices. There is a $keys index that just lists the names of the keys in a bucket. By using secondary indices, you can stream the $keys index back to CorrugatedIron and then issue async deletes on chunks of keys.<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>The Erlang way is a bit more complex - it requires knowing Erlang. In theory, you can write several Erlang functions that will perform a MapReduce across your bucket (or even the secondary index) and delete keys. The upside of using Erlang + MapReduce to do it is that you won't have to round trip between Riak and your client. The downside is that you have to learn Erlang. ;)<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div></div></div><div><p class=MsoNormal><br clear=all><o:p></o:p></p><div><div><div><p class=MsoNormal><span style='color:#500050'>---</span><o:p></o:p></p><div><p class=MsoNormal><span style='color:#500050'>Jeremiah Peschka - Founder, Brent Ozar Unlimited<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='color:#500050'>MCITP: SQL Server 2008, MVP<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='color:#500050'>Cloudera Certified Developer for Apache Hadoop<o:p></o:p></span></p></div></div></div></div><p class=MsoNormal style='margin-bottom:12.0pt'><o:p> </o:p></p><div><p class=MsoNormal>On Wed, Feb 6, 2013 at 4:56 AM, Kevin Burton <<a href="mailto:rkevinburton@charter.net" target="_blank">rkevinburton@charter.net</a>> wrote:<o:p></o:p></p><div><div><p class=MsoNormal>Sorry. Being a beginner I am not aware of "alternative" methods. I have not read enough to use Erlang. I don't know what "querying a 2i" is. I also wasn't aware that I needed to manage my keys. Perhaps this question could turn into a kind of poll for best practices? All suggestions are greatly appreciated.<o:p></o:p></p></div><div><div><div><p class=MsoNormal style='margin-bottom:12.0pt'><br>On Feb 6, 2013, at 6:44 AM, OJ Reeves <<a href="mailto:oj@buffered.io" target="_blank">oj@buffered.io</a>> wrote:<o:p></o:p></p></div><blockquote style='margin-top:5.0pt;margin-bottom:5.0pt'><div><p class=MsoNormal>Kevin,<o:p></o:p></p><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>No I'm not saying that bucket's can't be deleted. I'm saying that you should choose an alternative method. For example, manage your keys in another way perhaps by querying a 2i and using the result to delete the values. This could be done via an Erlang map reduce job. You could store the keys elsewhere for later retrieval then delete each object via the key.<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>The problem here isn't deleting buckets, the problem is listing keys. I do think that other Riak users, Basho people in particular, would be better positioned to offer alternative approaches than me.<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>OJ<o:p></o:p></p></div><div><p class=MsoNormal style='margin-bottom:12.0pt'><o:p> </o:p></p><div><p class=MsoNormal>On Wed, Feb 6, 2013 at 10:37 PM, Kevin Burton <<a href="mailto:rkevinburton@charter.net" target="_blank">rkevinburton@charter.net</a>> wrote:<o:p></o:p></p><div><div><p class=MsoNormal>I see the warning and I would love to heed it. You are saying buckets can never be deleted? Rename has the same problem?<o:p></o:p></p></div><div><div><div><p class=MsoNormal style='margin-bottom:12.0pt'><br>On Feb 6, 2013, at 6:15 AM, OJ Reeves <<a href="mailto:oj@buffered.io" target="_blank">oj@buffered.io</a>> wrote:<o:p></o:p></p></div><blockquote style='margin-top:5.0pt;margin-bottom:5.0pt'><div><p class=MsoNormal>Deleting a bucket takes forever in any Riak client if the bucket has a lot of values in it. This is because a bucket isn't an object that is any way analogous to a "table" like you'd see in an RDBMS and to delete a bucket the keys in that bucket need to be listed first (please correct me if I'm wrong people!). This operation is known to be slow and using it is not recommended.<o:p></o:p></p><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>CorrugatedIron outputs warning messages to the debug console whenever ListKeys or DeleteBucket are called. I'd recommend heeding those warnings and look to take a different approach.<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>OJ<o:p></o:p></p></div><div><p class=MsoNormal style='margin-bottom:12.0pt'><o:p> </o:p></p><div><p class=MsoNormal>On Wed, Feb 6, 2013 at 8:11 AM, Jeremiah Peschka <<a href="mailto:jeremiah.peschka@gmail.com" target="_blank">jeremiah.peschka@gmail.com</a>> wrote:<o:p></o:p></p><div><p class=MsoNormal>No.<o:p></o:p></p><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>Deleting a bucket requires deleting all keys in the bucket. It will be slow.<o:p></o:p></p></div></div><div><p class=MsoNormal><br clear=all><o:p></o:p></p><div><div><div><p class=MsoNormal><span style='color:#500050'>---</span><o:p></o:p></p><div><p class=MsoNormal><span style='color:#500050'>Jeremiah Peschka - Founder, Brent Ozar Unlimited<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='color:#500050'>MCITP: SQL Server 2008, MVP<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='color:#500050'>Cloudera Certified Developer for Apache Hadoop<o:p></o:p></span></p></div></div></div></div><p class=MsoNormal style='margin-bottom:12.0pt'><o:p> </o:p></p><div><div><p class=MsoNormal>On Tue, Feb 5, 2013 at 1:58 PM, Kevin Burton <<a href="mailto:rkevinburton@charter.net" target="_blank">rkevinburton@charter.net</a>> wrote:<o:p></o:p></p></div><blockquote style='border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in'><div><div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'> </span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>I am trying to remove a bucket. So I call client.DeleteBucket(<my bucket>) but this takes *<b>forever</b>*. Is there a faster way to simply remove a bucket?</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'> </span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'> </span><o:p></o:p></p></div></div><p class=MsoNormal><o:p> </o:p></p></div><p class=MsoNormal style='margin-bottom:12.0pt'>_______________________________________________<br>riak-users mailing list<br><a href="mailto:riak-users@lists.basho.com" target="_blank">riak-users@lists.basho.com</a><br><a href="http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com" target="_blank">http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com</a><o:p></o:p></p></blockquote></div><p class=MsoNormal><o:p> </o:p></p></div><p class=MsoNormal style='margin-bottom:12.0pt'><br>_______________________________________________<br>riak-users mailing list<br><a href="mailto:riak-users@lists.basho.com" target="_blank">riak-users@lists.basho.com</a><br><a href="http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com" target="_blank">http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com</a><o:p></o:p></p></div><p class=MsoNormal><br><br clear=all><o:p></o:p></p><div><p class=MsoNormal><o:p> </o:p></p></div><p class=MsoNormal>-- <br><br>OJ Reeves<o:p></o:p></p><div><p class=MsoNormal><a href="tel:%2B61%20431%20952%20586" target="_blank">+61 431 952 586</a><br><a href="http://buffered.io/" target="_blank">http://buffered.io/</a><o:p></o:p></p></div></div></div></blockquote></div></div></div></div><p class=MsoNormal><br><br clear=all><o:p></o:p></p><div><p class=MsoNormal><o:p> </o:p></p></div><p class=MsoNormal>-- <br><br>OJ Reeves<o:p></o:p></p><div><p class=MsoNormal><a href="tel:%2B61%20431%20952%20586" target="_blank">+61 431 952 586</a><br><a href="http://buffered.io/" target="_blank">http://buffered.io/</a><o:p></o:p></p></div></div></div></blockquote></div></div></div><p class=MsoNormal style='margin-bottom:12.0pt'><br>_______________________________________________<br>riak-users mailing list<br><a href="mailto:riak-users@lists.basho.com">riak-users@lists.basho.com</a><br><a href="http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com" target="_blank">http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com</a><o:p></o:p></p></div><p class=MsoNormal><o:p> </o:p></p></div></div></body></html>