<div dir="ltr">They're both pretty crappy in terms of performance - they read all data off of disk. If you're using LevelDB you can use the $keys index to pull back just the keys that in a single bucket.<div><br></div>

<div style>A better approach is to maintain a separate bucket - e.g. DocumentCount - that is used for counting documents. Unfortunately, you can't guarantee transactional consistency around counts in Riak today, so you'll want to move maintaining the counts out of Riak and into something else. If you search the list archives [1], you'll find that Redis has been mentioned as a good way to solve this problem - counters are stored in Redis and flushed to Riak on a regular schedule. Because of the lack of consistency (especially around MapReduce operations), Riak isn't the best choice if you require counters/aggregations to be stored in the database.</div>

<div style><br></div><div style>Once CRDTs [2] make it into mainstream Riak, you can make use of those data structures to implement distributed counters in Riak.</div><div style><br></div><div style>[1]: <a href="http://riak.markmail.org">http://riak.markmail.org</a></div>

<div style>[2]: <a href="http://vimeo.com/52414903">http://vimeo.com/52414903</a></div></div><div class="gmail_extra"><br clear="all"><div><div dir="ltr"><div><span style="color:rgb(80,0,80)">---</span><div style="color:rgb(80,0,80)">

Jeremiah Peschka - Founder, Brent Ozar Unlimited</div><div style="color:rgb(80,0,80)">MCITP: SQL Server 2008, MVP</div><div style="color:rgb(80,0,80)">Cloudera Certified Developer for Apache Hadoop</div></div></div></div>


<br><br><div class="gmail_quote">On Mon, Feb 11, 2013 at 10:30 AM,  <span dir="ltr"><<a href="mailto:rkevinburton@charter.net" target="_blank">rkevinburton@charter.net</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div align="LEFT"><font face="Verdana" color="#000000">Say I need to determine how many document there are in my database. For a CorrugatedIron application I can do ListKeys and get the warning that it is an expensive operation or I can do a MapReduce query. Which is the the least expensive? Is there an option that I am missing?</font></div>

<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><br>
<br></blockquote></div><br></div>